//
0x608060405234801561001057600080fd5b5060405162001aed38038062001aed833981016040819052610031916100af565b60018055600280546001600160a01b0319166001600160a01b0383161790556100593361005f565b506100df565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a35050565b6000602082840312156100c157600080fd5b81516001600160a01b03811681146100d857600080fd5b9392505050565b6119fe80620000ef6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a0a8e46011610097578063d604b16011610066578063d604b160146102a2578063df55406e146102c3578063ec979082146102d6578063f7c618c1146102df57600080fd5b8063a0a8e46014610204578063b1283e771461022e578063c9d27afe14610256578063cb2ef6f71461026957600080fd5b8063677bd9ff116100d3578063677bd9ff1461019157806370480275146101a45780637f1a10da146101b75780638da5cb5b146101df57600080fd5b806313af4035146101055780631785f53c1461011a5780633ec791931461012d578063429b62e51461015e575b600080fd5b6101186101133660046113f3565b6102f2565b005b6101186101283660046113f3565b610329565b61014061013b366004611415565b6103f9565b604051610155999897969594939291906114ac565b60405180910390f35b61018161016c3660046113f3565b60056020526000908152604090205460ff1681565b6040519015158152602001610155565b61011861019f366004611415565b610626565b6101186101b23660046113f3565b610a09565b6101ca6101c5366004611527565b610b24565b60408051928352602083019190915201610155565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610155565b6040805180820190915260058152640312e302e360dc1b60208201525b6040516101559190611553565b61024161023c366004611415565b610ba5565b60405161015599989796959493929190611566565b6101186102643660046115ef565b610d8f565b60408051808201909152601d81527f706c61736d6176657273652d67697665617761792d636f6e74726163740000006020820152610221565b6102b56102b03660046116c2565b610f1a565b604051908152602001610155565b6101186102d136600461175c565b6111d9565b6102b560035481565b6002546101ec906001600160a01b031681565b6000546001600160a01b0316331461031d576040516316ccb9cb60e11b815260040160405180910390fd5b61032681611387565b50565b6000546001600160a01b03163314610354576040516316ccb9cb60e11b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff166103b05760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71030b236b4b760a11b60448201526064015b60405180910390fd5b6001600160a01b038116600081815260056020526040808220805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9190a250565b60608060606000806000806000806000600460008c8152602001908152602001600020905080600001816003018260040183600101548460020160009054906101000a900460ff168560050154866006015487600701548860080160009054906101000a900460ff1688805461046e90611785565b80601f016020809104026020016040519081016040528092919081815260200182805461049a90611785565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b505050505098508780546104fa90611785565b80601f016020809104026020016040519081016040528092919081815260200182805461052690611785565b80156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b5050505050975086805461058690611785565b80601f01602080910402602001604051908101604052809291908181526020018280546105b290611785565b80156105ff5780601f106105d4576101008083540402835291602001916105ff565b820191906000526020600020905b8154815290600101906020018083116105e257829003601f168201915b50505050509650995099509950995099509950995099509950509193959799909294969850565b6002600154036106785760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103a7565b60026001556000818152600460205260409020600881015460ff166106df5760405162461bcd60e51b815260206004820181905260248201527f4d61726b657420686173206e6f74206265656e207265736f6c7665642079657460448201526064016103a7565b33600090815260098201602052604090205460ff166107405760405162461bcd60e51b815260206004820152601860248201527f5573657220646964206e6f74207061727469636970617465000000000000000060448201526064016103a7565b336000908152600a8201602052604090205460ff16156107a25760405162461bcd60e51b815260206004820152601860248201527f557365722068617320616c726561647920636c61696d6564000000000000000060448201526064016103a7565b6000600160028084015460ff16908111156107bf576107bf611474565b146107ce5781600601546107d4565b81600501545b9050600081116108265760405162461bcd60e51b815260206004820152601f60248201527f4e6f20766f74657320666f72207468652077696e6e696e67206f7074696f6e0060448201526064016103a7565b6000600160028085015460ff169081111561084357610843611474565b1461084f576000610852565b60015b60ff16905060008261086c83670de0b6b3a76400006117d5565b61087691906117f2565b90506000670de0b6b3a764000082866007015461089391906117d5565b61089d91906117f2565b9050600081116108ef5760405162461bcd60e51b815260206004820152601760248201527f4e6f207265776172647320666f7220746865207573657200000000000000000060448201526064016103a7565b336000818152600a8701602052604090819020805460ff19166001179055600254905163a9059cbb60e01b81526004810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561095d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109819190611814565b6109c65760405162461bcd60e51b815260206004820152601660248201527514995dd85c99081d1c985b9cd9995c8819985a5b195960521b60448201526064016103a7565b604051818152339087907f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269060200160405180910390a350506001805550505050565b6000546001600160a01b03163314610a34576040516316ccb9cb60e11b815260040160405180910390fd5b6001600160a01b038116610a7c5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016103a7565b6001600160a01b03811660009081526005602052604090205460ff1615610ad85760405162461bcd60e51b815260206004820152601060248201526f20b63932b0b23c9030b71030b236b4b760811b60448201526064016103a7565b6001600160a01b038116600081815260056020526040808220805460ff19166001179055517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399190a250565b60008281526004602090815260408083206001600160a01b03851684526009810190925282205482919060ff1615610b95576001600160a01b0384166000908152600b8201602052604090205460ff1615610b8757600160009250925050610b9e565b600060019250925050610b9e565b60008092509250505b9250929050565b600460205260009081526040902080548190610bc090611785565b80601f0160208091040260200160405190810160405280929190818152602001828054610bec90611785565b8015610c395780601f10610c0e57610100808354040283529160200191610c39565b820191906000526020600020905b815481529060010190602001808311610c1c57829003601f168201915b50505050600183015460028401546003850180549495929460ff909216935090610c6290611785565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8e90611785565b8015610cdb5780601f10610cb057610100808354040283529160200191610cdb565b820191906000526020600020905b815481529060010190602001808311610cbe57829003601f168201915b505050505090806004018054610cf090611785565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1c90611785565b8015610d695780601f10610d3e57610100808354040283529160200191610d69565b820191906000526020600020905b815481529060010190602001808311610d4c57829003601f168201915b505050506005830154600684015460078501546008909501549394919390925060ff1689565b600082815260046020526040902060018101544210610df05760405162461bcd60e51b815260206004820152601e60248201527f4d61726b657420766f74696e6720706572696f642068617320656e646564000060448201526064016103a7565b33600090815260098201602052604090205460ff1615610e4b5760405162461bcd60e51b8152602060048201526016602482015275155cd95c881a185cc8185b1c9958591e481d9bdd195960521b60448201526064016103a7565b3360009081526009820160205260409020805460ff191660011790558115610ea8576001816005016000828254610e829190611831565b9091555050336000908152600b820160205260409020805460ff19166001179055610edc565b6001816006016000828254610ebd9190611831565b9091555050336000908152600b820160205260409020805460ff191690555b6040518215158152339084907f5aaa9aad7433112662b9e5ae23b96ed62b00035f413ab908c55607284e0804e29060200160405180910390a3505050565b600080546001600160a01b03163314610f46576040516316ccb9cb60e11b815260040160405180910390fd5b60008311610f965760405162461bcd60e51b815260206004820152601f60248201527f4475726174696f6e206d7573742062652067726561746572207468616e20300060448201526064016103a7565b60008551118015610fa8575060008451115b610ff45760405162461bcd60e51b815260206004820152601760248201527f4f7074696f6e732063616e6e6f7420626520656d70747900000000000000000060448201526064016103a7565b600082116110535760405162461bcd60e51b815260206004820152602660248201527f416c6c6f63617465642066756e6473206d75737420626520677265617465722060448201526507468616e20360d41b60648201526084016103a7565b6002546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce9190611814565b61111a5760405162461bcd60e51b815260206004820152601760248201527f46756e647320616c6c6f636174696f6e206661696c656400000000000000000060448201526064016103a7565b600380546000918261112b83611844565b9091555060008181526004602052604090209091508061114b89826118ac565b506003810161115a88826118ac565b506004810161116987826118ac565b506111748542611831565b6001820181905560028201805460ff191690556007820185905560405183917f4e17305b7420128578bd859d024ac630622b92bde2b60f88881995701f736242916111c6918c918c918c918b9061196c565b60405180910390a2509695505050505050565b6000546001600160a01b03163314611204576040516316ccb9cb60e11b815260040160405180910390fd5b600082815260046020526040902060018101544210156112665760405162461bcd60e51b815260206004820152601860248201527f4d61726b657420686173206e6f7420656e64656420796574000000000000000060448201526064016103a7565b600881015460ff16156112bb5760405162461bcd60e51b815260206004820181905260248201527f4d61726b65742068617320616c7265616479206265656e207265736f6c76656460448201526064016103a7565b60008260028111156112cf576112cf611474565b0361130e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206f7574636f6d6560881b60448201526064016103a7565b818160020160006101000a81548160ff0219169083600281111561133457611334611474565b021790555060088101805460ff1916600117905560405183907f739f283563fb51ab6b89ee95d937b2e63a6cfcb83c385dbebb629f9d97bd43e69061137a9085906119ba565b60405180910390a2505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a35050565b80356001600160a01b03811681146113ee57600080fd5b919050565b60006020828403121561140557600080fd5b61140e826113d7565b9392505050565b60006020828403121561142757600080fd5b5035919050565b6000815180845260005b8181101561145457602081850181015186830182015201611438565b506000602082860101526020601f19601f83011685010191505092915050565b634e487b7160e01b600052602160045260246000fd5b600381106114a857634e487b7160e01b600052602160045260246000fd5b9052565b60006101208083526114c08184018d61142e565b905082810360208401526114d4818c61142e565b905082810360408401526114e8818b61142e565b9150508760608301526114fe608083018861148a565b8560a08301528460c08301528360e08301528215156101008301529a9950505050505050505050565b6000806040838503121561153a57600080fd5b8235915061154a602084016113d7565b90509250929050565b60208152600061140e602083018461142e565b600061012080835261157a8184018d61142e565b90508a602084015261158f604084018b61148a565b82810360608401526115a1818a61142e565b905082810360808401526115b5818961142e565b9150508560a08301528460c08301528360e08301528215156101008301529a9950505050505050505050565b801515811461032657600080fd5b6000806040838503121561160257600080fd5b823591506020830135611614816115e1565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261164657600080fd5b813567ffffffffffffffff808211156116615761166161161f565b604051601f8301601f19908116603f011681019082821181831017156116895761168961161f565b816040528381528660208588010111156116a257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156116da57600080fd5b853567ffffffffffffffff808211156116f257600080fd5b6116fe89838a01611635565b9650602088013591508082111561171457600080fd5b61172089838a01611635565b9550604088013591508082111561173657600080fd5b5061174388828901611635565b9598949750949560608101359550608001359392505050565b6000806040838503121561176f57600080fd5b8235915060208301356003811061161457600080fd5b600181811c9082168061179957607f821691505b6020821081036117b957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176117ec576117ec6117bf565b92915050565b60008261180f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561182657600080fd5b815161140e816115e1565b808201808211156117ec576117ec6117bf565b600060018201611856576118566117bf565b5060010190565b601f8211156118a757600081815260208120601f850160051c810160208610156118845750805b601f850160051c820191505b818110156118a357828155600101611890565b5050505b505050565b815167ffffffffffffffff8111156118c6576118c661161f565b6118da816118d48454611785565b8461185d565b602080601f83116001811461190f57600084156118f75750858301515b600019600386901b1c1916600185901b1785556118a3565b600085815260208120601f198616915b8281101561193e5788860151825594840194600190910190840161191f565b508582101561195c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60a08152600061197f60a083018861142e565b8281036020840152611991818861142e565b905082810360408401526119a5818761142e565b60608401959095525050608001529392505050565b602081016117ec828461148a56fea2646970667358221220cdf564d1f0f1f4da5fff0a2f2f1ef9e1a693b08cbe01a4dad01b49cf92de7d9964736f6c634300081100330000000000000000000000003ea683354bf8d359cd9ec6e08b5aec291d71d880