0x6080604052600436106101d15760003560e01c806388d63aac116100f7578063b65d08b011610095578063f2fde38b11610064578063f2fde38b146105bf578063f3290d75146105df578063fe575a87146105ff578063ff3cf3f01461063857600080fd5b8063b65d08b014610522578063c8e4ca8914610538578063d0febe4c14610552578063dd62ed3e1461055a57600080fd5b806396f9e9be116100d157806396f9e9be146104a857806397a9d413146104c25780639cf9ab09146104e2578063a9059cbb1461050257600080fd5b806388d63aac146104365780638da5cb5b1461045657806395d89b411461049357600080fd5b806349bd5a5e1161016f578063715018a61161013e578063715018a6146103c157806375f0a874146103d657806377a54eb8146103f657806379481fa61461041657600080fd5b806349bd5a5e1461030c578063537df3b61461032c5780636c11bcd31461034c57806370a082311461036c57600080fd5b806318160ddd116101ab57806318160ddd1461027057806323b872dd146102ae57806327f55d80146102ce578063313ce567146102f057600080fd5b806306fdde03146101dd578063095ea7b3146102085780631694505e1461023857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f261064e565b6040516101ff91906122ff565b60405180910390f35b34801561021457600080fd5b5061022861022336600461232e565b610723565b60405190151581526020016101ff565b34801561024457600080fd5b50600054610258906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561027c57600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b6040519081526020016101ff565b3480156102ba57600080fd5b506102286102c936600461235a565b61073d565b3480156102da57600080fd5b506102ee6102e936600461239b565b610820565b005b3480156102fc57600080fd5b50604051601281526020016101ff565b34801561031857600080fd5b50600154610258906001600160a01b031681565b34801561033857600080fd5b506102ee6103473660046123b4565b6108c1565b34801561035857600080fd5b506102ee61036736600461239b565b61097a565b34801561037857600080fd5b506102a06103873660046123b4565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b3480156103cd57600080fd5b506102ee610b81565b3480156103e257600080fd5b50600254610258906001600160a01b031681565b34801561040257600080fd5b506102ee6104113660046124eb565b610b95565b34801561042257600080fd5b506102ee610431366004612528565b610bd7565b34801561044257600080fd5b506102ee61045136600461239b565b610c20565b34801561046257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610258565b34801561049f57600080fd5b506101f2610cae565b3480156104b457600080fd5b506004546102289060ff1681565b3480156104ce57600080fd5b506102ee6104dd366004612528565b610cff565b3480156104ee57600080fd5b506102ee6104fd3660046125d8565b610d48565b34801561050e57600080fd5b5061022861051d36600461232e565b61122e565b34801561052e57600080fd5b506102a060035481565b34801561054457600080fd5b506006546102289060ff1681565b6102ee611244565b34801561056657600080fd5b506102a06105753660046126e0565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b3480156105cb57600080fd5b506102ee6105da3660046123b4565b611398565b3480156105eb57600080fd5b506102ee6105fa3660046123b4565b6113ef565b34801561060b57600080fd5b5061022861061a3660046123b4565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561064457600080fd5b506102a060055481565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace009161069f90612719565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb90612719565b80156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b505050505091505090565b600033610731818585611469565b60019150505b92915050565b600061074a84848461147b565b6001600160a01b03841660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320338452909152902054828110156108085760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6108158533858403611469565b506001949350505050565b6108286119ed565b600081118015610839575060648111155b6108855760405162461bcd60e51b815260206004820152601260248201527f496e76616c69642070657263656e74616765000000000000000000000000000060448201526064016107ff565b60058190556040518181527fc9e016a226e97d98fa9c0fa9d0c51c80ffe92bb2266e9498960317e907eb0d97906020015b60405180910390a150565b6108c96119ed565b6001600160a01b03811660009081526007602052604090205460ff166109315760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000060448201526064016107ff565b6001600160a01b038116600081815260076020526040808220805460ff19169055517f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9190a250565b3360009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260409020548111156109f85760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e636500000000000000000000000060448201526064016107ff565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610a2d57610a2d61276c565b60200260200101906001600160a01b031690816001600160a01b03168152505060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac2919061279b565b81600181518110610ad557610ad561276c565b6001600160a01b039283166020918202929092010152600054610afb9133911684611469565b600080546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163791ac94791610b4b9186918690339042906004016127fd565b600060405180830381600087803b158015610b6557600080fd5b505af1158015610b79573d6000803e3d6000fd5b505050505050565b610b896119ed565b610b936000611a61565b565b610b9d6119ed565b60005b8151811015610bd357610bcb828281518110610bbe57610bbe61276c565b6020026020010151611aea565b600101610ba0565b5050565b610bdf6119ed565b6004805460ff19168215159081179091556040519081527f76dd3f2ac582c6befe0598e90df4937ccd8dd240aeacb97ca299d61bf4461aa2906020016108b6565b610c286119ed565b6064811115610c795760405162461bcd60e51b815260206004820152601b60248201527f54617820726174652063616e6e6f74206578636565642031303025000000000060448201526064016107ff565b60038190556040518181527fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3906020016108b6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace009161069f90612719565b610d076119ed565b6006805460ff19168215159081179091556040519081527fa0cabb3c57fee43ac36a8bb27623589905398cb5b99a71d5a322403bfda5b4bf906020016108b6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d935750825b905060008267ffffffffffffffff166001148015610db05750303b155b905081158015610dbe575080155b15610df5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e565784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e608a8a611b36565b610e6933611b48565b8651885114610ee05760405162461bcd60e51b815260206004820152602b60248201527f41646472657373657320616e642064697362757273656d656e7473206c656e6760448201527f7468206d69736d6174636800000000000000000000000000000000000000000060648201526084016107ff565b60005b8851811015610fa557610f28898281518110610f0157610f0161276c565b6020026020010151898381518110610f1b57610f1b61276c565b6020026020010151611b59565b888181518110610f3a57610f3a61276c565b60200260200101516001600160a01b03167f5724630c7039b7451802c963e5285779ee0776995655e2fb2cc6215d909493d9898381518110610f7e57610f7e61276c565b6020026020010151604051610f9591815260200190565b60405180910390a2600101610ee3565b506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ffd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611021919061279b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611092919061279b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b919061279b565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03938416178255600080549091169284169290921790915560038890556004805460ff199081169092179055600260055560068054909116905560405133907f82dfd53401a55bb491abcb3e7a97c99da1ed7eaffd89721d3e96e8e8ad4a692d906111b8908e908e90612839565b60405180910390a25083156112225784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b600061123b33848461147b565b50600192915050565b60408051600280825260608201835260009260208301908036833701905050905060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112da919061279b565b816000815181106112ed576112ed61276c565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106113215761132161276c565b6001600160a01b039283166020918202929092010152600080546040517fb6f9de9500000000000000000000000000000000000000000000000000000000815292169163b6f9de9591349161137f9190869033904290600401612867565b6000604051808303818588803b158015610b6557600080fd5b6113a06119ed565b6001600160a01b0381166113e3576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b6113ec81611a61565b50565b6113f76119ed565b6001600160a01b03811660009081526007602052604090205460ff16156114605760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c6973746564000060448201526064016107ff565b6113ec81611aea565b6114768383836001611ba8565b505050565b6001600160a01b0383166114f75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107ff565b6001600160a01b0382166115735760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107ff565b600081116115e95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016107ff565b6001600160a01b03831660009081526007602052604090205460ff16156116525760405162461bcd60e51b815260206004820152601560248201527f53656e64657220697320626c61636b6c6973746564000000000000000000000060448201526064016107ff565b6001600160a01b03821660009081526007602052604090205460ff16156116bb5760405162461bcd60e51b815260206004820152601860248201527f526563697069656e7420697320626c61636b6c6973746564000000000000000060448201526064016107ff565b6001546006546001600160a01b039182168483168114928616149060ff1680156116e3575080155b80156116ed575081155b801561172657507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03868116911614155b801561175f57507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03858116911614155b156117f45760646005546117917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b61179b91906128cb565b6117a591906128e2565b8311156117f45760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220616d6f756e742065786365656473206c696d697400000060448201526064016107ff565b600654610100900460ff1615801561180e575060045460ff165b8015611818575080155b801561185157507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03868116911614155b801561188a57507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03858116911614155b156118e65760006064600354856118a191906128cb565b6118ab91906128e2565b905060006118b9828661291d565b6002549091506118d49088906001600160a01b031684611cd3565b6118df878783611cd3565b50506118f1565b6118f1858585611cd3565b600654610100900460ff1615801561191757506001546001600160a01b03868116911614155b801561193157506001546001600160a01b03858116911614155b801561196a57507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03868116911614155b80156119a357507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03858116911614155b156119e6573060009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260409020548015610b7957610b7981611d64565b5050505050565b33611a1f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b93576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016107ff565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a250565b611b3e611dfe565b610bd38282611e65565b611b50611dfe565b6113ec81611ece565b6001600160a01b038216611b9c576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b610bd360008383611ed6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516611c0c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b6001600160a01b038416611c4f576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b6001600160a01b038086166000908152600183016020908152604080832093881683529290522083905581156119e657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611cc491815260200190565b60405180910390a35050505050565b6001600160a01b038316611d16576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b6001600160a01b038216611d59576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b611476838383611ed6565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556000611d9d6002836128e2565b90506000611dab828461291d565b905047611db78361203f565b6000611dc3824761291d565b9050611dcf8382612192565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610b93576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e6d611dfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611eb98482612978565b5060048101611ec88382612978565b50505050565b6113a0611dfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038416611f245781816002016000828254611f199190612a92565b90915550611faf9050565b6001600160a01b03841660009081526020829052604090205482811015611f90576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016107ff565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316611fcd576002810180548390039055611fec565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161203191815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120745761207461276c565b60200260200101906001600160a01b031690816001600160a01b03168152505060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612109919061279b565b8160018151811061211c5761211c61276c565b6001600160a01b0392831660209182029290920101526000546121429130911684611469565b600080546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163791ac94791610b4b9186918690309042906004016127fd565b6000546121aa9030906001600160a01b031684611469565b600080546001600160a01b03169063f305d71990839030908690806121f67f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612276573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119e69190612aa5565b6000815180845260005b818110156122c1576020818501810151868301820152016122a5565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000612312602083018461229b565b9392505050565b6001600160a01b03811681146113ec57600080fd5b6000806040838503121561234157600080fd5b823561234c81612319565b946020939093013593505050565b60008060006060848603121561236f57600080fd5b833561237a81612319565b9250602084013561238a81612319565b929592945050506040919091013590565b6000602082840312156123ad57600080fd5b5035919050565b6000602082840312156123c657600080fd5b813561231281612319565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612447576124476123d1565b604052919050565b600067ffffffffffffffff821115612469576124696123d1565b5060051b60200190565b600082601f83011261248457600080fd5b813560206124996124948361244f565b612400565b8083825260208201915060208460051b8701019350868411156124bb57600080fd5b602086015b848110156124e05780356124d381612319565b83529183019183016124c0565b509695505050505050565b6000602082840312156124fd57600080fd5b813567ffffffffffffffff81111561251457600080fd5b61252084828501612473565b949350505050565b60006020828403121561253a57600080fd5b8135801515811461231257600080fd5b600082601f83011261255b57600080fd5b813567ffffffffffffffff811115612575576125756123d1565b6125a660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612400565b8181528460208386010111156125bb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156125f057600080fd5b853567ffffffffffffffff8082111561260857600080fd5b61261489838a0161254a565b965060209150818801358181111561262b57600080fd5b6126378a828b0161254a565b96505060408801358181111561264c57600080fd5b6126588a828b01612473565b95505060608801358181111561266d57600080fd5b88019050601f8101891361268057600080fd5b803561268e6124948261244f565b81815260059190911b8201830190838101908b8311156126ad57600080fd5b928401925b828410156126cb578335825292840192908401906126b2565b989b979a509598608001359695505050505050565b600080604083850312156126f357600080fd5b82356126fe81612319565b9150602083013561270e81612319565b809150509250929050565b600181811c9082168061272d57607f821691505b602082108103612766577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156127ad57600080fd5b815161231281612319565b60008151808452602080850194506020840160005b838110156127f25781516001600160a01b0316875295820195908201906001016127cd565b509495945050505050565b85815284602082015260a06040820152600061281c60a08301866127b8565b6001600160a01b0394909416606083015250608001529392505050565b60408152600061284c604083018561229b565b828103602084015261285e818561229b565b95945050505050565b84815260806020820152600061288060808301866127b8565b6001600160a01b03949094166040830152506060015292915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107375761073761289c565b600082612918577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156107375761073761289c565b601f821115611476576000816000526020600020601f850160051c810160208610156129595750805b601f850160051c820191505b81811015610b7957828155600101612965565b815167ffffffffffffffff811115612992576129926123d1565b6129a6816129a08454612719565b84612930565b602080601f8311600181146129f957600084156129c35750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610b79565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612a4657888601518255948401946001909101908401612a27565b5085821015612a8257878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156107375761073761289c565b600080600060608486031215612aba57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a68e990ab32933e4933b4d7e8a738166efac53cfc7ba42c720a2d1c70974a02d64736f6c63430008180033
0x608060405234801561001057600080fd5b50612b09806100206000396000f3fe6080604052600436106101d15760003560e01c806388d63aac116100f7578063b65d08b011610095578063f2fde38b11610064578063f2fde38b146105bf578063f3290d75146105df578063fe575a87146105ff578063ff3cf3f01461063857600080fd5b8063b65d08b014610522578063c8e4ca8914610538578063d0febe4c14610552578063dd62ed3e1461055a57600080fd5b806396f9e9be116100d157806396f9e9be146104a857806397a9d413146104c25780639cf9ab09146104e2578063a9059cbb1461050257600080fd5b806388d63aac146104365780638da5cb5b1461045657806395d89b411461049357600080fd5b806349bd5a5e1161016f578063715018a61161013e578063715018a6146103c157806375f0a874146103d657806377a54eb8146103f657806379481fa61461041657600080fd5b806349bd5a5e1461030c578063537df3b61461032c5780636c11bcd31461034c57806370a082311461036c57600080fd5b806318160ddd116101ab57806318160ddd1461027057806323b872dd146102ae57806327f55d80146102ce578063313ce567146102f057600080fd5b806306fdde03146101dd578063095ea7b3146102085780631694505e1461023857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f261064e565b6040516101ff91906122ff565b60405180910390f35b34801561021457600080fd5b5061022861022336600461232e565b610723565b60405190151581526020016101ff565b34801561024457600080fd5b50600054610258906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561027c57600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b6040519081526020016101ff565b3480156102ba57600080fd5b506102286102c936600461235a565b61073d565b3480156102da57600080fd5b506102ee6102e936600461239b565b610820565b005b3480156102fc57600080fd5b50604051601281526020016101ff565b34801561031857600080fd5b50600154610258906001600160a01b031681565b34801561033857600080fd5b506102ee6103473660046123b4565b6108c1565b34801561035857600080fd5b506102ee61036736600461239b565b61097a565b34801561037857600080fd5b506102a06103873660046123b4565b6001600160a01b031660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b3480156103cd57600080fd5b506102ee610b81565b3480156103e257600080fd5b50600254610258906001600160a01b031681565b34801561040257600080fd5b506102ee6104113660046124eb565b610b95565b34801561042257600080fd5b506102ee610431366004612528565b610bd7565b34801561044257600080fd5b506102ee61045136600461239b565b610c20565b34801561046257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610258565b34801561049f57600080fd5b506101f2610cae565b3480156104b457600080fd5b506004546102289060ff1681565b3480156104ce57600080fd5b506102ee6104dd366004612528565b610cff565b3480156104ee57600080fd5b506102ee6104fd3660046125d8565b610d48565b34801561050e57600080fd5b5061022861051d36600461232e565b61122e565b34801561052e57600080fd5b506102a060035481565b34801561054457600080fd5b506006546102289060ff1681565b6102ee611244565b34801561056657600080fd5b506102a06105753660046126e0565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b3480156105cb57600080fd5b506102ee6105da3660046123b4565b611398565b3480156105eb57600080fd5b506102ee6105fa3660046123b4565b6113ef565b34801561060b57600080fd5b5061022861061a3660046123b4565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561064457600080fd5b506102a060055481565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace009161069f90612719565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb90612719565b80156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b505050505091505090565b600033610731818585611469565b60019150505b92915050565b600061074a84848461147b565b6001600160a01b03841660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320338452909152902054828110156108085760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6108158533858403611469565b506001949350505050565b6108286119ed565b600081118015610839575060648111155b6108855760405162461bcd60e51b815260206004820152601260248201527f496e76616c69642070657263656e74616765000000000000000000000000000060448201526064016107ff565b60058190556040518181527fc9e016a226e97d98fa9c0fa9d0c51c80ffe92bb2266e9498960317e907eb0d97906020015b60405180910390a150565b6108c96119ed565b6001600160a01b03811660009081526007602052604090205460ff166109315760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000060448201526064016107ff565b6001600160a01b038116600081815260076020526040808220805460ff19169055517f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9190a250565b3360009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260409020548111156109f85760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e636500000000000000000000000060448201526064016107ff565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610a2d57610a2d61276c565b60200260200101906001600160a01b031690816001600160a01b03168152505060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac2919061279b565b81600181518110610ad557610ad561276c565b6001600160a01b039283166020918202929092010152600054610afb9133911684611469565b600080546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163791ac94791610b4b9186918690339042906004016127fd565b600060405180830381600087803b158015610b6557600080fd5b505af1158015610b79573d6000803e3d6000fd5b505050505050565b610b896119ed565b610b936000611a61565b565b610b9d6119ed565b60005b8151811015610bd357610bcb828281518110610bbe57610bbe61276c565b6020026020010151611aea565b600101610ba0565b5050565b610bdf6119ed565b6004805460ff19168215159081179091556040519081527f76dd3f2ac582c6befe0598e90df4937ccd8dd240aeacb97ca299d61bf4461aa2906020016108b6565b610c286119ed565b6064811115610c795760405162461bcd60e51b815260206004820152601b60248201527f54617820726174652063616e6e6f74206578636565642031303025000000000060448201526064016107ff565b60038190556040518181527fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3906020016108b6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace009161069f90612719565b610d076119ed565b6006805460ff19168215159081179091556040519081527fa0cabb3c57fee43ac36a8bb27623589905398cb5b99a71d5a322403bfda5b4bf906020016108b6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d935750825b905060008267ffffffffffffffff166001148015610db05750303b155b905081158015610dbe575080155b15610df5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e565784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e608a8a611b36565b610e6933611b48565b8651885114610ee05760405162461bcd60e51b815260206004820152602b60248201527f41646472657373657320616e642064697362757273656d656e7473206c656e6760448201527f7468206d69736d6174636800000000000000000000000000000000000000000060648201526084016107ff565b60005b8851811015610fa557610f28898281518110610f0157610f0161276c565b6020026020010151898381518110610f1b57610f1b61276c565b6020026020010151611b59565b888181518110610f3a57610f3a61276c565b60200260200101516001600160a01b03167f5724630c7039b7451802c963e5285779ee0776995655e2fb2cc6215d909493d9898381518110610f7e57610f7e61276c565b6020026020010151604051610f9591815260200190565b60405180910390a2600101610ee3565b506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ffd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611021919061279b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611092919061279b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b919061279b565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03938416178255600080549091169284169290921790915560038890556004805460ff199081169092179055600260055560068054909116905560405133907f82dfd53401a55bb491abcb3e7a97c99da1ed7eaffd89721d3e96e8e8ad4a692d906111b8908e908e90612839565b60405180910390a25083156112225784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b600061123b33848461147b565b50600192915050565b60408051600280825260608201835260009260208301908036833701905050905060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112da919061279b565b816000815181106112ed576112ed61276c565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106113215761132161276c565b6001600160a01b039283166020918202929092010152600080546040517fb6f9de9500000000000000000000000000000000000000000000000000000000815292169163b6f9de9591349161137f9190869033904290600401612867565b6000604051808303818588803b158015610b6557600080fd5b6113a06119ed565b6001600160a01b0381166113e3576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b6113ec81611a61565b50565b6113f76119ed565b6001600160a01b03811660009081526007602052604090205460ff16156114605760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c6973746564000060448201526064016107ff565b6113ec81611aea565b6114768383836001611ba8565b505050565b6001600160a01b0383166114f75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107ff565b6001600160a01b0382166115735760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107ff565b600081116115e95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016107ff565b6001600160a01b03831660009081526007602052604090205460ff16156116525760405162461bcd60e51b815260206004820152601560248201527f53656e64657220697320626c61636b6c6973746564000000000000000000000060448201526064016107ff565b6001600160a01b03821660009081526007602052604090205460ff16156116bb5760405162461bcd60e51b815260206004820152601860248201527f526563697069656e7420697320626c61636b6c6973746564000000000000000060448201526064016107ff565b6001546006546001600160a01b039182168483168114928616149060ff1680156116e3575080155b80156116ed575081155b801561172657507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03868116911614155b801561175f57507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03858116911614155b156117f45760646005546117917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b61179b91906128cb565b6117a591906128e2565b8311156117f45760405162461bcd60e51b815260206004820152601d60248201527f5472616e7366657220616d6f756e742065786365656473206c696d697400000060448201526064016107ff565b600654610100900460ff1615801561180e575060045460ff165b8015611818575080155b801561185157507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03868116911614155b801561188a57507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03858116911614155b156118e65760006064600354856118a191906128cb565b6118ab91906128e2565b905060006118b9828661291d565b6002549091506118d49088906001600160a01b031684611cd3565b6118df878783611cd3565b50506118f1565b6118f1858585611cd3565b600654610100900460ff1615801561191757506001546001600160a01b03868116911614155b801561193157506001546001600160a01b03858116911614155b801561196a57507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03868116911614155b80156119a357507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03858116911614155b156119e6573060009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260409020548015610b7957610b7981611d64565b5050505050565b33611a1f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b93576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016107ff565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a250565b611b3e611dfe565b610bd38282611e65565b611b50611dfe565b6113ec81611ece565b6001600160a01b038216611b9c576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b610bd360008383611ed6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516611c0c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b6001600160a01b038416611c4f576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b6001600160a01b038086166000908152600183016020908152604080832093881683529290522083905581156119e657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611cc491815260200190565b60405180910390a35050505050565b6001600160a01b038316611d16576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b6001600160a01b038216611d59576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016107ff565b611476838383611ed6565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790556000611d9d6002836128e2565b90506000611dab828461291d565b905047611db78361203f565b6000611dc3824761291d565b9050611dcf8382612192565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610b93576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e6d611dfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611eb98482612978565b5060048101611ec88382612978565b50505050565b6113a0611dfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038416611f245781816002016000828254611f199190612a92565b90915550611faf9050565b6001600160a01b03841660009081526020829052604090205482811015611f90576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016107ff565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316611fcd576002810180548390039055611fec565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161203191815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120745761207461276c565b60200260200101906001600160a01b031690816001600160a01b03168152505060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612109919061279b565b8160018151811061211c5761211c61276c565b6001600160a01b0392831660209182029290920101526000546121429130911684611469565b600080546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169163791ac94791610b4b9186918690309042906004016127fd565b6000546121aa9030906001600160a01b031684611469565b600080546001600160a01b03169063f305d71990839030908690806121f67f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612276573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119e69190612aa5565b6000815180845260005b818110156122c1576020818501810151868301820152016122a5565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000612312602083018461229b565b9392505050565b6001600160a01b03811681146113ec57600080fd5b6000806040838503121561234157600080fd5b823561234c81612319565b946020939093013593505050565b60008060006060848603121561236f57600080fd5b833561237a81612319565b9250602084013561238a81612319565b929592945050506040919091013590565b6000602082840312156123ad57600080fd5b5035919050565b6000602082840312156123c657600080fd5b813561231281612319565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612447576124476123d1565b604052919050565b600067ffffffffffffffff821115612469576124696123d1565b5060051b60200190565b600082601f83011261248457600080fd5b813560206124996124948361244f565b612400565b8083825260208201915060208460051b8701019350868411156124bb57600080fd5b602086015b848110156124e05780356124d381612319565b83529183019183016124c0565b509695505050505050565b6000602082840312156124fd57600080fd5b813567ffffffffffffffff81111561251457600080fd5b61252084828501612473565b949350505050565b60006020828403121561253a57600080fd5b8135801515811461231257600080fd5b600082601f83011261255b57600080fd5b813567ffffffffffffffff811115612575576125756123d1565b6125a660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612400565b8181528460208386010111156125bb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156125f057600080fd5b853567ffffffffffffffff8082111561260857600080fd5b61261489838a0161254a565b965060209150818801358181111561262b57600080fd5b6126378a828b0161254a565b96505060408801358181111561264c57600080fd5b6126588a828b01612473565b95505060608801358181111561266d57600080fd5b88019050601f8101891361268057600080fd5b803561268e6124948261244f565b81815260059190911b8201830190838101908b8311156126ad57600080fd5b928401925b828410156126cb578335825292840192908401906126b2565b989b979a509598608001359695505050505050565b600080604083850312156126f357600080fd5b82356126fe81612319565b9150602083013561270e81612319565b809150509250929050565b600181811c9082168061272d57607f821691505b602082108103612766577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156127ad57600080fd5b815161231281612319565b60008151808452602080850194506020840160005b838110156127f25781516001600160a01b0316875295820195908201906001016127cd565b509495945050505050565b85815284602082015260a06040820152600061281c60a08301866127b8565b6001600160a01b0394909416606083015250608001529392505050565b60408152600061284c604083018561229b565b828103602084015261285e818561229b565b95945050505050565b84815260806020820152600061288060808301866127b8565b6001600160a01b03949094166040830152506060015292915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107375761073761289c565b600082612918577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156107375761073761289c565b601f821115611476576000816000526020600020601f850160051c810160208610156129595750805b601f850160051c820191505b81811015610b7957828155600101612965565b815167ffffffffffffffff811115612992576129926123d1565b6129a6816129a08454612719565b84612930565b602080601f8311600181146129f957600084156129c35750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610b79565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612a4657888601518255948401946001909101908401612a27565b5085821015612a8257878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156107375761073761289c565b600080600060608486031215612aba57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a68e990ab32933e4933b4d7e8a738166efac53cfc7ba42c720a2d1c70974a02d64736f6c63430008180033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000006534b494e4b5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006534b494e4b59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000003e4cf26e632fc80f3f944cfa8730b100174f778c000000000000000000000000b4f21d55abce8c7b16638e59129bf07d9441991f00000000000000000000000014cb7e4d0a6ed69bf531d474d04cb97448faa1440000000000000000000000007e2b9db77527dc4ee40999210abbda2e708541fe000000000000000000000000470783c628c60216ec562a8851d44f776b6df783000000000000000000000000d9a122167e5ae15c724226255ad974e31827bdbc000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000010fdd52876de48c14ea00000000000000000000000000000000000000000000010fdd52876de48c14ea00000000000000000000000000000000000000000000010fdd52876de48c14ea00000000000000000000000000000000000000000000000d97ddb9f8b1d3cdd880000000000000000000000000000000000000000000000d97ddb9f8b1d3cdd88000000000000000000000000000000000000000000002048ae99aea65708e23000000