60806040526001600060156101000a81548160ff0219169083151502179055506001600060166101000a81548160ff021916908315150217905550612710600260146101000a81548163ffffffff021916908363ffffffff160217905550612710600260186101000a81548163ffffffff021916908363ffffffff16021790555060006002601c6101000a81548163ffffffff021916908363ffffffff1602179055506107d0600360006101000a81548163ffffffff021916908363ffffffff1602179055506001600360046101000a81548160ff0219169083151502179055506107086006556012600a620000f69190620009e6565b630132b3a062000107919062000a37565b6008556012600a6200011a9190620009e6565b630132b3a06200012b919062000a37565b6009556012600a6200013e9190620009e6565b623d09006200014e919062000a37565b600a556001600e60146101000a81548160ff0219169083151502179055506000600e60156101000a81548160ff0219169083151502179055503480156200019457600080fd5b5060405162004b3a38038062004b3a8339818101604052810190620001ba919062000c70565b620001da620001ce6200062260201b60201c565b6200062a60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000280573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a6919062000cd6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000334919062000cd6565b6040518363ffffffff1660e01b81526004016200035392919062000d19565b6020604051808303816000875af115801562000373573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000399919062000cd6565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042a620006ee60201b60201c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200052d8260016200071760201b60201c565b6012600a6200053d9190620009e6565b633b9aca006200054e919062000a37565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620005f19190620009e6565b633b9aca0062000602919062000a37565b60405162000611919062000d57565b60405180910390a350505062000e26565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000727620007bb60201b60201c565b60005b8251811015620007b65781600560008584815181106200074f576200074e62000d74565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506200072a565b505050565b620007cb6200062260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007f1620006ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200084a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008419062000e04565b60405180910390fd5b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008da57808604811115620008b257620008b16200084c565b5b6001851615620008c25780820291505b8081029050620008d2856200087b565b945062000892565b94509492505050565b600082620008f55760019050620009c8565b81620009055760009050620009c8565b81600181146200091e576002811462000929576200095f565b6001915050620009c8565b60ff8411156200093e576200093d6200084c565b5b8360020a9150848211156200095857620009576200084c565b5b50620009c8565b5060208310610133831016604e8410600b8410161715620009995782820a9050838111156200099357620009926200084c565b5b620009c8565b620009a8848484600162000888565b92509050818404811115620009c257620009c16200084c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009f382620009cf565b915062000a0083620009d9565b925062000a2f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008e3565b905092915050565b600062000a4482620009cf565b915062000a5183620009cf565b925082820262000a6181620009cf565b9150828204841483151762000a7b5762000a7a6200084c565b5b5092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ac38262000a96565b9050919050565b62000ad58162000ab6565b811462000ae157600080fd5b50565b60008151905062000af58162000aca565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000b4b8262000b00565b810181811067ffffffffffffffff8211171562000b6d5762000b6c62000b11565b5b80604052505050565b600062000b8262000a82565b905062000b90828262000b40565b919050565b600067ffffffffffffffff82111562000bb35762000bb262000b11565b5b602082029050602081019050919050565b600080fd5b600062000be062000bda8462000b95565b62000b76565b9050808382526020820190506020840283018581111562000c065762000c0562000bc4565b5b835b8181101562000c33578062000c1e888262000ae4565b84526020840193505060208101905062000c08565b5050509392505050565b600082601f83011262000c555762000c5462000afb565b5b815162000c6784826020860162000bc9565b91505092915050565b6000806040838503121562000c8a5762000c8962000a8c565b5b600062000c9a8582860162000ae4565b925050602083015167ffffffffffffffff81111562000cbe5762000cbd62000a91565b5b62000ccc8582860162000c3d565b9150509250929050565b60006020828403121562000cef5762000cee62000a8c565b5b600062000cff8482850162000ae4565b91505092915050565b62000d138162000ab6565b82525050565b600060408201905062000d30600083018562000d08565b62000d3f602083018462000d08565b9392505050565b62000d5181620009cf565b82525050565b600060208201905062000d6e600083018462000d46565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000dec60208362000da3565b915062000df98262000db4565b602082019050919050565b6000602082019050818103600083015262000e1f8162000ddd565b9050919050565b613d048062000e366000396000f3fe6080604052600436106102555760003560e01c80638bf67ad011610139578063ac935834116100b6578063c9d9159d1161007a578063c9d9159d14610876578063d11fcb85146108a1578063dd62ed3e146108de578063e717fc301461091b578063f2fde38b14610946578063f5a27e861461096f5761025c565b8063ac935834146107a3578063ba414b10146107ce578063bd186c4c146107f7578063bd4f1dc614610820578063c6b9ff6e1461084b5761025c565b806396418d4d116100fd57806396418d4d146106d25780639bfe8df7146106fb578063a1780c1814610724578063a20adf861461073b578063a9059cbb146107665761025c565b80638bf67ad0146105fd5780638da5cb5b1461062657806391d88b951461065157806391f18b7c1461067c57806395d89b41146106a75761025c565b8063581d30f8116101d25780636ea79583116101965780636ea79583146104fd57806370a082311461052857806370fbc71214610565578063715018a6146105905780637971fca7146105a75780637aab5d9b146105d25761025c565b8063581d30f81461042a5780635bc05f3c146104535780636264300e1461047e57806363126e17146104a9578063685e838e146104d25761025c565b806323b872dd1161021957806323b872dd14610345578063249715a614610382578063313ce567146103ad5780633d21e5a2146103d857806349dc859c146104015761025c565b806306fdde031461025e578063095ea7b3146102895780630e72916a146102c657806312fbbbe4146102ef57806318160ddd1461031a5761025c565b3661025c57005b005b34801561026a57600080fd5b5061027361099a565b604051610280919061279e565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190612868565b6109d7565b6040516102bd91906128c3565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e8919061290a565b6109fa565b005b3480156102fb57600080fd5b50610304610a33565b6040516103119190612946565b60405180910390f35b34801561032657600080fd5b5061032f610a39565b60405161033c9190612946565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190612961565b610a5d565b60405161037991906128c3565b60405180910390f35b34801561038e57600080fd5b50610397610a8c565b6040516103a491906128c3565b60405180910390f35b3480156103b957600080fd5b506103c2610a9f565b6040516103cf91906129d0565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa91906129eb565b610aa8565b005b34801561040d57600080fd5b5061042860048036038101906104239190612a18565b610af4565b005b34801561043657600080fd5b50610451600480360381019061044c9190612a81565b610cdc565b005b34801561045f57600080fd5b50610468610d74565b60405161047591906128c3565b60405180910390f35b34801561048a57600080fd5b50610493610d87565b6040516104a09190612ad0565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb9190612c33565b610d9d565b005b3480156104de57600080fd5b506104e7610e34565b6040516104f49190612946565b60405180910390f35b34801561050957600080fd5b50610512610e3a565b60405161051f9190612c9e565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906129eb565b610e60565b60405161055c9190612946565b60405180910390f35b34801561057157600080fd5b5061057a610ea9565b6040516105879190612946565b60405180910390f35b34801561059c57600080fd5b506105a5610eaf565b005b3480156105b357600080fd5b506105bc610ec3565b6040516105c99190612ad0565b60405180910390f35b3480156105de57600080fd5b506105e7610ed9565b6040516105f491906128c3565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190612cb9565b610eec565b005b34801561063257600080fd5b5061063b610f3b565b6040516106489190612c9e565b60405180910390f35b34801561065d57600080fd5b50610666610f64565b6040516106739190612946565b60405180910390f35b34801561068857600080fd5b50610691610f6a565b60405161069e9190612c9e565b60405180910390f35b3480156106b357600080fd5b506106bc610f90565b6040516106c9919061279e565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f49190612d0c565b610fcd565b005b34801561070757600080fd5b50610722600480360381019061071d9190612d4c565b611086565b005b34801561073057600080fd5b50610739611147565b005b34801561074757600080fd5b50610750611159565b60405161075d91906128c3565b60405180910390f35b34801561077257600080fd5b5061078d60048036038101906107889190612868565b61116c565b60405161079a91906128c3565b60405180910390f35b3480156107af57600080fd5b506107b861118f565b6040516107c591906128c3565b60405180910390f35b3480156107da57600080fd5b506107f560048036038101906107f09190612de7565b6111a2565b005b34801561080357600080fd5b5061081e6004803603810190610819919061290a565b61127f565b005b34801561082c57600080fd5b506108356112a4565b6040516108429190612ad0565b60405180910390f35b34801561085757600080fd5b506108606112ba565b60405161086d9190612c9e565b60405180910390f35b34801561088257600080fd5b5061088b6112e0565b6040516108989190612ad0565b60405180910390f35b3480156108ad57600080fd5b506108c860048036038101906108c391906129eb565b6112f6565b6040516108d591906128c3565b60405180910390f35b3480156108ea57600080fd5b5061090560048036038101906109009190612e47565b611316565b6040516109129190612946565b60405180910390f35b34801561092757600080fd5b5061093061139d565b60405161093d9190612946565b60405180910390f35b34801561095257600080fd5b5061096d600480360381019061096891906129eb565b6113a3565b005b34801561097b57600080fd5b50610984611426565b6040516109919190612946565b60405180910390f35b60606040518060400160405280600a81526020017f426c61636b2057616c6c00000000000000000000000000000000000000000000815250905090565b6000806109e261142c565b90506109ef818585611434565b600191505092915050565b610a026115fd565b80600060146101000a81548160ff0219169083151502179055506001151581151503610a3057426004819055505b50565b60045481565b60006012600a610a499190612fe9565b633b9aca00610a589190613034565b905090565b600080610a6861142c565b9050610a7585828561167b565b610a80858585611707565b60019150509392505050565b600360049054906101000a900460ff1681565b60006012905090565b610ab06115fd565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610afc6115fd565b600654600754610b0c9190613076565b4211610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b44906130f6565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff166370a08231600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610baa9190612c9e565b602060405180830381865afa158015610bc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610beb919061312b565b90506000610c01826103e863ffffffff16611c76565b905080831115610c0f578092505b426007819055506000831115610c4f57610c4e600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead85611c9f565b5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610cbe57600080fd5b505af1158015610cd2573d6000803e3d6000fd5b5050505050505050565b610ce46115fd565b610fa063ffffffff168163ffffffff161115610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c906131a4565b60405180910390fd5b81600060166101000a81548160ff021916908315150217905550806002601c6101000a81548163ffffffff021916908363ffffffff1602179055505050565b600060169054906101000a900460ff1681565b600260189054906101000a900463ffffffff1681565b610da56115fd565b60005b8251811015610e2f578160056000858481518110610dc957610dc86131c4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610da8565b505050565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b610eb76115fd565b610ec16000611e24565b565b600260149054906101000a900463ffffffff1681565b600060149054906101000a900460ff1681565b610ef46115fd565b82600a8190555081600360006101000a81548163ffffffff021916908363ffffffff16021790555080600e60146101000a81548160ff021916908315150217905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600581526020017f4257414c4c000000000000000000000000000000000000000000000000000000815250905090565b610fd56115fd565b610fa063ffffffff168263ffffffff16111580156110015750610fa063ffffffff168163ffffffff1611155b611040576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611037906131a4565b60405180910390fd5b81600260146101000a81548163ffffffff021916908363ffffffff16021790555080600260186101000a81548163ffffffff021916908363ffffffff1602179055505050565b61108e6115fd565b603263ffffffff1682101580156110ac5750603263ffffffff168110155b6110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e29061323f565b60405180910390fd5b6111116012600a6110fc9190612fe9565b633b9aca0061110b9190613034565b83611c76565b60088190555061113d6012600a6111289190612fe9565b633b9aca006111379190613034565b82611c76565b6009819055505050565b61114f6115fd565b611157611ee8565b565b600060159054906101000a900460ff1681565b60008061117761142c565b9050611184818585611707565b600191505092915050565b600e60149054906101000a900460ff1681565b6111aa6115fd565b60006111b4610f3b565b905060005b848490508110156112785760008585838181106111d9576111d86131c4565b5b90506020020160208101906111ee91906129eb565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361125f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611256906132d1565b60405180910390fd5b61126a838286611c9f565b5080806001019150506111b9565b5050505050565b6112876115fd565b80600060156101000a81548160ff02191690831515021790555050565b6002601c9054906101000a900463ffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900463ffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6113ab6115fd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190613363565b60405180910390fd5b61142381611e24565b50565b60075481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a906133f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990613487565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115f09190612946565b60405180910390a3505050565b61160561142c565b73ffffffffffffffffffffffffffffffffffffffff16611623610f3b565b73ffffffffffffffffffffffffffffffffffffffff1614611679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611670906134f3565b60405180910390fd5b565b60006116878484611316565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170157818110156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea9061355f565b60405180910390fd5b6117008484848403611434565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d906135f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906132d1565b60405180910390fd5b60008111611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613683565b60405180910390fd5b611830610f3b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061189b575061186c610f3b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806118d157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156118e6576118e1838383611c9f565b611c71565b600060149054906101000a900460ff16611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c906136ef565b60405180910390fd5b61193d611f5f565b600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16149050806119a1576119a0611ee8565b5b8015611a2257600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a1d57611a1a83600260149054906101000a900463ffffffff1663ffffffff16611c76565b91505b611ac6565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ac557611ac283600060169054906101000a900460ff16611aa357600260189054906101000a900463ffffffff16611ab7565b6002601c9054906101000a900463ffffffff165b63ffffffff16611c76565b91505b5b81831015611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b009061375b565b60405180910390fd5b8183039250600060159054906101000a900460ff1615611c4e57600854831115611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f906137c7565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611c4d5760095483600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c0b9190613076565b1115611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4390613833565b60405180910390fd5b5b5b6000821115611c6357611c62853084611c9f565b5b611c6e858585611c9f565b50505b505050565b600061271063ffffffff168284611c8d9190613034565b611c979190613882565b905092915050565b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1d90613925565b60405180910390fd5b818103600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e169190612946565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611ef330610e60565b90506000600a548210159050808015611f195750600e60159054906101000a900460ff16155b8015611f315750600e60149054906101000a900460ff165b15611f5b57611f41600a546121ed565b60004790506000811115611f5957611f58476124ed565b5b505b5050565b600360049054906101000a900460ff168015611f8a5750610e10600454611f869190613076565b4211155b156121eb57600060045442611f9f9190613945565b90506102588110158015611fcc5750610fa0600260149054906101000a900463ffffffff1663ffffffff16115b8015611ff15750610fa0600260189054906101000a900463ffffffff1663ffffffff16115b1561204857610fa0600260146101000a81548163ffffffff021916908363ffffffff160217905550610fa0600260186101000a81548163ffffffff021916908363ffffffff160217905550426004819055506121b7565b61025881106121b6576103e8600260149054906101000a900463ffffffff1663ffffffff1614801561209357506103e8600260189054906101000a900463ffffffff1663ffffffff16145b156120e3576101f4600260146101000a81548163ffffffff021916908363ffffffff1602179055506101f4600260186101000a81548163ffffffff021916908363ffffffff1602179055506121ae565b6101f4600260149054906101000a900463ffffffff1663ffffffff1611801561212557506101f4600260189054906101000a900463ffffffff1663ffffffff16115b156121ad576103e8600260148282829054906101000a900463ffffffff1661214d9190613979565b92506101000a81548163ffffffff021916908363ffffffff1602179055506103e8600260188282829054906101000a900463ffffffff1661218e9190613979565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b5b426004819055505b5b610e106004546121c79190613076565b42106121e9576000600360046101000a81548160ff0219169083151502179055505b505b565b6001600e60156101000a81548160ff021916908315150217905550600061223982600360009054906101000a900463ffffffff1661271061222e9190613979565b63ffffffff16611c76565b9050600081836122499190613945565b905060004790506000600267ffffffffffffffff81111561226d5761226c612af0565b5b60405190808252806020026020018201604052801561229b5781602001602082028036833780820191505090505b50905030816000815181106122b3576122b26131c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237e91906139c6565b81600181518110612392576123916131c4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123f930600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687611434565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161245d959493929190613af6565b600060405180830381600087803b15801561247757600080fd5b505af115801561248b573d6000803e3d6000fd5b505050506000824761249d9190613945565b90506124ca846124c583600360009054906101000a900463ffffffff1663ffffffff16611c76565b61260e565b50505050506000600e60156101000a81548160ff02191690831515021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff81111561254457612543612af0565b5b6040519080825280601f01601f1916602001820160405280156125765781602001600182028036833780820191505090505b506040516125849190613b97565b60006040518083038185875af1925050503d80600081146125c1576040519150601f19603f3d011682016040523d82523d6000602084013e6125c6565b606091505b505090508061260a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260190613bfa565b60405180910390fd5b5050565b61263b30600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611434565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126c496959493929190613c1a565b60606040518083038185885af11580156126e2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127079190613c7b565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561274857808201518184015260208101905061272d565b60008484015250505050565b6000601f19601f8301169050919050565b60006127708261270e565b61277a8185612719565b935061278a81856020860161272a565b61279381612754565b840191505092915050565b600060208201905081810360008301526127b88184612765565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127ff826127d4565b9050919050565b61280f816127f4565b811461281a57600080fd5b50565b60008135905061282c81612806565b92915050565b6000819050919050565b61284581612832565b811461285057600080fd5b50565b6000813590506128628161283c565b92915050565b6000806040838503121561287f5761287e6127ca565b5b600061288d8582860161281d565b925050602061289e85828601612853565b9150509250929050565b60008115159050919050565b6128bd816128a8565b82525050565b60006020820190506128d860008301846128b4565b92915050565b6128e7816128a8565b81146128f257600080fd5b50565b600081359050612904816128de565b92915050565b6000602082840312156129205761291f6127ca565b5b600061292e848285016128f5565b91505092915050565b61294081612832565b82525050565b600060208201905061295b6000830184612937565b92915050565b60008060006060848603121561297a576129796127ca565b5b60006129888682870161281d565b93505060206129998682870161281d565b92505060406129aa86828701612853565b9150509250925092565b600060ff82169050919050565b6129ca816129b4565b82525050565b60006020820190506129e560008301846129c1565b92915050565b600060208284031215612a0157612a006127ca565b5b6000612a0f8482850161281d565b91505092915050565b600060208284031215612a2e57612a2d6127ca565b5b6000612a3c84828501612853565b91505092915050565b600063ffffffff82169050919050565b612a5e81612a45565b8114612a6957600080fd5b50565b600081359050612a7b81612a55565b92915050565b60008060408385031215612a9857612a976127ca565b5b6000612aa6858286016128f5565b9250506020612ab785828601612a6c565b9150509250929050565b612aca81612a45565b82525050565b6000602082019050612ae56000830184612ac1565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b2882612754565b810181811067ffffffffffffffff82111715612b4757612b46612af0565b5b80604052505050565b6000612b5a6127c0565b9050612b668282612b1f565b919050565b600067ffffffffffffffff821115612b8657612b85612af0565b5b602082029050602081019050919050565b600080fd5b6000612baf612baa84612b6b565b612b50565b90508083825260208201905060208402830185811115612bd257612bd1612b97565b5b835b81811015612bfb5780612be7888261281d565b845260208401935050602081019050612bd4565b5050509392505050565b600082601f830112612c1a57612c19612aeb565b5b8135612c2a848260208601612b9c565b91505092915050565b60008060408385031215612c4a57612c496127ca565b5b600083013567ffffffffffffffff811115612c6857612c676127cf565b5b612c7485828601612c05565b9250506020612c85858286016128f5565b9150509250929050565b612c98816127f4565b82525050565b6000602082019050612cb36000830184612c8f565b92915050565b600080600060608486031215612cd257612cd16127ca565b5b6000612ce086828701612853565b9350506020612cf186828701612a6c565b9250506040612d02868287016128f5565b9150509250925092565b60008060408385031215612d2357612d226127ca565b5b6000612d3185828601612a6c565b9250506020612d4285828601612a6c565b9150509250929050565b60008060408385031215612d6357612d626127ca565b5b6000612d7185828601612853565b9250506020612d8285828601612853565b9150509250929050565b600080fd5b60008083601f840112612da757612da6612aeb565b5b8235905067ffffffffffffffff811115612dc457612dc3612d8c565b5b602083019150836020820283011115612de057612ddf612b97565b5b9250929050565b600080600060408486031215612e0057612dff6127ca565b5b600084013567ffffffffffffffff811115612e1e57612e1d6127cf565b5b612e2a86828701612d91565b93509350506020612e3d86828701612853565b9150509250925092565b60008060408385031215612e5e57612e5d6127ca565b5b6000612e6c8582860161281d565b9250506020612e7d8582860161281d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f0d57808604811115612ee957612ee8612e87565b5b6001851615612ef85780820291505b8081029050612f0685612eb6565b9450612ecd565b94509492505050565b600082612f265760019050612fe2565b81612f345760009050612fe2565b8160018114612f4a5760028114612f5457612f83565b6001915050612fe2565b60ff841115612f6657612f65612e87565b5b8360020a915084821115612f7d57612f7c612e87565b5b50612fe2565b5060208310610133831016604e8410600b8410161715612fb85782820a905083811115612fb357612fb2612e87565b5b612fe2565b612fc58484846001612ec3565b92509050818404811115612fdc57612fdb612e87565b5b81810290505b9392505050565b6000612ff482612832565b9150612fff836129b4565b925061302c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f16565b905092915050565b600061303f82612832565b915061304a83612832565b925082820261305881612832565b9150828204841483151761306f5761306e612e87565b5b5092915050565b600061308182612832565b915061308c83612832565b92508282019050808211156130a4576130a3612e87565b5b92915050565b7f4275726e20636f6f6c646f776e20616374697665000000000000000000000000600082015250565b60006130e0601483612719565b91506130eb826130aa565b602082019050919050565b6000602082019050818103600083015261310f816130d3565b9050919050565b6000815190506131258161283c565b92915050565b600060208284031215613141576131406127ca565b5b600061314f84828501613116565b91505092915050565b7f546f6f2068696768206665650000000000000000000000000000000000000000600082015250565b600061318e600c83612719565b915061319982613158565b602082019050919050565b600060208201905081810360008301526131bd81613181565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f546f6f206c6f77206d6178000000000000000000000000000000000000000000600082015250565b6000613229600b83612719565b9150613234826131f3565b602082019050919050565b600060208201905081810360008301526132588161321c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132bb602383612719565b91506132c68261325f565b604082019050919050565b600060208201905081810360008301526132ea816132ae565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061334d602683612719565b9150613358826132f1565b604082019050919050565b6000602082019050818103600083015261337c81613340565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133df602483612719565b91506133ea82613383565b604082019050919050565b6000602082019050818103600083015261340e816133d2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613471602283612719565b915061347c82613415565b604082019050919050565b600060208201905081810360008301526134a081613464565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134dd602083612719565b91506134e8826134a7565b602082019050919050565b6000602082019050818103600083015261350c816134d0565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613549601d83612719565b915061355482613513565b602082019050919050565b600060208201905081810360008301526135788161353c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135db602583612719565b91506135e68261357f565b604082019050919050565b6000602082019050818103600083015261360a816135ce565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061366d602983612719565b915061367882613611565b604082019050919050565b6000602082019050818103600083015261369c81613660565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b60006136d9601383612719565b91506136e4826136a3565b602082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f666565206578636565647320616d6f756e740000000000000000000000000000600082015250565b6000613745601283612719565b91506137508261370f565b602082019050919050565b6000602082019050818103600083015261377481613738565b9050919050565b7f4d61782054582072656163686564000000000000000000000000000000000000600082015250565b60006137b1600e83612719565b91506137bc8261377b565b602082019050919050565b600060208201905081810360008301526137e0816137a4565b9050919050565b7f4d61782077616c6c657420726561636865640000000000000000000000000000600082015250565b600061381d601283612719565b9150613828826137e7565b602082019050919050565b6000602082019050818103600083015261384c81613810565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061388d82612832565b915061389883612832565b9250826138a8576138a7613853565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061390f602683612719565b915061391a826138b3565b604082019050919050565b6000602082019050818103600083015261393e81613902565b9050919050565b600061395082612832565b915061395b83612832565b925082820390508181111561397357613972612e87565b5b92915050565b600061398482612a45565b915061398f83612a45565b9250828203905063ffffffff8111156139ab576139aa612e87565b5b92915050565b6000815190506139c081612806565b92915050565b6000602082840312156139dc576139db6127ca565b5b60006139ea848285016139b1565b91505092915050565b6000819050919050565b6000819050919050565b6000613a22613a1d613a18846139f3565b6139fd565b612832565b9050919050565b613a3281613a07565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a6d816127f4565b82525050565b6000613a7f8383613a64565b60208301905092915050565b6000602082019050919050565b6000613aa382613a38565b613aad8185613a43565b9350613ab883613a54565b8060005b83811015613ae9578151613ad08882613a73565b9750613adb83613a8b565b925050600181019050613abc565b5085935050505092915050565b600060a082019050613b0b6000830188612937565b613b186020830187613a29565b8181036040830152613b2a8186613a98565b9050613b396060830185612c8f565b613b466080830184612937565b9695505050505050565b600081519050919050565b600081905092915050565b6000613b7182613b50565b613b7b8185613b5b565b9350613b8b81856020860161272a565b80840191505092915050565b6000613ba38284613b66565b915081905092915050565b7f5472616e736665724661696c0000000000000000000000000000000000000000600082015250565b6000613be4600c83612719565b9150613bef82613bae565b602082019050919050565b60006020820190508181036000830152613c1381613bd7565b9050919050565b600060c082019050613c2f6000830189612c8f565b613c3c6020830188612937565b613c496040830187613a29565b613c566060830186613a29565b613c636080830185612c8f565b613c7060a0830184612937565b979650505050505050565b600080600060608486031215613c9457613c936127ca565b5b6000613ca286828701613116565b9350506020613cb386828701613116565b9250506040613cc486828701613116565b915050925092509256fea264697066735822122054fcba8589ea4d3957f2326964eea7fc27f8005f9aceb26c48adcb29d6c5511264736f6c6343000811003300000000000000000000000070f9f825f822a1fd7550b241b6a2fdbb869e72870000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000043b05f49ca82aa1f108c54b5fabe4ba6b9dcb77b000000000000000000000000526a48df8de02ac4bbd1c87333cd59582cfbc0e800000000000000000000000058679fd2a88b23727eaa57327d71495c11de5d87000000000000000000000000162941e44cb799a9fb96ffe80edd9328f343b74c000000000000000000000000eb3c3c28e48888abb1720922f0121fb4fcd1ceb700000000000000000000000015fba21136d096a486ac9bd1b85047c5e09696c0000000000000000000000000ee2cfae068c69b937d8f2745cd381cdab9bef7d90000000000000000000000003d6c4e4ffc28c35399fae41aaba3dd6010ebf278000000000000000000000000a2a085641e02db7c397bd23b05202374b551c75d000000000000000000000000ac88741d78b9a1c1cb7bcb475bccd92544df6ef10000000000000000000000005621701cffdbc43ad6f32234615c7eed068fd164