0x60e06040523480156200001157600080fd5b50604051620040ca380380620040ca8339810160408190526200003491620002fc565b600160005584848484846001600160a01b0385166200009a5760405162461bcd60e51b815260206004820152601a60248201527f6869676820746f6b656e2061646472657373206e6f742073657400000000000060448201526064015b60405180910390fd5b6001600160a01b038416620000f25760405162461bcd60e51b815260206004820152601d60248201527f4849474820506f6f6c206663742061646472657373206e6f7420736574000000604482015260640162000091565b6001600160a01b0383166200014a5760405162461bcd60e51b815260206004820152601a60248201527f706f6f6c20746f6b656e2061646472657373206e6f7420736574000000000000604482015260640162000091565b43821015620001915760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420696e697420626c6f636b60701b604482015260640162000091565b60008111620001e35760405162461bcd60e51b815260206004820152601360248201527f706f6f6c20776569676874206e6f742073657400000000000000000000000000604482015260640162000091565b836001600160a01b031663f70b7fce6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000248919062000361565b7f484a992416a6637667452c709058dccce100b22b278536f5a6d25a14b6a1acdb14620002b85760405162461bcd60e51b815260206004820152601660248201527f756e657870656374656420464143544f52595f55494400000000000000000000604482015260640162000091565b6001600160a01b0394851660805292841660a052921660c052600255600355506200037b9350505050565b6001600160a01b0381168114620002f957600080fd5b50565b600080600080600060a086880312156200031557600080fd5b85516200032281620002e3565b60208701519095506200033581620002e3565b60408701519094506200034881620002e3565b6060870151608090970151959894975095949392505050565b6000602082840312156200037457600080fd5b5051919050565b60805160a05160c051613c38620004926000396000818161046301528181610d6101528181610ef801528181611c300152818161238e0152818161248f01528181612a9601528181612b470152818161353c015261356801526000818161043c01528181610854015281816109040152818161098601528181610e0d015281816111a00152818161152d015281816116a701528181611889015281816119100152818161198601528181611a5701528181611add015281816126d90152818161310d015261326f0152600081816103f401528181610d3701528181610ece01528181611c060152818161201d0152818161229d01528181612364015281816124b2015281816126ae015261330a0152613c386000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80639e2c8a5b1161012a578063ce111541116100bd578063fa213bd61161008c578063fc1711f211610071578063fc1711f2146104e6578063fc27076f146104f9578063fff6cae91461050c57600080fd5b8063fa213bd6146104ca578063fbfa77cf146104d357600080fd5b8063ce11154114610485578063db2e21bc1461048e578063e8d3cad514610496578063f9fc0d07146104c257600080fd5b8063b73974a1116100f9578063b73974a1146103ef578063beb0ed6c1461042e578063c45a015514610437578063cbdf382c1461045e57600080fd5b80639e2c8a5b1461035c578063a156dc281461036f578063a1aab33f14610382578063a87430ba1461038b57600080fd5b806344cc892d116101a257806370a082311161017157806370a08231146102fa5780638ce44855146103235780638e169d4714610336578063952e68cf1461034957600080fd5b806344cc892d146102c85780634ce0f9a6146102db57806357e871e7146102e15780636817031b146102e757600080fd5b80631da10d91116101de5780631da10d91146102745780632726b5061461028c57806329eb5f2c146102ac5780633021a560146102b557600080fd5b8063054723581461021057806315188a1b1461022c578063159302fe146102415780631984db9914610261575b600080fd5b61021960075481565b6040519081526020015b60405180910390f35b61023f61023a3660046137cf565b610514565b005b61025461024f366004613821565b61061b565b604051610223919061384d565b61021961026f3660046138d8565b610830565b61027c600081565b6040519015158152602001610223565b61029f61029a366004613821565b610b7d565b60405161022391906138f5565b61021960035481565b61023f6102c3366004613940565b610c52565b61023f6102d6366004613821565b610ddf565b42610219565b43610219565b61023f6102f53660046138d8565b611194565b6102196103083660046138d8565b6001600160a01b031660009081526001602052604090205490565b6102196103313660046138d8565b61134f565b610219610344366004613959565b6113b7565b61023f6103573660046137cf565b6113e9565b61023f61036a366004613959565b61144c565b61021961037d366004613959565b6114af565b61021960025481565b6103c76103993660046138d8565b6001602081905260009182526040909120805491810154600282015460038301546004909301549192909185565b604080519586526020860194909452928401919091526060830152608082015260a001610223565b6104167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610223565b61021960055481565b6104167f000000000000000000000000000000000000000000000000000000000000000081565b6104167f000000000000000000000000000000000000000000000000000000000000000081565b61021960085481565b61023f6114d0565b6102196104a43660046138d8565b6001600160a01b031660009081526001602052604090206005015490565b61023f61160a565b61021960045481565b600654610416906001600160a01b031681565b61023f6104f4366004613940565b61169c565b6102196105073660046138d8565b611755565b61023f61187d565b6002600054141561056c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081553381526001602052604081206005018054849081106105945761059461397b565b906000526020600020906003020160000154116105f35760405162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e740000000000000000000000000000000000006044820152606401610563565b6105fb611887565b610606336000611bed565b50610612338383611c7b565b50506001600055565b6060600061062a6014846139d9565b90506000601461063b856001613a16565b61064591906139d9565b6001600160a01b038616600090815260016020526040902060050154909150601490610672908490613a2e565b8211156106a4576001600160a01b03861660009081526001602052604090206005015491506106a18383613a2e565b90505b60008167ffffffffffffffff8111156106bf576106bf613a45565b60405190808252806020026020018201604052801561073657816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106dd5790505b509050835b83811015610823576001600160a01b03881660009081526001602052604090206005018054829081106107705761077061397b565b60009182526020918290206040805160a0810182526003939093029091018054835260018101549383019390935260029092015467ffffffffffffffff80821693830193909352680100000000000000008104909216606082015270010000000000000000000000000000000090910460ff1615156080820152826107f58784613a2e565b815181106108055761080561397b565b6020026020010181905250808061081b90613a74565b91505061073b565b5093505050505b92915050565b60008060035461083d4390565b11801561084b575060055415155b15610a4c5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663083c63236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d49190613aad565b905060008143116108f1576003546108ec9043613a2e565b6108fe565b6003546108fe9083613a2e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396c82e576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109849190613aad565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630dd792a36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190613aad565b600254610a1390856139d9565b610a1d91906139d9565b610a279190613ac6565b9050600454610a38826005546114af565b610a429190613a16565b9350505050610a51565b506004545b6001600160a01b0383166000908152600160208181526040808420815160c0810183528154815293810154848401526002810154848301526003810154606085015260048101546080850152600581018054835181860281018601909452808452919360a08601939290879084015b82821015610b4b5760008481526020908190206040805160a08101825260038602909201805483526001808201548486015260029091015467ffffffffffffffff80821693850193909352680100000000000000008104909216606084015270010000000000000000000000000000000090910460ff16151560808301529083529092019101610ac0565b5050505081525050905060008160600151610b6a8360400151856113b7565b610b749190613a2e565b95945050505050565b6040805160a0810182526000808252602080830182905282840182905260608301829052608083018290526001600160a01b03861682526001905291909120600501805483908110610bd157610bd161397b565b60009182526020918290206040805160a0810182526003939093029091018054835260018101549383019390935260029092015467ffffffffffffffff80821693830193909352680100000000000000008104909216606082015270010000000000000000000000000000000090910460ff16151560808201529392505050565b6006546001600160a01b03163314610cac5760405162461bcd60e51b815260206004820152600d60248201527f6163636573732064656e696564000000000000000000000000000000000000006044820152606401610563565b80610cb45750565b600060055411610d065760405162461bcd60e51b815260206004820152601360248201527f7a65726f206c6f636b696e6720776569676874000000000000000000000000006044820152606401610563565b610d11333083612018565b610d1d816005546114af565b60076000828254610d2e9190613a16565b925050819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415610da7578060086000828254610da19190613a16565b90915550505b60405181815233907fe1745dfad8f400852fcec0e4b23dabb3b55a98c67df52ee99c5385887277d72f9060200160405180910390a250565b6040517f1e1c6a070000000000000000000000000000000000000000000000000000000081523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631e1c6a0790602401602060405180830381865afa158015610e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e809190613b01565b610ecc5760405162461bcd60e51b815260206004820152600d60248201527f6163636573732064656e696564000000000000000000000000000000000000006044820152606401610563565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610f6d5760405162461bcd60e51b815260206004820152601360248201527f6e6f74204849474820746f6b656e20706f6f6c000000000000000000000000006044820152606401610563565b610f75611887565b6001600160a01b0382166000908152600160205260409020805415610fa157610f9f836000611bed565b505b6000610fb869d3c21bcecceda100000060026139d9565b610fc290846139d9565b905060006040518060a00160405280858152602001838152602001610fe44290565b67ffffffffffffffff168152602001611001426301e13380613a16565b67ffffffffffffffff1681526020016001151581525090508383600001600082825461102d9190613a16565b92505081905550838360010160008282546110489190613a16565b92505081905550818360020160008282546110639190613a16565b9091555050600580840180546001818101835560009283526020808420865160039094020192835585015190820155604084015160029091018054606086015160808701511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff67ffffffffffffffff92831668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941692909516919091179190911792909216919091179055815484929190611140908490613a16565b9250508190555061115783600201546004546113b7565b6003840155600283015460075461116e91906113b7565b836004018190555083600860008282546111889190613a16565b90915550505050505050565b336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112209190613b23565b6001600160a01b0316146112765760405162461bcd60e51b815260206004820152600d60248201527f6163636573732064656e696564000000000000000000000000000000000000006044820152606401610563565b6001600160a01b0381166112cc5760405162461bcd60e51b815260206004820152600a60248201527f7a65726f20696e707574000000000000000000000000000000000000000000006044820152606401610563565b600654604080516001600160a01b039283168152918316602083015233917f2afec66505e0ceed692012e3833f6609d4933ded34732135bc05f28423744065910160405180910390a2600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526001602052604081206005015461137757506000919050565b6001600160a01b0382166000908152600160208190526040909120600501546014916113a291613a2e565b6113ac9190613ac6565b61082a906001613a16565b600073af298d050e4395d69670b12b7f410000000000006113d883856139d9565b6113e29190613ac6565b9392505050565b6002600054141561143c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610563565b6002600055610612338383612049565b6002600054141561149f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610563565b60026000556106123383836120a3565b6000816113d873af298d050e4395d69670b12b7f41000000000000856139d9565b600260005414156115235760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610563565b60026000819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396c82e576040518163ffffffff1660e01b8152600401602060405180830381865afa158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ad9190613aad565b156115fa5760405162461bcd60e51b815260206004820152601060248201527f746f74616c57656967687420213d2030000000000000000000000000000000006044820152606401610563565b611603336121f3565b6001600055565b6002600054141561165d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610563565b600260005561166d336001611bed565b50336000908152600160205260409020600281015460075461168f91906113b7565b6004909101556001600055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117145760405162461bcd60e51b815260206004820152600d60248201527f6163636573732064656e696564000000000000000000000000000000000000006044820152606401610563565b60025460408051918252602082018390527feccc307e0774400debaff53f391632f50be57f2e34a80bc9dd2005f05ada1822910160405180910390a1600255565b6001600160a01b0381166000908152600160208181526040808420815160c0810183528154815293810154848401526002810154848301526003810154606085015260048101546080850152600581018054835181860281018601909452808452869594929360a086019390929190879084015b828210156118545760008481526020908190206040805160a08101825260038602909201805483526001808201548486015260029091015467ffffffffffffffff80821693850193909352680100000000000000008104909216606084015270010000000000000000000000000000000090910460ff161515608083015290835290920191016117c9565b50505050815250509050806080015161187382604001516007546113b7565b6113e29190613a2e565b611885611887565b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639f1dc9bd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119099190613b01565b15611982577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639bb24f426040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561196957600080fd5b505af115801561197d573d6000803e3d6000fd5b505050505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663083c63236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a069190613aad565b90508060035410611a145750565b6003544311611a205750565b600554611a2e574360035550565b6000814311611a3d5743611a3f565b815b9050600060035482611a519190613a2e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630dd792a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190613aad565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396c82e576040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613aad565b600254611b6a84866139d9565b611b7491906139d9565b611b7e9190613ac6565b9050611b8c816005546114af565b60046000828254611b9d9190613a16565b90915550506003849055600454604080519182526020820186905233917f36309afb5bc3cb961bad5b8ed6bac225928c484ec2bb2dde9a95506708a4fde991015b60405180910390a25050505050565b6000611bf88361223e565b611c02838361244b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141561082a578060086000828254611c709190613a16565b909155505092915050565b428167ffffffffffffffff1611611cd45760405162461bcd60e51b815260206004820152601c60248201527f6c6f636b2073686f756c6420626520696e2074686520667574757265000000006044820152606401610563565b6001600160a01b038316600090815260016020526040812060058101805491929185908110611d0557611d0561397b565b906000526020600020906003020190508060020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168367ffffffffffffffff1611611d905760405162461bcd60e51b815260206004820152601060248201527f696e76616c6964206e6577206c6f636b000000000000000000000000000000006044820152606401610563565b600281015467ffffffffffffffff16611e45576301e13380611dbc4267ffffffffffffffff8616613a2e565b1115611e0a5760405162461bcd60e51b815260206004820152601b60248201527f6d6178206c6f636b20706572696f6420697320333635206461797300000000006044820152606401610563565b6002810180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff16179055611ebc565b60028101546301e1338090611e649067ffffffffffffffff1685613b40565b67ffffffffffffffff161115611ebc5760405162461bcd60e51b815260206004820152601b60248201527f6d6178206c6f636b20706572696f6420697320333635206461797300000000006044820152606401610563565b60028101805467ffffffffffffffff808616680100000000000000009081027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff84168117948590558554600095909469d3c21bcecceda1000000946301e13380948694611f359490831693831693909317920416613b40565b67ffffffffffffffff16611f4991906139d9565b611f539190613ac6565b611f5d9190613a16565b611f6791906139d9565b600183018054908290556002850154919250908290611f87908390613a2e565b611f919190613a16565b60028501556005548290611fa6908390613a2e565b611fb09190613a16565b60055560028301546040805188815267ffffffffffffffff9283166020820152918716908201526001600160a01b038816907f85daa0d8a4afa74e5bd57c0f5d2cddf52920ec882a02b8d3f646c972b4cfb6b49060600160405180910390a250505050505050565b6120447f000000000000000000000000000000000000000000000000000000000000000084848461287e565b505050565b612054838383612953565b6001600160a01b0383166000908152600160205260409020600281015460075461207e91906113b7565b816004018190555082600860008282546120989190613a16565b909155505050505050565b6001600160a01b0383166000908152600160205260408120600581018054919291859081106120d4576120d461397b565b60009182526020918290206040805160a08101825260039093029091018054835260018101549383019390935260029092015467ffffffffffffffff80821693830184905268010000000000000000820416606083015260ff7001000000000000000000000000000000009091041615156080820152915015806121655750606081015167ffffffffffffffff1642115b6121b15760405162461bcd60e51b815260206004820152601860248201527f6465706f736974206e6f742079657420756e6c6f636b656400000000000000006044820152606401610563565b82600860008282546121c39190613a2e565b909155506121d49050858585612e23565b6121e482600201546007546113b7565b82600401819055505050505050565b6001600160a01b038116600090815260016020526040812080546008805492939192839290612223908490613a2e565b909155506122329050836131ca565b50600060049091015550565b6001600160a01b03811660009081526001602052604081209061226083611755565b90508061226c57505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190613aad565b9050818110156123625760405162461bcd60e51b815260206004820152601d60248201527f636f6e747261637420484947482062616c616e636520746f6f206c6f770000006044820152606401610563565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156123e65760085482116123cb57816123cf565b6008545b600860008282546123e09190613a2e565b90915550505b6123f683600201546007546113b7565b60048401556124058483613305565b6040518281526001600160a01b0385169033907f291d65ce1109b491b8b6540dabe662b3478f4c808f76bb4130c3f7afa2fab59c9060200160405180910390a350505050565b6000811561245b5761245b611887565b61246483613334565b9050806124735750600061082a565b6001600160a01b038084166000908152600160205260409020907f000000000000000000000000000000000000000000000000000000000000000081167f0000000000000000000000000000000000000000000000000000000000000000909116141561267e5760006124f169d3c21bcecceda100000060026139d9565b6124fb90846139d9565b905060006040518060a0016040528085815260200183815260200161251d4290565b67ffffffffffffffff16815260200161253a426301e13380613a16565b67ffffffffffffffff9081168252600160209283018190526005870180548083018255600091825284822086516003909202019081559385015191840191909155604084015160029093018054606086015160808701511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff91861668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909316969095169590951717939093169190911790915584549192508591859190612622908490613a16565b925050819055508383600101600082825461263d9190613a16565b92505081905550818360020160008282546126589190613a16565b9250508190555081600560008282546126719190613a16565b9091555061281b92505050565b6040517f1228cbee0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690631228cbee90602401602060405180830381865afa158015612722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127469190613b23565b90506001600160a01b03811661279e5760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964206869676820706f6f6c2061646472657373000000000000006044820152606401610563565b6040517f44cc892d0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018590528216906344cc892d90604401600060405180830381600087803b15801561280157600080fd5b505af1158015612815573d6000803e3d6000fd5b50505050505b82156128375761283181600201546004546113b7565b60038201555b6040518281526001600160a01b0385169033907ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd79060200160405180910390a35092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261294d9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613452565b50505050565b600082116129a35760405162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e740000000000000000000000000000000000000000006044820152606401610563565b67ffffffffffffffff811615806129e55750428167ffffffffffffffff161180156129e557506301e133806129e24267ffffffffffffffff8416613a2e565b11155b612a315760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206c6f636b20696e74657276616c00000000000000000000006044820152606401610563565b612a39611887565b6001600160a01b0383166000908152600160205260409020805415612a6557612a63846000611bed565b505b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b099190613aad565b9050612b16333086613537565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bba9190613aad565b90506000612bc88383613a2e565b90506000808667ffffffffffffffff1611612be4576000612be6565b425b90508560008369d3c21bcecceda10000006301e1338081612c078787613b40565b67ffffffffffffffff16612c1b91906139d9565b612c259190613ac6565b612c2f9190613a16565b612c3991906139d9565b905060008111612c8b5760405162461bcd60e51b815260206004820152601360248201527f696e76616c6964207374616b65576569676874000000000000000000000000006044820152606401610563565b6040805160a081018252858152602080820184815267ffffffffffffffff8088169484019485528681166060850190815260006080860181815260058f018054600181810183559184529683208851600390980201968755945194860194909455955160029094018054915193511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff94841668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909316959093169490941717919091161790558854909186918a9190612d85908490613a16565b9250508190555081886002016000828254612da09190613a16565b92505081905550612db788600201546004546113b7565b88600301819055508160056000828254612dd19190613a16565b90915550506040518581526001600160a01b038c169033907f5dac0c1b1112564a045ba943c9d50270893e8e826c49be8e7073adc713ab7bd79060200160405180910390a35050505050505050505050565b60008111612e735760405162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e740000000000000000000000000000000000000000006044820152606401610563565b6001600160a01b038316600090815260016020526040812060058101805491929185908110612ea457612ea461397b565b6000918252602090912060039091020160028101548154919250700100000000000000000000000000000000900460ff1690841115612f255760405162461bcd60e51b815260206004820152601460248201527f616d6f756e742065786365656473207374616b650000000000000000000000006044820152606401610563565b612f2d611887565b612f38866000611bed565b5060018201548254600090612f4e908790613a2e565b600285015469d3c21bcecceda1000000906301e13380908290612f8a9067ffffffffffffffff8082169168010000000000000000900416613b40565b67ffffffffffffffff16612f9e91906139d9565b612fa89190613ac6565b612fb29190613a16565b612fbc91906139d9565b8454909150612fcc908790613a2e565b61302d57846005018781548110612fe557612fe561397b565b600091825260208220600390910201818155600181019190915560020180547fffffffffffffffffffffffffffffff000000000000000000000000000000000016905561304e565b858460000160008282546130419190613a2e565b9091555050600184018190555b858560000160008282546130629190613a2e565b909155505060028501548190613079908490613a2e565b6130839190613a16565b6002860181905560045461309791906113b7565b600386015560055481906130ac908490613a2e565b6130b69190613a16565b600555821561317657858560010160008282546130d39190613a2e565b90915550506040517fe14bdb71000000000000000000000000000000000000000000000000000000008152336004820152602481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14bdb7190604401600060405180830381600087803b15801561315957600080fd5b505af115801561316d573d6000803e3d6000fd5b50505050613180565b6131803387613563565b6040518681526001600160a01b0389169033907fd8654fcc8cf5b36d30b3f5e4688fc78118e6d68de60b9994e09902268b57c3e39060200160405180910390a35050505050505050565b6001600160a01b03811660009081526001602081905260408220600281018054825493830180548685559086905591859055600383018590559193919291613216906005860190613762565b826005546132249190613a2e565b60055561323a336132358385613a2e565b613563565b6040517fe14bdb71000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e14bdb7190604401600060405180830381600087803b1580156132bb57600080fd5b505af11580156132cf573d6000803e3d6000fd5b50506040518481523392507f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd96959150602001611bde565b6133307f0000000000000000000000000000000000000000000000000000000000000000838361358a565b5050565b6001600160a01b0381166000908152600160208181526040808420815160c0810183528154815293810154848401526002810154848301526003810154606085015260048101546080850152600581018054835181860281018601909452808452869594929360a086019390929190879084015b828210156134335760008481526020908190206040805160a08101825260038602909201805483526001808201548486015260029091015467ffffffffffffffff80821693850193909352680100000000000000008104909216606084015270010000000000000000000000000000000090910460ff161515608083015290835290920191016133a8565b50505050815250509050806060015161187382604001516004546113b7565b60006134a7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135d39092919063ffffffff16565b80519091501561204457808060200190518101906134c59190613b01565b6120445760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610563565b6120447f000000000000000000000000000000000000000000000000000000000000000084848461287e565b6133307f000000000000000000000000000000000000000000000000000000000000000083835b6040516001600160a01b0383166024820152604481018290526120449084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016128cb565b60606135e284846000856135ea565b949350505050565b6060824710156136625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610563565b843b6136b05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610563565b600080866001600160a01b031685876040516136cc9190613b95565b60006040518083038185875af1925050503d8060008114613709576040519150601f19603f3d011682016040523d82523d6000602084013e61370e565b606091505b509150915061371e828286613729565b979650505050505050565b606083156137385750816113e2565b8251156137485782518084602001fd5b8160405162461bcd60e51b81526004016105639190613bb1565b50805460008255600302906000526020600020908101906137839190613786565b50565b5b808211156137cb57600080825560018201556002810180547fffffffffffffffffffffffffffffff0000000000000000000000000000000000169055600301613787565b5090565b600080604083850312156137e257600080fd5b82359150602083013567ffffffffffffffff8116811461380157600080fd5b809150509250929050565b6001600160a01b038116811461378357600080fd5b6000806040838503121561383457600080fd5b823561383f8161380c565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156138cc576138b98385518051825260208101516020830152604081015167ffffffffffffffff808216604085015280606084015116606085015250506080810151151560808301525050565b9284019260a09290920191600101613869565b50909695505050505050565b6000602082840312156138ea57600080fd5b81356113e28161380c565b60a0810161082a82848051825260208101516020830152604081015167ffffffffffffffff808216604085015280606084015116606085015250506080810151151560808301525050565b60006020828403121561395257600080fd5b5035919050565b6000806040838503121561396c57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1157613a116139aa565b500290565b60008219821115613a2957613a296139aa565b500190565b600082821015613a4057613a406139aa565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613aa657613aa66139aa565b5060010190565b600060208284031215613abf57600080fd5b5051919050565b600082613afc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215613b1357600080fd5b815180151581146113e257600080fd5b600060208284031215613b3557600080fd5b81516113e28161380c565b600067ffffffffffffffff83811690831681811015613b6157613b616139aa565b039392505050565b60005b83811015613b84578181015183820152602001613b6c565b8381111561294d5750506000910152565b60008251613ba7818460208701613b69565b9190910192915050565b6020815260008251806020840152613bd0816040850160208701613b69565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220588831768b81d189fc7f1c8017b4e5f71390a0ed8a5b06571472c91ba354448864736f6c634300080a003300000000000000000000000071ab77b7dbb4fa7e017bc15090b216322142028200000000000000000000000003ce1fd60c31ab8b384725bcb0d8a3a46f87e20f0000000000000000000000003854612b93b140726167cca5418b01e832515d420000000000000000000000000000000000000000000000000000000000d351380000000000000000000000000000000000000000000000000000000000000320