608060405269d3c21bcecceda10000006008556a084595161401484a0000006009556a108b2a2c28029094000000600a5573e7a099054c3d12050a3628a5e7b5a41896126787600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e7a099054c3d12050a3628a5e7b5a41896126787600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601981526020016019815250600d5f820151815f01556020820151816001015550506040518060400160405280601981526020016019815250600f5f820151815f01556020820151816001015550506032601155603260125534801562000148575f80fd5b506040518060400160405280600581526020017f63754f70740000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f63754f70740000000000000000000000000000000000000000000000000000008152508160039081620001c6919062000a6a565b508060049081620001d8919062000a6a565b505050620001fb620001ef620005d260201b60201c565b620005d960201b60201c565b6200023b33620002106200069c60201b60201c565b600a6200021e919062000cd7565b633b9aca006200022f919062000d27565b620006a460201b60201c565b600160135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000319919062000dd6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a5919062000dd6565b6040518363ffffffff1660e01b8152600401620003c492919062000e17565b6020604051808303815f875af1158015620003e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000407919062000dd6565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505062000f26565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070c9062000ea0565b60405180910390fd5b620007285f83836200080160201b60201c565b8060025f8282546200073b919062000ec0565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200078f919062000ec0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007f5919062000f0b565b60405180910390a35050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200088257607f821691505b6020821081036200089857620008976200083d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008bf565b620009088683620008bf565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009526200094c620009468462000920565b62000929565b62000920565b9050919050565b5f819050919050565b6200096d8362000932565b620009856200097c8262000959565b848454620008cb565b825550505050565b5f90565b6200099b6200098d565b620009a881848462000962565b505050565b5b81811015620009cf57620009c35f8262000991565b600181019050620009ae565b5050565b601f82111562000a1e57620009e8816200089e565b620009f384620008b0565b8101602085101562000a03578190505b62000a1b62000a1285620008b0565b830182620009ad565b50505b505050565b5f82821c905092915050565b5f62000a405f198460080262000a23565b1980831691505092915050565b5f62000a5a838362000a2f565b9150826002028217905092915050565b62000a758262000806565b67ffffffffffffffff81111562000a915762000a9062000810565b5b62000a9d82546200086a565b62000aaa828285620009d3565b5f60209050601f83116001811462000ae0575f841562000acb578287015190505b62000ad7858262000a4d565b86555062000b46565b601f19841662000af0866200089e565b5f5b8281101562000b195784890151825560018201915060208501945060208101905062000af2565b8683101562000b39578489015162000b35601f89168262000a2f565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000bd85780860481111562000bb05762000baf62000b4e565b5b600185161562000bc05780820291505b808102905062000bd08562000b7b565b945062000b90565b94509492505050565b5f8262000bf2576001905062000cc4565b8162000c01575f905062000cc4565b816001811462000c1a576002811462000c255762000c5b565b600191505062000cc4565b60ff84111562000c3a5762000c3962000b4e565b5b8360020a91508482111562000c545762000c5362000b4e565b5b5062000cc4565b5060208310610133831016604e8410600b841016171562000c955782820a90508381111562000c8f5762000c8e62000b4e565b5b62000cc4565b62000ca4848484600162000b87565b9250905081840481111562000cbe5762000cbd62000b4e565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000ce38262000920565b915062000cf08362000ccb565b925062000d1f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000be1565b905092915050565b5f62000d338262000920565b915062000d408362000920565b925082820262000d508162000920565b9150828204841483151762000d6a5762000d6962000b4e565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000da08262000d75565b9050919050565b62000db28162000d94565b811462000dbd575f80fd5b50565b5f8151905062000dd08162000da7565b92915050565b5f6020828403121562000dee5762000ded62000d71565b5b5f62000dfd8482850162000dc0565b91505092915050565b62000e118162000d94565b82525050565b5f60408201905062000e2c5f83018562000e06565b62000e3b602083018462000e06565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e88601f8362000e42565b915062000e958262000e52565b602082019050919050565b5f6020820190508181035f83015262000eb98162000e7a565b9050919050565b5f62000ecc8262000920565b915062000ed98362000920565b925082820190508082111562000ef45762000ef362000b4e565b5b92915050565b62000f058162000920565b82525050565b5f60208201905062000f205f83018462000efa565b92915050565b6145a68062000f345f395ff3fe608060405260043610610233575f3560e01c80638a8c523c1161012d578063aa35822c116100aa578063e01af92c1161006e578063e01af92c14610829578063ec28438a14610851578063f2fde38b14610879578063f66895a3146108a1578063f887ea40146108cc5761023a565b8063aa35822c14610735578063aa4bde281461075d578063c04a541414610787578063dbe66ca0146107b1578063dd62ed3e146107ed5761023a565b80639d0014b1116100f15780639d0014b114610643578063a11a16821461066b578063a457c2d714610693578063a8aa1b31146106cf578063a9059cbb146106f95761023a565b80638a8c523c146105875780638c0b5e221461059d5780638da5cb5b146105c757806395d89b41146105f15780639aed73701461061b5761023a565b806339509351116101bb578063715018a61161017f578063715018a6146104ca57806372ac2486146104e057806375f0a874146105085780638091f3bf14610532578063864701a51461055c5761023a565b806339509351146103d8578063590ffdce146104145780635d098b381461043c5780636ddd17131461046457806370a082311461048e5761023a565b806323b872dd1161020257806323b872dd146102f857806325b86edf1461033457806327a14fc21461037057806329a2192b14610398578063313ce567146103ae5761023a565b80630445b6671461023e57806306fdde0314610268578063095ea7b31461029257806318160ddd146102ce5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b506102526108f6565b60405161025f9190613021565b60405180910390f35b348015610273575f80fd5b5061027c6108fc565b60405161028991906130c4565b60405180910390f35b34801561029d575f80fd5b506102b860048036038101906102b3919061316c565b61098c565b6040516102c591906131c4565b60405180910390f35b3480156102d9575f80fd5b506102e26109a9565b6040516102ef9190613021565b60405180910390f35b348015610303575f80fd5b5061031e600480360381019061031991906131dd565b6109b2565b60405161032b91906131c4565b60405180910390f35b34801561033f575f80fd5b5061035a6004803603810190610355919061322d565b610aad565b60405161036791906131c4565b60405180910390f35b34801561037b575f80fd5b506103966004803603810190610391919061326b565b610c62565b005b3480156103a3575f80fd5b506103ac610d6d565b005b3480156103b9575f80fd5b506103c2610f6d565b6040516103cf91906132b1565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f9919061316c565b610f75565b60405161040b91906131c4565b60405180910390f35b34801561041f575f80fd5b5061043a600480360381019061043591906132f4565b61101c565b005b348015610447575f80fd5b50610462600480360381019061045d9190613332565b61111c565b005b34801561046f575f80fd5b506104786112ea565b60405161048591906131c4565b60405180910390f35b348015610499575f80fd5b506104b460048036038101906104af9190613332565b6112fd565b6040516104c19190613021565b60405180910390f35b3480156104d5575f80fd5b506104de611342565b005b3480156104eb575f80fd5b5061050660048036038101906105019190613332565b6113c9565b005b348015610513575f80fd5b5061051c611597565b604051610529919061336c565b60405180910390f35b34801561053d575f80fd5b506105466115bc565b60405161055391906131c4565b60405180910390f35b348015610567575f80fd5b506105706115cf565b60405161057e929190613385565b60405180910390f35b348015610592575f80fd5b5061059b6115e0565b005b3480156105a8575f80fd5b506105b1611710565b6040516105be9190613021565b60405180910390f35b3480156105d2575f80fd5b506105db611716565b6040516105e8919061336c565b60405180910390f35b3480156105fc575f80fd5b5061060561173e565b60405161061291906130c4565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c919061326b565b6117ce565b005b34801561064e575f80fd5b506106696004803603810190610664919061326b565b6118d9565b005b348015610676575f80fd5b50610691600480360381019061068c91906133ac565b611a29565b005b34801561069e575f80fd5b506106b960048036038101906106b4919061316c565b611ba0565b6040516106c691906131c4565b60405180910390f35b3480156106da575f80fd5b506106e3611c8f565b6040516106f0919061336c565b60405180910390f35b348015610704575f80fd5b5061071f600480360381019061071a919061316c565b611cb4565b60405161072c91906131c4565b60405180910390f35b348015610740575f80fd5b5061075b600480360381019061075691906133ac565b611cd1565b005b348015610768575f80fd5b50610771611e02565b60405161077e9190613021565b60405180910390f35b348015610792575f80fd5b5061079b611e08565b6040516107a8919061336c565b60405180910390f35b3480156107bc575f80fd5b506107d760048036038101906107d29190613332565b611e2d565b6040516107e491906131c4565b60405180910390f35b3480156107f8575f80fd5b50610813600480360381019061080e919061322d565b611e4a565b6040516108209190613021565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906133ea565b611ecc565b005b34801561085c575f80fd5b506108776004803603810190610872919061326b565b611f91565b005b348015610884575f80fd5b5061089f600480360381019061089a9190613332565b61209c565b005b3480156108ac575f80fd5b506108b5612192565b6040516108c3929190613385565b60405180910390f35b3480156108d7575f80fd5b506108e06121a3565b6040516108ed9190613470565b60405180910390f35b60085481565b60606003805461090b906134b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610937906134b6565b80156109825780601f1061095957610100808354040283529160200191610982565b820191905f5260205f20905b81548152906001019060200180831161096557829003601f168201915b5050505050905090565b5f61099f6109986121c8565b84846121cf565b6001905092915050565b5f600254905090565b5f6109be848484612392565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a056121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90613556565b60405180910390fd5b610aa185610a906121c8565b8584610a9c91906135a1565b6121cf565b60019150509392505050565b5f610ab66121c8565b73ffffffffffffffffffffffffffffffffffffffff16610ad4611716565b73ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b219061361e565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b64919061336c565b602060405180830381865afa158015610b7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba39190613650565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610be092919061367b565b6020604051808303815f875af1158015610bfc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2091906136b6565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051610c5392919061367b565b60405180910390a15092915050565b610c6a6121c8565b73ffffffffffffffffffffffffffffffffffffffff16610c88611716565b73ffffffffffffffffffffffffffffffffffffffff1614610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd59061361e565b60405180910390fd5b622625a0811015610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90613751565b60405180910390fd5b670de0b6b3a764000081610d38919061376f565b600a819055507f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec60405160405180910390a150565b610d756121c8565b73ffffffffffffffffffffffffffffffffffffffff16610d93611716565b73ffffffffffffffffffffffffffffffffffffffff1614610de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de09061361e565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550610e15610e10306112fd565b61284f565b5f4790505f600282610e2791906137dd565b90505f8183610e3691906135a1565b90505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051610e7e9061383a565b5f6040518083038185875af1925050503d805f8114610eb8576040519150601f19603f3d011682016040523d82523d5f602084013e610ebd565b606091505b505080915050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610f089061383a565b5f6040518083038185875af1925050503d805f8114610f42576040519150601f19603f3d011682016040523d82523d5f602084013e610f47565b606091505b505080915050505050505f600760146101000a81548160ff021916908315150217905550565b5f6012905090565b5f611012610f816121c8565b848460015f610f8e6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461100d919061384e565b6121cf565b6001905092915050565b6110246121c8565b73ffffffffffffffffffffffffffffffffffffffff16611042611716565b73ffffffffffffffffffffffffffffffffffffffff1614611098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108f9061361e565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed60405160405180910390a15050565b6111246121c8565b73ffffffffffffffffffffffffffffffffffffffff16611142611716565b73ffffffffffffffffffffffffffffffffffffffff1614611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f9061361e565b60405180910390fd5b5f60135f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361127b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611272906138f1565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e060405160405180910390a150565b600760159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61134a6121c8565b73ffffffffffffffffffffffffffffffffffffffff16611368611716565b73ffffffffffffffffffffffffffffffffffffffff16146113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b59061361e565b60405180910390fd5b6113c75f612a85565b565b6113d16121c8565b73ffffffffffffffffffffffffffffffffffffffff166113ef611716565b73ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c9061361e565b60405180910390fd5b5f60135f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f9061397f565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f56c050a659ad3741e0a2373000420a1c3c060f7f39c95458be197a36a6e61ec260405160405180910390a150565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760169054906101000a900460ff1681565b600d805f0154908060010154905082565b6115e86121c8565b73ffffffffffffffffffffffffffffffffffffffff16611606611716565b73ffffffffffffffffffffffffffffffffffffffff161461165c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116539061361e565b60405180910390fd5b600760169054906101000a900460ff16156116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a3906139e7565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a1565b60095481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461174d906134b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611779906134b6565b80156117c45780601f1061179b576101008083540402835291602001916117c4565b820191905f5260205f20905b8154815290600101906020018083116117a757829003601f168201915b5050505050905090565b6117d66121c8565b73ffffffffffffffffffffffffffffffffffffffff166117f4611716565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118419061361e565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484611876919061376f565b61188091906137dd565b90811502906040515f60405180830381858888f193505050501580156118a8573d5f803e3d5ffd5b507ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf960405160405180910390a15050565b6118e16121c8565b73ffffffffffffffffffffffffffffffffffffffff166118ff611716565b73ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c9061361e565b60405180910390fd5b61271081101561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190613a75565b60405180910390fd5b6301c9c3808111156119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890613b03565b60405180910390fd5b670de0b6b3a7640000816119f5919061376f565b6008819055507ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d60405160405180910390a150565b611a316121c8565b73ffffffffffffffffffffffffffffffffffffffff16611a4f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c9061361e565b60405180910390fd5b604051806040016040528083815260200182815250600f5f820151815f0155602082015181600101559050508082611add919061384e565b6012819055506103856012541115611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190613b91565b60405180910390fd5b600a6012541015611b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6790613c1f565b60405180910390fd5b7f13f91d6936cb30f23ecef75125dc94fead23e2cb4beb9d95058df43aa8c3078560405160405180910390a15050565b5f8060015f611bad6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613cad565b60405180910390fd5b611c84611c726121c8565b858584611c7f91906135a1565b6121cf565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611cc7611cc06121c8565b8484612392565b6001905092915050565b611cd96121c8565b73ffffffffffffffffffffffffffffffffffffffff16611cf7611716565b73ffffffffffffffffffffffffffffffffffffffff1614611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d449061361e565b60405180910390fd5b604051806040016040528083815260200182815250600d5f820151815f0155602082015181600101559050508082611d85919061384e565b6011819055506103856011541115611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990613d3b565b60405180910390fd5b7f5603f0cab8983038ffb2c31e46a497a67322819231397b1a4eff19e46e39851d60405160405180910390a15050565b600a5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6013602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ed46121c8565b73ffffffffffffffffffffffffffffffffffffffff16611ef2611716565b73ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f9061361e565b60405180910390fd5b80600760156101000a81548160ff0219169083151502179055507f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a60405160405180910390a150565b611f996121c8565b73ffffffffffffffffffffffffffffffffffffffff16611fb7611716565b73ffffffffffffffffffffffffffffffffffffffff161461200d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120049061361e565b60405180910390fd5b622625a0811015612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a90613751565b60405180910390fd5b670de0b6b3a764000081612067919061376f565b6009819055507f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b60405160405180910390a150565b6120a46121c8565b73ffffffffffffffffffffffffffffffffffffffff166120c2611716565b73ffffffffffffffffffffffffffffffffffffffff1614612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f9061361e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217d90613dc9565b60405180910390fd5b61218f81612a85565b50565b600f805f0154908060010154905082565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223490613e57565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a290613ee5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123859190613021565b60405180910390a3505050565b5f81116123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90613f73565b60405180910390fd5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612472575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561248b5750600760149054906101000a900460ff16155b156125d257600760169054906101000a900460ff166124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d690613fdb565b60405180910390fd5b600954811115612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614043565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d157600a5481612585846112fd565b61258f919061384e565b11156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c7906140d1565b60405180910390fd5b5b5b5f600760149054906101000a900460ff1680612634575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612685575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612692575f9050612784565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612708576103e8601254836126f7919061376f565b61270191906137dd565b9050612783565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361277e576103e86011548361276d919061376f565b61277791906137dd565b9050612782565b5f90505b5b5b600760159054906101000a900460ff1680156127ad5750600760149054906101000a900460ff16155b8015612806575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561281157505f81115b1561281f5761281e612b48565b5b6128358484838561283091906135a1565b612ca1565b5f81111561284957612848843083612ca1565b5b50505050565b5f600267ffffffffffffffff81111561286b5761286a6140ef565b5b6040519080825280602002602001820160405280156128995781602001602082028036833780820191505090505b50905030815f815181106128b0576128af61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612954573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612978919061415d565b8160018151811061298c5761298b61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129f23060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121cf565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a54959493929190614278565b5f604051808303815f87803b158015612a6b575f80fd5b505af1158015612a7d573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612c9f576001600760146101000a81548160ff0219169083151502179055505f612b81306112fd565b90506008548110612c83575f8190505f479050612b9d8261284f565b5f8147612baa91906135a1565b90505f6064603283612bbc919061376f565b612bc691906137dd565b90505f8183612bd591906135a1565b90505f821115612c2a57612c2982600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b5b5f811115612c7d57612c7c81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b5b50505050505b505f600760146101000a81548160ff0219169083151502179055505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690614340565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d74906143ce565b60405180910390fd5b612d88838383613004565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e029061445c565b60405180910390fd5b8181612e1791906135a1565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612ea2919061384e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f069190613021565b60405180910390a350505050565b80471015612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e906144c4565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612f7c9061383a565b5f6040518083038185875af1925050503d805f8114612fb6576040519150601f19603f3d011682016040523d82523d5f602084013e612fbb565b606091505b5050905080612fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff690614552565b60405180910390fd5b505050565b505050565b5f819050919050565b61301b81613009565b82525050565b5f6020820190506130345f830184613012565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613071578082015181840152602081019050613056565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130968261303a565b6130a08185613044565b93506130b0818560208601613054565b6130b98161307c565b840191505092915050565b5f6020820190508181035f8301526130dc818461308c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613111826130e8565b9050919050565b61312181613107565b811461312b575f80fd5b50565b5f8135905061313c81613118565b92915050565b61314b81613009565b8114613155575f80fd5b50565b5f8135905061316681613142565b92915050565b5f8060408385031215613182576131816130e4565b5b5f61318f8582860161312e565b92505060206131a085828601613158565b9150509250929050565b5f8115159050919050565b6131be816131aa565b82525050565b5f6020820190506131d75f8301846131b5565b92915050565b5f805f606084860312156131f4576131f36130e4565b5b5f6132018682870161312e565b93505060206132128682870161312e565b925050604061322386828701613158565b9150509250925092565b5f8060408385031215613243576132426130e4565b5b5f6132508582860161312e565b92505060206132618582860161312e565b9150509250929050565b5f602082840312156132805761327f6130e4565b5b5f61328d84828501613158565b91505092915050565b5f60ff82169050919050565b6132ab81613296565b82525050565b5f6020820190506132c45f8301846132a2565b92915050565b6132d3816131aa565b81146132dd575f80fd5b50565b5f813590506132ee816132ca565b92915050565b5f806040838503121561330a576133096130e4565b5b5f6133178582860161312e565b9250506020613328858286016132e0565b9150509250929050565b5f60208284031215613347576133466130e4565b5b5f6133548482850161312e565b91505092915050565b61336681613107565b82525050565b5f60208201905061337f5f83018461335d565b92915050565b5f6040820190506133985f830185613012565b6133a56020830184613012565b9392505050565b5f80604083850312156133c2576133c16130e4565b5b5f6133cf85828601613158565b92505060206133e085828601613158565b9150509250929050565b5f602082840312156133ff576133fe6130e4565b5b5f61340c848285016132e0565b91505092915050565b5f819050919050565b5f61343861343361342e846130e8565b613415565b6130e8565b9050919050565b5f6134498261341e565b9050919050565b5f61345a8261343f565b9050919050565b61346a81613450565b82525050565b5f6020820190506134835f830184613461565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806134cd57607f821691505b6020821081036134e0576134df613489565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613540602883613044565b915061354b826134e6565b604082019050919050565b5f6020820190508181035f83015261356d81613534565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135ab82613009565b91506135b683613009565b92508282039050818111156135ce576135cd613574565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613608602083613044565b9150613613826135d4565b602082019050919050565b5f6020820190508181035f830152613635816135fc565b9050919050565b5f8151905061364a81613142565b92915050565b5f60208284031215613665576136646130e4565b5b5f6136728482850161363c565b91505092915050565b5f60408201905061368e5f83018561335d565b61369b6020830184613012565b9392505050565b5f815190506136b0816132ca565b92915050565b5f602082840312156136cb576136ca6130e4565b5b5f6136d8848285016136a2565b91505092915050565b7f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e5f8201527f3235250000000000000000000000000000000000000000000000000000000000602082015250565b5f61373b602383613044565b9150613746826136e1565b604082019050919050565b5f6020820190508181035f8301526137688161372f565b9050919050565b5f61377982613009565b915061378483613009565b925082820261379281613009565b915082820484148315176137a9576137a8613574565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137e782613009565b91506137f283613009565b925082613802576138016137b0565b5b828204905092915050565b5f81905092915050565b50565b5f6138255f8361380d565b915061383082613817565b5f82019050919050565b5f6138448261381a565b9150819050919050565b5f61385882613009565b915061386383613009565b925082820190508082111561387b5761387a613574565b5b92915050565b7f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f6138db602783613044565b91506138e682613881565b604082019050919050565b5f6020820190508181035f830152613908816138cf565b9050919050565b7f446576656c6f706d656e742057616c6c65742063616e6e6f74206265207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f613969602983613044565b91506139748261390f565b604082019050919050565b5f6020820190508181035f8301526139968161395d565b9050919050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f6139d1601683613044565b91506139dc8261399d565b602082019050919050565b5f6020820190508181035f8301526139fe816139c5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613a5f603583613044565b9150613a6a82613a05565b604082019050919050565b5f6020820190508181035f830152613a8c81613a53565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f613aed603283613044565b9150613af882613a93565b604082019050919050565b5f6020820190508181035f830152613b1a81613ae1565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f74206265206772656174655f8201527f72207468616e2034302500000000000000000000000000000000000000000000602082015250565b5f613b7b602a83613044565b9150613b8682613b21565b604082019050919050565b5f6020820190508181035f830152613ba881613b6f565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f742062656c6573732020745f8201527f68616e2031250000000000000000000000000000000000000000000000000000602082015250565b5f613c09602683613044565b9150613c1482613baf565b604082019050919050565b5f6020820190508181035f830152613c3681613bfd565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613c97602583613044565b9150613ca282613c3d565b604082019050919050565b5f6020820190508181035f830152613cc481613c8b565b9050919050565b7f546f74616c2062757920666565732063616e6e6f7420626520677265617465725f8201527f207468616e203430250000000000000000000000000000000000000000000000602082015250565b5f613d25602983613044565b9150613d3082613ccb565b604082019050919050565b5f6020820190508181035f830152613d5281613d19565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613db3602683613044565b9150613dbe82613d59565b604082019050919050565b5f6020820190508181035f830152613de081613da7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613e41602483613044565b9150613e4c82613de7565b604082019050919050565b5f6020820190508181035f830152613e6e81613e35565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ecf602283613044565b9150613eda82613e75565b604082019050919050565b5f6020820190508181035f830152613efc81613ec3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613f5d602983613044565b9150613f6882613f03565b604082019050919050565b5f6020820190508181035f830152613f8a81613f51565b9050919050565b7f54726164696e67206e6f742061637469766520796574000000000000000000005f82015250565b5f613fc5601683613044565b9150613fd082613f91565b602082019050919050565b5f6020820190508181035f830152613ff281613fb9565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e740000005f82015250565b5f61402d601d83613044565b915061403882613ff9565b602082019050919050565b5f6020820190508181035f83015261405a81614021565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140bb602183613044565b91506140c682614061565b604082019050919050565b5f6020820190508181035f8301526140e8816140af565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061415781613118565b92915050565b5f60208284031215614172576141716130e4565b5b5f61417f84828501614149565b91505092915050565b5f819050919050565b5f6141ab6141a66141a184614188565b613415565b613009565b9050919050565b6141bb81614191565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6141f381613107565b82525050565b5f61420483836141ea565b60208301905092915050565b5f602082019050919050565b5f614226826141c1565b61423081856141cb565b935061423b836141db565b805f5b8381101561426b57815161425288826141f9565b975061425d83614210565b92505060018101905061423e565b5085935050505092915050565b5f60a08201905061428b5f830188613012565b61429860208301876141b2565b81810360408301526142aa818661421c565b90506142b9606083018561335d565b6142c66080830184613012565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61432a602583613044565b9150614335826142d0565b604082019050919050565b5f6020820190508181035f8301526143578161431e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143b8602383613044565b91506143c38261435e565b604082019050919050565b5f6020820190508181035f8301526143e5816143ac565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614446602683613044565b9150614451826143ec565b604082019050919050565b5f6020820190508181035f8301526144738161443a565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6144ae601d83613044565b91506144b98261447a565b602082019050919050565b5f6020820190508181035f8301526144db816144a2565b9050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61453c603a83613044565b9150614547826144e2565b604082019050919050565b5f6020820190508181035f83015261456981614530565b905091905056fea2646970667358221220edb0610162f188dceafb66d6632dfa2667366a8b6c81cf6ee4a61e863ab7dc8a64736f6c63430008160033