0x60a060405234801561001057600080fd5b5061001961002a565b6001600160a01b0316608052610067565b60006040516100389061005a565b604051809103906000f080158015610054573d6000803e3d6000fd5b50905090565b6111378061071783390190565b60805161068f61008860003960008181605601526101c3015261068f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635c60da1b146100515780636a373128146100a257806393c44847146100b5578063f0118ba6146100fe575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100786100b0366004610449565b610111565b6100f16040518060400160405280600581526020017f352e372e3100000000000000000000000000000000000000000000000000000081525081565b60405161009991906104f1565b61007861010c366004610449565b61013b565b6000806000610121868686610190565b9150915061012f8282610200565b925050505b9392505050565b600080600061014b868686610190565b91509150600061015b8383610200565b905073ffffffffffffffffffffffffffffffffffffffff81163b61012f576101856000848461021c565b979650505050505050565b6000606060008585856040516020016101ab93929190610542565b604051602081830303815290604052905060006101e87f000000000000000000000000000000000000000000000000000000000000000083610380565b82516020909301929092209791965090945050505050565b8051602082012060009061021484826103f6565b949350505050565b60008347101561028d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b81516000036102f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610284565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610284565b60607f600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d738360601b7f5af43d3d93803e603457fd5bf3000000000000000000000000000000000000008485516040516020016103df9594939291906105da565b604051602081830303815290604052905092915050565b60006101348383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b80356bffffffffffffffffffffffff8116811461044457600080fd5b919050565b60008060006040848603121561045e57600080fd5b833567ffffffffffffffff8082111561047657600080fd5b818601915086601f83011261048a57600080fd5b81358181111561049957600080fd5b8760208260061b85010111156104ae57600080fd5b6020928301955093506104c49186019050610428565b90509250925092565b60005b838110156104e85781810151838201526020016104d0565b50506000910152565b60208152600082518060208401526105108160408501602087016104cd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6040808252818101849052600090856060840183805b888110156105b657833573ffffffffffffffffffffffffffffffffffffffff8116808214610584578384fd5b84525060206bffffffffffffffffffffffff6105a1868301610428565b16908401529284019291840191600101610558565b50508093505050506bffffffffffffffffffffffff83166020830152949350505050565b8581527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000851660208201527fffffffffffffffffffffffffff0000000000000000000000000000000000000084166034820152600083516106428160418501602088016104cd565b60419201918201929092526061019594505050505056fea26469706673582212206839694d3526b13e626725a7ed3a2e587dc37f6010a842f689fd29556e6d2c2c64736f6c63430008130033608060405234801561001057600080fd5b50611117806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ec29dbde11610050578063ec29dbde14610100578063ed2a2f9d14610121578063f7e83aee1461014a57600080fd5b806322a8d6fc146100775780636465e69f1461009d57806393c44847146100b7575b600080fd5b61008a610085366004610b23565b61016d565b6040519081526020015b60405180910390f35b6100a5600a81565b60405160ff9091168152602001610094565b6100f36040518060400160405280600581526020017f352e372e3100000000000000000000000000000000000000000000000000000081525081565b6040516100949190610b65565b61011361010e366004610b23565b610182565b604051610094929190610bd1565b61012d6402540be40081565b6040516bffffffffffffffffffffffff9091168152602001610094565b61015d610158366004610c5a565b6101ad565b6040519015158152602001610094565b600061017983836104bc565b90505b92915050565b6060600061018e610551565b8060200190518101906101a19190610dbd565b915091505b9250929050565b6000806101bc86868686610581565b90506000806101cb8686610182565b915091506000816bffffffffffffffffffffffff1611801561020057506402540be4006bffffffffffffffffffffffff821611155b61026b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c6964207468726573686f6c6420776569676874000000000000000060448201526064015b60405180910390fd5b6000610281835161027c8b8b61016d565b6106d9565b905060008060005b846bffffffffffffffffffffffff16826bffffffffffffffffffffffff161080156102b357508381105b15610424576000610303886102c98f8f866106ef565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061070992505050565b90505b848410801561035e575086848151811061032257610322610ec4565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156103735761036c84610f22565b9350610306565b8484106103dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c6964207369676e65720000000000000000000000000000000000006044820152606401610262565b8684815181106103ee576103ee610ec4565b602002602001015160200151836104059190610f5a565b925061041084610f22565b9350508061041d90610f22565b9050610289565b50836bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610156104ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e73756666696369656e742076616c696461746f72207765696768740000006044820152606401610262565b5060019a9950505050505050505050565b6000806104ca604484610f86565b90506104d7604182610fc8565b1561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c6964207369676e617475726573206c656e677468000000000000006044820152606401610262565b610549604182610fdc565b949350505050565b60608060203603803580820391506040519250602081018301604052808352602083018183823750919392505050565b60006106d0610590848461072d565b61059a8787610750565b6105a48888610779565b6105ae8989610789565b6105ed88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107aa92505050565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e097881b811660208084019190915260248301979097527f48595045524c414e45000000000000000000000000000000000000000000000060448301528251808303602d018152604d83018452805190880120606d830152608d8201959095529290951b90921660ad82015260b1808201929092528351808203909201825260d10190925281519101207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b95945050505050565b60008183106106e85781610179565b5090919050565b3660006106fd8585856107b5565b91509150935093915050565b600080600061071885856107fa565b915091506107258161083c565b509392505050565b600061073d600960058486610ff0565b6107469161101a565b60e01c9392505050565b6000828183610760826020611062565b60ff169261077093929190610ff0565b6101799161107b565b6000826020836107608280611062565b60008260408361079a826004611062565b60ff169261073d93929190610ff0565b805160209091012090565b366000806107c46041856110b7565b6107cf9060446110ce565b905060006107de6041836110ce565b90506107ec8183888a610ff0565b935093505050935093915050565b60008082516041036108305760208301516040840151606085015160001a610824878285856109f2565b945094505050506101a6565b506000905060026101a6565b600081600481111561085057610850610cc6565b036108585750565b600181600481111561086c5761086c610cc6565b036108d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610262565b60028160048111156108e7576108e7610cc6565b0361094e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610262565b600381600481111561096257610962610cc6565b036109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610262565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610a295750600090506003610ad8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610a7d573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610ad157600060019250925050610ad8565b9150600090505b94509492505050565b60008083601f840112610af357600080fd5b50813567ffffffffffffffff811115610b0b57600080fd5b6020830191508360208285010111156101a657600080fd5b60008060208385031215610b3657600080fd5b823567ffffffffffffffff811115610b4d57600080fd5b610b5985828601610ae1565b90969095509350505050565b600060208083528351808285015260005b81811015610b9257858101830151858201604001528201610b76565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60408082528351828201819052600091906020906060850190828801855b82811015610c38578151805173ffffffffffffffffffffffffffffffffffffffff1685528501516bffffffffffffffffffffffff16858501529285019290840190600101610bef565b5050506bffffffffffffffffffffffff95909516930192909252509092915050565b60008060008060408587031215610c7057600080fd5b843567ffffffffffffffff80821115610c8857600080fd5b610c9488838901610ae1565b90965094506020870135915080821115610cad57600080fd5b50610cba87828801610ae1565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610d4757610d47610cf5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610d9457610d94610cf5565b604052919050565b80516bffffffffffffffffffffffff81168114610db857600080fd5b919050565b6000806040808486031215610dd157600080fd5b835167ffffffffffffffff80821115610de957600080fd5b818601915086601f830112610dfd57600080fd5b8151602082821115610e1157610e11610cf5565b610e1f818360051b01610d4d565b828152818101935060069290921b840181019189831115610e3f57600080fd5b938101935b82851015610ea95785858b031215610e5c5760008081fd5b610e64610d24565b855173ffffffffffffffffffffffffffffffffffffffff81168114610e895760008081fd5b8152610e96868401610d9c565b8184015284529385019392810192610e44565b9650610eb6888201610d9c565b955050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f5357610f53610ef3565b5060010190565b6bffffffffffffffffffffffff818116838216019080821115610f7f57610f7f610ef3565b5092915050565b8181038181111561017c5761017c610ef3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610fd757610fd7610f99565b500690565b600082610feb57610feb610f99565b500490565b6000808585111561100057600080fd5b8386111561100d57600080fd5b5050820193919092039150565b7fffffffff00000000000000000000000000000000000000000000000000000000813581811691600485101561105a5780818660040360031b1b83161692505b505092915050565b60ff818116838216019081111561017c5761017c610ef3565b8035602083101561017c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b808202811582820484141761017c5761017c610ef3565b8082018082111561017c5761017c610ef356fea264697066735822122030d8a5787f0f6dc2a5353e2e638b858435ea8894a9d90a5085595285ffd5e0ba64736f6c63430008130033