0x608060405234801561000f575f5ffd5b50600436106100fe575f3560e01c806398807d8411610095578063f2fde38b11610064578063f2fde38b14610284578063fb468ac3146102a0578063fc0c546a146102aa578063ff50abdc146102c8576100fe565b806398807d84146101ea578063a5a302d31461021a578063bd8d99f414610238578063ef40a67014610254576100fe565b8063372500ab116100d1578063372500ab1461019c578063715018a6146101a65780638da5cb5b146101b05780639340c523146101ce576100fe565b8063118ab4e1146101025780631d62ebd914610120578063238a6d9e1461015057806329cc05cf14610180575b5f5ffd5b61010a6102e6565b604051610117919061146c565b60405180910390f35b61013a600480360381019061013591906114e7565b6102ec565b604051610147919061146c565b60405180910390f35b61016a600480360381019061016591906114e7565b6102fd565b604051610177919061146c565b60405180910390f35b61019a60048036038101906101959190611571565b610312565b005b6101a4610407565b005b6101ae610419565b005b6101b861042c565b6040516101c591906115d0565b60405180910390f35b6101e860048036038101906101e3919061169f565b610453565b005b61020460048036038101906101ff91906114e7565b610712565b604051610211919061146c565b60405180910390f35b610222610727565b60405161022f91906115d0565b60405180910390f35b610252600480360381019061024d91906117b9565b61074b565b005b61026e600480360381019061026991906114e7565b610760565b60405161027b919061146c565b60405180910390f35b61029e600480360381019061029991906114e7565b6107a6565b005b6102a8610828565b005b6102b2610962565b6040516102bf919061183f565b60405180910390f35b6102d0610986565b6040516102dd919061146c565b60405180910390f35b60015481565b5f6102f68261098f565b9050919050565b6005602052805f5260405f205f915090505481565b7f000000000000000000000000163ad6ac78ffe40e194310faeada8f6615942d7b73ffffffffffffffffffffffffffffffffffffffff16610351610a9d565b73ffffffffffffffffffffffffffffffffffffffff16146103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039e906118b2565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146103e2575b60016103db575b80156103f7576103f28383610aa4565b610402565b6104018383610c7b565b5b505050565b610417610412610a9d565b610e0a565b565b610421610f75565b61042a5f610ff3565b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61045b610f75565b8585905088889050146104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a9061191a565b60405180910390fd5b8383905088889050146104eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e29061191a565b60405180910390fd5b818190508888905014610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052a9061191a565b60405180910390fd5b5f5f90505b888890508110156107075786868281811061055657610555611938565b5b9050602002013560035f8b8b8581811061057357610572611938565b5b905060200201602081019061058891906114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508484828181106105d8576105d7611938565b5b9050602002013560045f8b8b858181106105f5576105f4611938565b5b905060200201602081019061060a91906114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555082828281811061065a57610659611938565b5b9050602002013560055f8b8b8581811061067757610676611938565b5b905060200201602081019061068c91906114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508686828181106106dc576106db611938565b5b9050602002013560025f8282546106f39190611992565b925050819055508080600101915050610538565b505050505050505050565b6003602052805f5260405f205f915090505481565b7f000000000000000000000000163ad6ac78ffe40e194310faeada8f6615942d7b81565b610753610f75565b8060ff1660018190555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107ae610f75565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361081c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081390611a35565b60405180910390fd5b61082581610ff3565b50565b610830610f75565b5f7f00000000000000000000000014fee680690900ba0cccfc76ad70fd1b95d10e1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161088a91906115d0565b602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190611a67565b90505f811161090d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090490611adc565b60405180910390fd5b61095f610918610a9d565b827f00000000000000000000000014fee680690900ba0cccfc76ad70fd1b95d10e1673ffffffffffffffffffffffffffffffffffffffff166110b49092919063ffffffff16565b50565b7f00000000000000000000000014fee680690900ba0cccfc76ad70fd1b95d10e1681565b5f600254905090565b5f5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054426109da9190611afa565b905060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460646301e133808360015460035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a6d9190611b2d565b610a779190611b2d565b610a819190611b9b565b610a8b9190611b9b565b610a959190611992565b915050919050565b5f33905090565b5f8111610ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610add90611c15565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d90611c7d565b60405180910390fd5b610b6f8261113a565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610bbe57610bbd82610e0a565b5b8060025f828254610bcf9190611afa565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c229190611afa565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436482604051610c6f919061146c565b60405180910390a25050565b5f8111610cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb490611c15565b60405180910390fd5b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610d44574260055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610d4d8261113a565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d999190611992565b925050819055508060025f828254610db19190611992565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c82604051610dfe919061146c565b60405180910390a25050565b610e138161113a565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90611ce5565b60405180910390fd5b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610f2382827f00000000000000000000000014fee680690900ba0cccfc76ad70fd1b95d10e1673ffffffffffffffffffffffffffffffffffffffff166110b49092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d482604051610f69919061146c565b60405180910390a25050565b610f7d610a9d565b73ffffffffffffffffffffffffffffffffffffffff16610f9b61042c565b73ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611d4d565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6111358363a9059cbb60e01b84846040516024016110d3929190611d6b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111c9565b505050565b6111438161098f565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504260055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b5f61122a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661128f9092919063ffffffff16565b90505f8151148061124b57508080602001905181019061124a9190611da6565b5b61128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190611e41565b60405180910390fd5b505050565b606061129d84845f856112a6565b90509392505050565b6060824710156112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290611ecf565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff1685876040516113139190611f3f565b5f6040518083038185875af1925050503d805f811461134d576040519150601f19603f3d011682016040523d82523d5f602084013e611352565b606091505b50915091506113638783838761136f565b92505050949350505050565b606083156113d0575f8351036113c857611388856113e3565b6113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90611f9f565b60405180910390fd5b5b8290506113db565b6113da8383611405565b5b949350505050565b5f5f8273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156114175781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b919061200f565b60405180910390fd5b5f819050919050565b61146681611454565b82525050565b5f60208201905061147f5f83018461145d565b92915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114b68261148d565b9050919050565b6114c6816114ac565b81146114d0575f5ffd5b50565b5f813590506114e1816114bd565b92915050565b5f602082840312156114fc576114fb611485565b5b5f611509848285016114d3565b91505092915050565b61151b81611454565b8114611525575f5ffd5b50565b5f8135905061153681611512565b92915050565b5f8115159050919050565b6115508161153c565b811461155a575f5ffd5b50565b5f8135905061156b81611547565b92915050565b5f5f5f6060848603121561158857611587611485565b5b5f611595868287016114d3565b93505060206115a686828701611528565b92505060406115b78682870161155d565b9150509250925092565b6115ca816114ac565b82525050565b5f6020820190506115e35f8301846115c1565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261160a576116096115e9565b5b8235905067ffffffffffffffff811115611627576116266115ed565b5b602083019150836020820283011115611643576116426115f1565b5b9250929050565b5f5f83601f84011261165f5761165e6115e9565b5b8235905067ffffffffffffffff81111561167c5761167b6115ed565b5b602083019150836020820283011115611698576116976115f1565b5b9250929050565b5f5f5f5f5f5f5f5f6080898b0312156116bb576116ba611485565b5b5f89013567ffffffffffffffff8111156116d8576116d7611489565b5b6116e48b828c016115f5565b9850985050602089013567ffffffffffffffff81111561170757611706611489565b5b6117138b828c0161164a565b9650965050604089013567ffffffffffffffff81111561173657611735611489565b5b6117428b828c0161164a565b9450945050606089013567ffffffffffffffff81111561176557611764611489565b5b6117718b828c0161164a565b92509250509295985092959890939650565b5f60ff82169050919050565b61179881611783565b81146117a2575f5ffd5b50565b5f813590506117b38161178f565b92915050565b5f602082840312156117ce576117cd611485565b5b5f6117db848285016117a5565b91505092915050565b5f819050919050565b5f6118076118026117fd8461148d565b6117e4565b61148d565b9050919050565b5f611818826117ed565b9050919050565b5f6118298261180e565b9050919050565b6118398161181f565b82525050565b5f6020820190506118525f830184611830565b92915050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f61189c600c83611858565b91506118a782611868565b602082019050919050565b5f6020820190508181035f8301526118c981611890565b9050919050565b7f6c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f611904600f83611858565b915061190f826118d0565b602082019050919050565b5f6020820190508181035f830152611931816118f8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61199c82611454565b91506119a783611454565b92508282019050808211156119bf576119be611965565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611a1f602683611858565b9150611a2a826119c5565b604082019050919050565b5f6020820190508181035f830152611a4c81611a13565b9050919050565b5f81519050611a6181611512565b92915050565b5f60208284031215611a7c57611a7b611485565b5b5f611a8984828501611a53565b91505092915050565b7f4e6f20726573696475616c2042616c616e636520746f207769746864726177005f82015250565b5f611ac6601f83611858565b9150611ad182611a92565b602082019050919050565b5f6020820190508181035f830152611af381611aba565b9050919050565b5f611b0482611454565b9150611b0f83611454565b9250828203905081811115611b2757611b26611965565b5b92915050565b5f611b3782611454565b9150611b4283611454565b9250828202611b5081611454565b91508282048414831517611b6757611b66611965565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611ba582611454565b9150611bb083611454565b925082611bc057611bbf611b6e565b5b828204905092915050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f611bff601d83611858565b9150611c0a82611bcb565b602082019050919050565b5f6020820190508181035f830152611c2c81611bf3565b9050919050565b7f416d6f756e7420686967686572207468616e207374616b6564416d6f756e74005f82015250565b5f611c67601f83611858565b9150611c7282611c33565b602082019050919050565b5f6020820190508181035f830152611c9481611c5b565b9050919050565b7f4e6f7468696e6720746f20636c61696d000000000000000000000000000000005f82015250565b5f611ccf601083611858565b9150611cda82611c9b565b602082019050919050565b5f6020820190508181035f830152611cfc81611cc3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611d37602083611858565b9150611d4282611d03565b602082019050919050565b5f6020820190508181035f830152611d6481611d2b565b9050919050565b5f604082019050611d7e5f8301856115c1565b611d8b602083018461145d565b9392505050565b5f81519050611da081611547565b92915050565b5f60208284031215611dbb57611dba611485565b5b5f611dc884828501611d92565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f611e2b602a83611858565b9150611e3682611dd1565b604082019050919050565b5f6020820190508181035f830152611e5881611e1f565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f611eb9602683611858565b9150611ec482611e5f565b604082019050919050565b5f6020820190508181035f830152611ee681611ead565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f611f1982611eed565b611f238185611ef7565b9350611f33818560208601611f01565b80840191505092915050565b5f611f4a8284611f0f565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f611f89601d83611858565b9150611f9482611f55565b602082019050919050565b5f6020820190508181035f830152611fb681611f7d565b9050919050565b5f81519050919050565b5f601f19601f8301169050919050565b5f611fe182611fbd565b611feb8185611858565b9350611ffb818560208601611f01565b61200481611fc7565b840191505092915050565b5f6020820190508181035f8301526120278184611fd7565b90509291505056fea26469706673582212204dca856e5f4bbdab21edeca1d25d798968fc6ee7a410a1b0e0f8156360de238964736f6c634300081e0033
0x60c060405234801561000f575f5ffd5b5060405161234a38038061234a83398181016040528101906100319190610258565b61004d6100426100c460201b60201c565b6100cb60201b60201c565b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050806001819055505050506102a8565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101b982610190565b9050919050565b6101c9816101af565b81146101d3575f5ffd5b50565b5f815190506101e4816101c0565b92915050565b5f6101f4826101af565b9050919050565b610204816101ea565b811461020e575f5ffd5b50565b5f8151905061021f816101fb565b92915050565b5f819050919050565b61023781610225565b8114610241575f5ffd5b50565b5f815190506102528161022e565b92915050565b5f5f5f6060848603121561026f5761026e61018c565b5b5f61027c868287016101d6565b935050602061028d86828701610211565b925050604061029e86828701610244565b9150509250925092565b60805160a0516120656102e55f395f81816108330152818161091b015281816109640152610edf01525f8181610314015261072901526120655ff3fe608060405234801561000f575f5ffd5b50600436106100fe575f3560e01c806398807d8411610095578063f2fde38b11610064578063f2fde38b14610284578063fb468ac3146102a0578063fc0c546a146102aa578063ff50abdc146102c8576100fe565b806398807d84146101ea578063a5a302d31461021a578063bd8d99f414610238578063ef40a67014610254576100fe565b8063372500ab116100d1578063372500ab1461019c578063715018a6146101a65780638da5cb5b146101b05780639340c523146101ce576100fe565b8063118ab4e1146101025780631d62ebd914610120578063238a6d9e1461015057806329cc05cf14610180575b5f5ffd5b61010a6102e6565b604051610117919061146c565b60405180910390f35b61013a600480360381019061013591906114e7565b6102ec565b604051610147919061146c565b60405180910390f35b61016a600480360381019061016591906114e7565b6102fd565b604051610177919061146c565b60405180910390f35b61019a60048036038101906101959190611571565b610312565b005b6101a4610407565b005b6101ae610419565b005b6101b861042c565b6040516101c591906115d0565b60405180910390f35b6101e860048036038101906101e3919061169f565b610453565b005b61020460048036038101906101ff91906114e7565b610712565b604051610211919061146c565b60405180910390f35b610222610727565b60405161022f91906115d0565b60405180910390f35b610252600480360381019061024d91906117b9565b61074b565b005b61026e600480360381019061026991906114e7565b610760565b60405161027b919061146c565b60405180910390f35b61029e600480360381019061029991906114e7565b6107a6565b005b6102a8610828565b005b6102b2610962565b6040516102bf919061183f565b60405180910390f35b6102d0610986565b6040516102dd919061146c565b60405180910390f35b60015481565b5f6102f68261098f565b9050919050565b6005602052805f5260405f205f915090505481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610351610a9d565b73ffffffffffffffffffffffffffffffffffffffff16146103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039e906118b2565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146103e2575b60016103db575b80156103f7576103f28383610aa4565b610402565b6104018383610c7b565b5b505050565b610417610412610a9d565b610e0a565b565b610421610f75565b61042a5f610ff3565b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61045b610f75565b8585905088889050146104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a9061191a565b60405180910390fd5b8383905088889050146104eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e29061191a565b60405180910390fd5b818190508888905014610533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052a9061191a565b60405180910390fd5b5f5f90505b888890508110156107075786868281811061055657610555611938565b5b9050602002013560035f8b8b8581811061057357610572611938565b5b905060200201602081019061058891906114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508484828181106105d8576105d7611938565b5b9050602002013560045f8b8b858181106105f5576105f4611938565b5b905060200201602081019061060a91906114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555082828281811061065a57610659611938565b5b9050602002013560055f8b8b8581811061067757610676611938565b5b905060200201602081019061068c91906114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508686828181106106dc576106db611938565b5b9050602002013560025f8282546106f39190611992565b925050819055508080600101915050610538565b505050505050505050565b6003602052805f5260405f205f915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b610753610f75565b8060ff1660018190555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107ae610f75565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361081c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081390611a35565b60405180910390fd5b61082581610ff3565b50565b610830610f75565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161088a91906115d0565b602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190611a67565b90505f811161090d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090490611adc565b60405180910390fd5b61095f610918610a9d565b827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110b49092919063ffffffff16565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054426109da9190611afa565b905060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460646301e133808360015460035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a6d9190611b2d565b610a779190611b2d565b610a819190611b9b565b610a8b9190611b9b565b610a959190611992565b915050919050565b5f33905090565b5f8111610ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610add90611c15565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d90611c7d565b60405180910390fd5b610b6f8261113a565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610bbe57610bbd82610e0a565b5b8060025f828254610bcf9190611afa565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c229190611afa565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436482604051610c6f919061146c565b60405180910390a25050565b5f8111610cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb490611c15565b60405180910390fd5b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610d44574260055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610d4d8261113a565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d999190611992565b925050819055508060025f828254610db19190611992565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c82604051610dfe919061146c565b60405180910390a25050565b610e138161113a565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90611ce5565b60405180910390fd5b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610f2382827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110b49092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d482604051610f69919061146c565b60405180910390a25050565b610f7d610a9d565b73ffffffffffffffffffffffffffffffffffffffff16610f9b61042c565b73ffffffffffffffffffffffffffffffffffffffff1614610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611d4d565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6111358363a9059cbb60e01b84846040516024016110d3929190611d6b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111c9565b505050565b6111438161098f565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055504260055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b5f61122a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661128f9092919063ffffffff16565b90505f8151148061124b57508080602001905181019061124a9190611da6565b5b61128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128190611e41565b60405180910390fd5b505050565b606061129d84845f856112a6565b90509392505050565b6060824710156112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290611ecf565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff1685876040516113139190611f3f565b5f6040518083038185875af1925050503d805f811461134d576040519150601f19603f3d011682016040523d82523d5f602084013e611352565b606091505b50915091506113638783838761136f565b92505050949350505050565b606083156113d0575f8351036113c857611388856113e3565b6113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90611f9f565b60405180910390fd5b5b8290506113db565b6113da8383611405565b5b949350505050565b5f5f8273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156114175781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b919061200f565b60405180910390fd5b5f819050919050565b61146681611454565b82525050565b5f60208201905061147f5f83018461145d565b92915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114b68261148d565b9050919050565b6114c6816114ac565b81146114d0575f5ffd5b50565b5f813590506114e1816114bd565b92915050565b5f602082840312156114fc576114fb611485565b5b5f611509848285016114d3565b91505092915050565b61151b81611454565b8114611525575f5ffd5b50565b5f8135905061153681611512565b92915050565b5f8115159050919050565b6115508161153c565b811461155a575f5ffd5b50565b5f8135905061156b81611547565b92915050565b5f5f5f6060848603121561158857611587611485565b5b5f611595868287016114d3565b93505060206115a686828701611528565b92505060406115b78682870161155d565b9150509250925092565b6115ca816114ac565b82525050565b5f6020820190506115e35f8301846115c1565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261160a576116096115e9565b5b8235905067ffffffffffffffff811115611627576116266115ed565b5b602083019150836020820283011115611643576116426115f1565b5b9250929050565b5f5f83601f84011261165f5761165e6115e9565b5b8235905067ffffffffffffffff81111561167c5761167b6115ed565b5b602083019150836020820283011115611698576116976115f1565b5b9250929050565b5f5f5f5f5f5f5f5f6080898b0312156116bb576116ba611485565b5b5f89013567ffffffffffffffff8111156116d8576116d7611489565b5b6116e48b828c016115f5565b9850985050602089013567ffffffffffffffff81111561170757611706611489565b5b6117138b828c0161164a565b9650965050604089013567ffffffffffffffff81111561173657611735611489565b5b6117428b828c0161164a565b9450945050606089013567ffffffffffffffff81111561176557611764611489565b5b6117718b828c0161164a565b92509250509295985092959890939650565b5f60ff82169050919050565b61179881611783565b81146117a2575f5ffd5b50565b5f813590506117b38161178f565b92915050565b5f602082840312156117ce576117cd611485565b5b5f6117db848285016117a5565b91505092915050565b5f819050919050565b5f6118076118026117fd8461148d565b6117e4565b61148d565b9050919050565b5f611818826117ed565b9050919050565b5f6118298261180e565b9050919050565b6118398161181f565b82525050565b5f6020820190506118525f830184611830565b92915050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f61189c600c83611858565b91506118a782611868565b602082019050919050565b5f6020820190508181035f8301526118c981611890565b9050919050565b7f6c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f611904600f83611858565b915061190f826118d0565b602082019050919050565b5f6020820190508181035f830152611931816118f8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61199c82611454565b91506119a783611454565b92508282019050808211156119bf576119be611965565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611a1f602683611858565b9150611a2a826119c5565b604082019050919050565b5f6020820190508181035f830152611a4c81611a13565b9050919050565b5f81519050611a6181611512565b92915050565b5f60208284031215611a7c57611a7b611485565b5b5f611a8984828501611a53565b91505092915050565b7f4e6f20726573696475616c2042616c616e636520746f207769746864726177005f82015250565b5f611ac6601f83611858565b9150611ad182611a92565b602082019050919050565b5f6020820190508181035f830152611af381611aba565b9050919050565b5f611b0482611454565b9150611b0f83611454565b9250828203905081811115611b2757611b26611965565b5b92915050565b5f611b3782611454565b9150611b4283611454565b9250828202611b5081611454565b91508282048414831517611b6757611b66611965565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611ba582611454565b9150611bb083611454565b925082611bc057611bbf611b6e565b5b828204905092915050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f611bff601d83611858565b9150611c0a82611bcb565b602082019050919050565b5f6020820190508181035f830152611c2c81611bf3565b9050919050565b7f416d6f756e7420686967686572207468616e207374616b6564416d6f756e74005f82015250565b5f611c67601f83611858565b9150611c7282611c33565b602082019050919050565b5f6020820190508181035f830152611c9481611c5b565b9050919050565b7f4e6f7468696e6720746f20636c61696d000000000000000000000000000000005f82015250565b5f611ccf601083611858565b9150611cda82611c9b565b602082019050919050565b5f6020820190508181035f830152611cfc81611cc3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611d37602083611858565b9150611d4282611d03565b602082019050919050565b5f6020820190508181035f830152611d6481611d2b565b9050919050565b5f604082019050611d7e5f8301856115c1565b611d8b602083018461145d565b9392505050565b5f81519050611da081611547565b92915050565b5f60208284031215611dbb57611dba611485565b5b5f611dc884828501611d92565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f611e2b602a83611858565b9150611e3682611dd1565b604082019050919050565b5f6020820190508181035f830152611e5881611e1f565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f611eb9602683611858565b9150611ec482611e5f565b604082019050919050565b5f6020820190508181035f830152611ee681611ead565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f611f1982611eed565b611f238185611ef7565b9350611f33818560208601611f01565b80840191505092915050565b5f611f4a8284611f0f565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f611f89601d83611858565b9150611f9482611f55565b602082019050919050565b5f6020820190508181035f830152611fb681611f7d565b9050919050565b5f81519050919050565b5f601f19601f8301169050919050565b5f611fe182611fbd565b611feb8185611858565b9350611ffb818560208601611f01565b61200481611fc7565b840191505092915050565b5f6020820190508181035f8301526120278184611fd7565b90509291505056fea26469706673582212204dca856e5f4bbdab21edeca1d25d798968fc6ee7a410a1b0e0f8156360de238964736f6c634300081e0033000000000000000000000000163ad6ac78ffe40e194310faeada8f6615942d7b00000000000000000000000014fee680690900ba0cccfc76ad70fd1b95d10e16000000000000000000000000000000000000000000000000000000000000000a