60806040526040516200103d3803806200103d833981016040819052620000269162000514565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f4565b60008051602062000ff68339815191521462000075576200007562000616565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f4565b60008051602062000fd683398151915214620000d357620000d362000616565b620000de8262000124565b5050506200067f565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002841760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f2565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c816200022b565b50565b6200018a81620002e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e98383604051806060016040528060278152602001620010166027913962000383565b90505b92915050565b60006200021c60008051602062000fd683398151915260001b6200046b60201b620002261760201c565b546001600160a01b0316919050565b6001600160a01b038116620002965760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bf60008051602062000fd683398151915260001b6200046b60201b620002261760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f6816200046e60201b620002b01760201c565b6200035a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028d565b80620002bf60008051602062000ff683398151915260001b6200046b60201b620002261760201c565b60606001600160a01b0384163b620003ed5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028d565b600080856001600160a01b0316856040516200040a91906200062c565b600060405180830381855af49150503d806000811462000447576040519150601f19603f3d011682016040523d82523d6000602084013e6200044c565b606091505b5090925090506200045f8282866200047d565b925050505b9392505050565b90565b6001600160a01b03163b151590565b606083156200048e57508162000464565b8251156200049f5782518084602001fd5b8160405162461bcd60e51b81526004016200028d91906200064a565b80516001600160a01b0381168114620004d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200050b578181015183820152602001620004f1565b50506000910152565b6000806000606084860312156200052a57600080fd5b6200053584620004bb565b92506200054560208501620004bb565b60408501519092506001600160401b03808211156200056357600080fd5b818601915086601f8301126200057857600080fd5b8151818111156200058d576200058d620004d8565b604051601f8201601f19908116603f01168101908382118183101715620005b857620005b8620004d8565b81604052828152896020848701011115620005d257600080fd5b620005e5836020830160208801620004ee565b80955050505050509250925092565b81810381811115620001ec57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6000825162000640818460208701620004ee565b9190910192915050565b60208152600082518060208401526200066b816040850160208701620004ee565b601f01601f19169190910160400192915050565b610947806200068f6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b6100903660046107bb565b61012d565b61006b6100a33660046107d6565b610177565b3480156100b457600080fd5b506100bd6101eb565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b6101013660046107bb565b610229565b34801561011257600080fd5b506100bd610256565b61012b6101266102cc565b6102d6565b565b6101356102fa565b73ffffffffffffffffffffffffffffffffffffffff16330361016f5761016c8160405180602001604052806000815250600061033a565b50565b61016c61011b565b61017f6102fa565b73ffffffffffffffffffffffffffffffffffffffff1633036101e3576101de8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061033a915050565b505050565b6101de61011b565b60006101f56102fa565b73ffffffffffffffffffffffffffffffffffffffff16330361021e576102196102cc565b905090565b61022661011b565b90565b6102316102fa565b73ffffffffffffffffffffffffffffffffffffffff16330361016f5761016c81610365565b60006102606102fa565b73ffffffffffffffffffffffffffffffffffffffff16330361021e576102196102fa565b60606102a983836040518060600160405280602781526020016108eb602791396103c6565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006102196104f3565b3660008037600080366000845af43d6000803e8080156102f5573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6103438361051b565b6000825111806103505750805b156101de5761035f8383610284565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61038e6102fa565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161016c81610568565b606073ffffffffffffffffffffffffffffffffffffffff84163b610471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1685604051610499919061087d565b600060405180830381855af49150503d80600081146104d4576040519150601f19603f3d011682016040523d82523d6000602084013e6104d9565b606091505b50915091506104e9828286610674565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61031e565b610524816106c7565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610468565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156106835750816102a9565b8251156106935782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104689190610899565b73ffffffffffffffffffffffffffffffffffffffff81163b61076b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610468565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61062e565b803573ffffffffffffffffffffffffffffffffffffffff811681146107b657600080fd5b919050565b6000602082840312156107cd57600080fd5b6102a982610792565b6000806000604084860312156107eb57600080fd5b6107f484610792565b9250602084013567ffffffffffffffff8082111561081157600080fd5b818601915086601f83011261082557600080fd5b81358181111561083457600080fd5b87602082850101111561084657600080fd5b6020830194508093505050509250925092565b60005b8381101561087457818101518382015260200161085c565b50506000910152565b6000825161088f818460208701610859565b9190910192915050565b60208152600082518060208401526108b8816040850160208701610859565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122015d30c2ee5641c24e37b7d4e677d5701be656ee487298e9c2a33d562fec33a5964736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000002c25243f4b76638a4a51a0e51f682bd8bf4ff6eb0000000000000000000000006fdfe1701791e38bdde726ec5bfb8e894c558c4200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000