Loading
60806040526007805463ffffffff60a01b1916600160a01b1790553480156200002757600080fd5b50604051806040016040528060088152602001671213d5115313919560c21b815250604051806040016040528060058152602001641213d5115360da1b815250816000908162000078919062000162565b50600162000087828262000162565b505060078054336001600160a01b031991821617909155600880546001600160a01b0381169216919091179055506200022e565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000e657607f821691505b6020821081036200010757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015d576000816000526020600020601f850160051c81016020861015620001385750805b601f850160051c820191505b81811015620001595782815560010162000144565b5050505b505050565b81516001600160401b038111156200017e576200017e620000bb565b62000196816200018f8454620000d1565b846200010d565b602080601f831160018114620001ce5760008415620001b55750858301515b600019600386901b1c1916600185901b17855562000159565b600085815260208120601f198616915b82811015620001ff57888601518255948401946001909101908401620001de565b50858210156200021e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61438f806200023e6000396000f3fe6080604052600436106101ac5760003560e01c8063655d0e1f116100ec578063b1bd85b41161008a578063c87b56dd11610064578063c87b56dd146104f1578063e24c7a0814610511578063e985e9c514610531578063f6d635961461057a57600080fd5b8063b1bd85b41461047e578063b7c6469f1461049e578063b88d4fde146104d157600080fd5b806395d89b41116100c657806395d89b411461041657806398552f151461042b578063a12c75561461044b578063a22cb4651461045e57600080fd5b8063655d0e1f1461039157806370a08231146103c857806388798eb0146103f657600080fd5b806323b872dd1161015957806346a51d461161013357806346a51d461461031157806355a373d6146103315780635b8bc9d4146103515780636352211e1461037157600080fd5b806323b872dd146102b1578063324bf5cf146102d157806342842e0e146102f157600080fd5b8063095ea7b31161018a578063095ea7b3146102405780630fb15cc61461026257806312caf1f51461029157600080fd5b806301ffc9a7146101b157806306fdde03146101e6578063081812fc14610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc36600461380e565b61059a565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b506101fb6105f6565b6040516101dd919061387b565b34801561021457600080fd5b5061022861022336600461388e565b610688565b6040516001600160a01b0390911681526020016101dd565b34801561024c57600080fd5b5061026061025b3660046138bc565b6106b1565b005b34801561026e57600080fd5b5061028261027d3660046138fe565b6106c0565b6040516101dd93929190613919565b34801561029d57600080fd5b506102606102ac366004613963565b6107f7565b3480156102bd57600080fd5b506102606102cc36600461397e565b610b05565b3480156102dd57600080fd5b50600754610228906001600160a01b031681565b3480156102fd57600080fd5b5061026061030c36600461397e565b610bc2565b34801561031d57600080fd5b5061026061032c366004613963565b610be2565b34801561033d57600080fd5b50600854610228906001600160a01b031681565b34801561035d57600080fd5b5061026061036c366004613a84565b610ee0565b34801561037d57600080fd5b5061022861038c36600461388e565b6110e4565b34801561039d57600080fd5b506103b16103ac366004613af8565b6110ef565b6040516101dd9b9a99989796959493929190613b2b565b3480156103d457600080fd5b506103e86103e3366004613bc7565b611387565b6040519081526020016101dd565b34801561040257600080fd5b50610260610411366004613963565b6113e8565b34801561042257600080fd5b506101fb61154d565b34801561043757600080fd5b50610260610446366004613be4565b61155c565b610260610459366004613963565b611978565b34801561046a57600080fd5b50610260610479366004613caa565b611b4d565b34801561048a57600080fd5b50610260610499366004613963565b611b58565b3480156104aa57600080fd5b506104be6104b936600461388e565b611c26565b6040516101dd9796959493929190613ce8565b3480156104dd57600080fd5b506102606104ec366004613d6a565b611f13565b3480156104fd57600080fd5b506101fb61050c36600461388e565b611f2a565b34801561051d57600080fd5b5061026061052c366004613963565b61203b565b34801561053d57600080fd5b506101d161054c366004613dea565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561058657600080fd5b506103b1610595366004613963565b612344565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f490649060000000000000000000000000000000000000000000000000000000014806105f057506105f082612370565b92915050565b60606000805461060590613e18565b80601f016020809104026020016040519081016040528092919081815260200182805461063190613e18565b801561067e5780601f106106535761010080835404028352916020019161067e565b820191906000526020600020905b81548152906001019060200180831161066157829003601f168201915b5050505050905090565b600061069382612453565b506000828152600460205260409020546001600160a01b03166105f0565b6106bc8282336124a5565b5050565b6009602052600090815260409020805460018201805460ff90921692916106e690613e18565b80601f016020809104026020016040519081016040528092919081815260200182805461071290613e18565b801561075f5780601f106107345761010080835404028352916020019161075f565b820191906000526020600020905b81548152906001019060200180831161074257829003601f168201915b50505050509080600201805461077490613e18565b80601f01602080910402602001604051908101604052809291908181526020018280546107a090613e18565b80156107ed5780601f106107c2576101008083540402835291602001916107ed565b820191906000526020600020905b8154815290600101906020018083116107d057829003601f168201915b5050505050905083565b336108495760405162461bcd60e51b815260206004820152601160248201527f456e64657265636f20696e76616c69646f00000000000000000000000000000060448201526064015b60405180910390fd5b3332146108be5760405162461bcd60e51b815260206004820152602260248201527f536f6d656e74652063617274656972612065787465726e61207065726d69746960448201527f64610000000000000000000000000000000000000000000000000000000000006064820152608401610840565b61ffff81166000908152600a60205260409020600501546301000000900460ff1661092b5760405162461bcd60e51b815260206004820152601660248201527f52657365727661206e616f20636f6e6669726d616461000000000000000000006044820152606401610840565b61ffff81166000908152600a6020526040902060050154610100900460ff16156109975760405162461bcd60e51b815260206004820152601560248201527f52657365727661206a6120636f6e6669726d61646100000000000000000000006044820152606401610840565b6008546040517f6352211e00000000000000000000000000000000000000000000000000000000815261ffff8316600482015233916001600160a01b031690636352211e90602401602060405180830381865afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190613e6b565b6001600160a01b031614610a9c5760405162461bcd60e51b815260206004820152602960248201527f566f6365206e616f20706f73737569206f204e4654206173736f636961646f2060448201527f61207265736572766100000000000000000000000000000000000000000000006064820152608401610840565b61ffff81166000818152600a602052604080822060050180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055517f586a00c760c699a31d2bfb44e19019465283cd533605acdf01e4cc33b1138b889190a250565b6001600160a01b038216610b48576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610840565b6000610b558383336124b2565b9050836001600160a01b0316816001600160a01b031614610bbc576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301526024820184905282166044820152606401610840565b50505050565b610bdd83838360405180602001604052806000815250611f13565b505050565b6007546001600160a01b03163314610c885760405162461bcd60e51b815260206004820152604260248201527f4170656e6173206f2070726f70726965746172696f206461206361727465697260448201527f6120646f20686f74656c20706f6465206368616d617220657374612066756e6360648201527f616f000000000000000000000000000000000000000000000000000000000000608482015260a401610840565b33610cd55760405162461bcd60e51b815260206004820152601160248201527f456e64657265636f20696e76616c69646f0000000000000000000000000000006044820152606401610840565b333214610d4a5760405162461bcd60e51b815260206004820152602260248201527f536f6d656e74652063617274656972612065787465726e61207065726d69746960448201527f64610000000000000000000000000000000000000000000000000000000000006064820152608401610840565b61ffff81166000908152600a6020526040902060050154610100900460ff1615610ddc5760405162461bcd60e51b815260206004820152602d60248201527f4e616f206520706f73736976656c2063616e63656c617220726573657276612060448201527f61706f7320636865636b2d696e000000000000000000000000000000000000006064820152608401610840565b61ffff81166000908152600a60205260409020600501546301000000900460ff1615610e8d576008546007546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03918216602482015261ffff841660448201529116906323b872dd90606401600060405180830381600087803b158015610e7457600080fd5b505af1158015610e88573d6000803e3d6000fd5b505050505b61ffff81166000908152600a6020526040902054610eae9060ff16826125c3565b60405161ffff8216907f6ace76971950af6c7eaebee9afbc745ddc76cf2f08be9180bfb9bbce10563b5590600090a250565b6007546001600160a01b03163314610f865760405162461bcd60e51b815260206004820152604260248201527f4170656e6173206f2070726f70726965746172696f206461206361727465697260448201527f6120646f20686f74656c20706f6465206368616d617220657374612066756e6360648201527f616f000000000000000000000000000000000000000000000000000000000000608482015260a401610840565b33610fd35760405162461bcd60e51b815260206004820152601160248201527f456e64657265636f20696e76616c69646f0000000000000000000000000000006044820152606401610840565b3332146110485760405162461bcd60e51b815260206004820152602260248201527f536f6d656e74652063617274656972612065787465726e61207065726d69746960448201527f64610000000000000000000000000000000000000000000000000000000000006064820152608401610840565b6040805160608101825260ff8581168083526020808401878152848601879052600092835260099091529390208251815460ff19169216919091178155915190919060018201906110999082613ed8565b50604082015160028201906110ae9082613ed8565b505060405160ff851691507f1f88a9232313484e29acc1f5b4c52a2cf81965db2227b6ed4f904725e99554e990600090a2505050565b60006105f082612453565b600b60209081526000928352604080842090915290825290208054600182015460028301805460ff90931693919261112690613e18565b80601f016020809104026020016040519081016040528092919081815260200182805461115290613e18565b801561119f5780601f106111745761010080835404028352916020019161119f565b820191906000526020600020905b81548152906001019060200180831161118257829003601f168201915b5050505050908060030180546111b490613e18565b80601f01602080910402602001604051908101604052809291908181526020018280546111e090613e18565b801561122d5780601f106112025761010080835404028352916020019161122d565b820191906000526020600020905b81548152906001019060200180831161121057829003601f168201915b50505050509080600401805461124290613e18565b80601f016020809104026020016040519081016040528092919081815260200182805461126e90613e18565b80156112bb5780601f10611290576101008083540402835291602001916112bb565b820191906000526020600020905b81548152906001019060200180831161129e57829003601f168201915b5050506005840154600685018054949560ff8084169661010085048216965062010000850482169550630100000085048216946401000000009004909116929061130490613e18565b80601f016020809104026020016040519081016040528092919081815260200182805461133090613e18565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b505050505090508b565b60006001600160a01b0382166113cc576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610840565b506001600160a01b031660009081526003602052604090205490565b336114355760405162461bcd60e51b815260206004820152601160248201527f456e64657265636f20696e76616c69646f0000000000000000000000000000006044820152606401610840565b3332146114aa5760405162461bcd60e51b815260206004820152602260248201527f536f6d656e74652063617274656972612065787465726e61207065726d69746960448201527f64610000000000000000000000000000000000000000000000000000000000006064820152608401610840565b61ffff81166000908152600a602052604090206005015460ff166115105760405162461bcd60e51b815260206004820152601660248201527f52657365727661206e616f20646973706f6e6976656c000000000000000000006044820152606401610840565b6115198161291f565b60405161ffff82169033907fd49a8cfe76d7898ac8717f1364a7453c282510328daf8a81b7fd245ad7fe47f890600090a350565b60606001805461060590613e18565b6007546001600160a01b031633146116025760405162461bcd60e51b815260206004820152604260248201527f4170656e6173206f2070726f70726965746172696f206461206361727465697260448201527f6120646f20686f74656c20706f6465206368616d617220657374612066756e6360648201527f616f000000000000000000000000000000000000000000000000000000000000608482015260a401610840565b3361164f5760405162461bcd60e51b815260206004820152601160248201527f456e64657265636f20696e76616c69646f0000000000000000000000000000006044820152606401610840565b3332146116c45760405162461bcd60e51b815260206004820152602260248201527f536f6d656e74652063617274656972612065787465726e61207065726d69746960448201527f64610000000000000000000000000000000000000000000000000000000000006064820152608401610840565b60ff808716600081815260096020526040902054909116146117285760405162461bcd60e51b815260206004820152601560248201527f51756172746f206e616f20656e636f6e747261646f00000000000000000000006044820152606401610840565b600754604080516101608101825260ff898116825260208083018a81528385018a8152606085018a905260808501899052600060a0860181905260c0860181905260e086018190526101008601819052610120860181905261014086018990527401000000000000000000000000000000000000000090970461ffff16808852600a909352949095208351815460ff1916931692909217825593516001820155915190919060028201906117dc9082613ed8565b50606082015160038201906117f19082613ed8565b50608082015160048201906118069082613ed8565b5060a082015160058201805460c085015160e0860151610100808801516101208901517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169615157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169690961792151502919091177fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1662010000911515919091027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1617630100000093151593909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000009215159290920291909117905561014082015160068201906119289082613ed8565b5090505061193687826125c3565b6119408782612a4d565b60405161ffff8216907fe204c23574a6107a31ac9c39c86ef2706cf35c0d991bd7f16e804bbee2cb82db90600090a250505050505050565b336119c55760405162461bcd60e51b815260206004820152601160248201527f456e64657265636f20696e76616c69646f0000000000000000000000000000006044820152606401610840565b333214611a3a5760405162461bcd60e51b815260206004820152602260248201527f536f6d656e74652063617274656972612065787465726e61207065726d69746960448201527f64610000000000000000000000000000000000000000000000000000000000006064820152608401610840565b61ffff81166000908152600a602052604090206001015434811115611aa15760405162461bcd60e51b815260206004820152601a60248201527f56616c6f7220696e737566696369656e746520656e766961646f0000000000006044820152606401610840565b6007546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611aee576040519150601f19603f3d011682016040523d82523d6000602084013e611af3565b606091505b5050905080611b445760405162461bcd60e51b815260206004820152601660248201527f41207472616e73666572656e6369612066616c686f75000000000000000000006044820152606401610840565b610bdd83612f2b565b6106bc338383613021565b33611ba55760405162461bcd60e51b815260206004820152601160248201527f456e64657265636f20696e76616c69646f0000000000000000000000000000006044820152606401610840565b333214611c1a5760405162461bcd60e51b815260206004820152602260248201527f536f6d656e74652063617274656972612065787465726e61207065726d69746960448201527f64610000000000000000000000000000000000000000000000000000000000006064820152608401610840565b611c2381612f2b565b50565b600c602052600090815260409020805460018201805461ffff8316936201000090930460ff16929190611c5890613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054611c8490613e18565b8015611cd15780601f10611ca657610100808354040283529160200191611cd1565b820191906000526020600020905b815481529060010190602001808311611cb457829003601f168201915b505050505090806002018054611ce690613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1290613e18565b8015611d5f5780601f10611d3457610100808354040283529160200191611d5f565b820191906000526020600020905b815481529060010190602001808311611d4257829003601f168201915b505050505090806003018054611d7490613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054611da090613e18565b8015611ded5780601f10611dc257610100808354040283529160200191611ded565b820191906000526020600020905b815481529060010190602001808311611dd057829003601f168201915b505050505090806004018054611e0290613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2e90613e18565b8015611e7b5780601f10611e5057610100808354040283529160200191611e7b565b820191906000526020600020905b815481529060010190602001808311611e5e57829003601f168201915b505050505090806005018054611e9090613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054611ebc90613e18565b8015611f095780601f10611ede57610100808354040283529160200191611f09565b820191906000526020600020905b815481529060010190602001808311611eec57829003601f168201915b5050505050905087565b611f1e848484610b05565b610bbc848484846130d9565b6060611f3582612453565b5060008281526006602052604081208054611f4f90613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7b90613e18565b8015611fc85780601f10611f9d57610100808354040283529160200191611fc8565b820191906000526020600020905b815481529060010190602001808311611fab57829003601f168201915b505050505090506000611fe660408051602081019091526000815290565b90508051600003611ff8575092915050565b81511561202a578082604051602001612012929190613f98565b60405160208183030381529060405292505050919050565b6120338461327e565b949350505050565b336120885760405162461bcd60e51b815260206004820152601160248201527f456e64657265636f20696e76616c69646f0000000000000000000000000000006044820152606401610840565b3332146120fd5760405162461bcd60e51b815260206004820152602260248201527f536f6d656e74652063617274656972612065787465726e61207065726d69746960448201527f64610000000000000000000000000000000000000000000000000000000000006064820152608401610840565b61ffff81166000908152600a6020526040902060050154610100900460ff166121685760405162461bcd60e51b815260206004820152601c60248201527f436865636b2d696e2061696e6461206e616f207265616c697a61646f000000006044820152606401610840565b61ffff81166000908152600a602052604090206005015462010000900460ff16156121d55760405162461bcd60e51b815260206004820152601660248201527f436865636b2d6f7574206a61207265616c697a61646f000000000000000000006044820152606401610840565b6008546040517f6352211e00000000000000000000000000000000000000000000000000000000815261ffff8316600482015233916001600160a01b031690636352211e90602401602060405180830381865afa15801561223a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225e9190613e6b565b6001600160a01b0316146122da5760405162461bcd60e51b815260206004820152602960248201527f566f6365206e616f20706f73737569206f204e4654206173736f636961646f2060448201527f61207265736572766100000000000000000000000000000000000000000000006064820152608401610840565b61ffff81166000818152600a602052604080822060050180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055517f1c5b4348b6b013d22f94e4f1e9a3680d4234ac38650806f83d1e622a36c299db9190a250565b600a6020526000908152604090208054600182015460028301805460ff90931693919261112690613e18565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061240357507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806105f057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146105f0565b6000818152600260205260408120546001600160a01b0316806105f0576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610840565b610bdd83838360016132f3565b6000828152600260205260408120546001600160a01b03908116908316156124df576124df818486613449565b6001600160a01b0381161561251d576124fc6000856000806132f3565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561254c576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b61ffff81166000818152600a602090815260408083206005908101805460ff1916600117905560ff8781168552600b8452828520958552949092529091200154166127eb5761ffff81166000818152600a6020908152604080832060ff8088168552600b8452828520958552949092529091208154815460ff19169316929092178255600180820154908301559060028082019061266390840182613fc7565b5060038181019061267690840182613fc7565b5060048181019061268990840182613fc7565b5060058281018054918301805460ff938416151560ff1982168117835583546101009081900486161515027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090921691909117178082558254620100009081900485161515027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff821681178355835463010000009081900486161515027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff9091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff909216919091171780825591546401000000009081900490931615159092027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9091161790556006808201906127e790840182613fc7565b5050505b60075461ffff80831674010000000000000000000000000000000000000000909204160361285b576007805474010000000000000000000000000000000000000000900461ffff1690601461283f836140c9565b91906101000a81548161ffff021916908361ffff160217905550505b600754760100000000000000000000000000000000000000000000810460ff167401000000000000000000000000000000000000000090910461ffff16116106bc5760078054760100000000000000000000000000000000000000000000900460ff169060166128ca836140ea565b91906101000a81548160ff021916908360ff160217905550506007601781819054906101000a900460ff1680929190612902906140ea565b91906101000a81548160ff021916908360ff160217905550505050565b61ffff81166000818152600a602090815260408083205460ff16808452600b8352818420948452939091528120805460ff1916815560018101829055906129696002830182613792565b612977600383016000613792565b612985600483016000613792565b6005820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001690556129bd600683016000613792565b505060075477010000000000000000000000000000000000000000000000900460ff1615612a2d576007805477010000000000000000000000000000000000000000000000900460ff16906017612a1383614109565b91906101000a81548160ff021916908360ff160217905550505b5061ffff166000908152600a60205260409020600501805460ff19169055565b6040805160e08101825261ffff8316815260ff8416602080830182905260009182526009905282902060010180549192830191612a8990613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054612ab590613e18565b8015612b025780601f10612ad757610100808354040283529160200191612b02565b820191906000526020600020905b815481529060010190602001808311612ae557829003601f168201915b50505050508152602001600a60008461ffff1661ffff1681526020019081526020016000206002018054612b3590613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054612b6190613e18565b8015612bae5780601f10612b8357610100808354040283529160200191612bae565b820191906000526020600020905b815481529060010190602001808311612b9157829003601f168201915b50505050508152602001600a60008461ffff1661ffff1681526020019081526020016000206003018054612be190613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0d90613e18565b8015612c5a5780601f10612c2f57610100808354040283529160200191612c5a565b820191906000526020600020905b815481529060010190602001808311612c3d57829003601f168201915b50505050508152602001600a60008461ffff1661ffff1681526020019081526020016000206004018054612c8d90613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054612cb990613e18565b8015612d065780601f10612cdb57610100808354040283529160200191612d06565b820191906000526020600020905b815481529060010190602001808311612ce957829003601f168201915b50505050508152602001600960008560ff1660ff1681526020019081526020016000206002018054612d3790613e18565b80601f0160208091040260200160405190810160405280929190818152602001828054612d6390613e18565b8015612db05780601f10612d8557610100808354040283529160200191612db0565b820191906000526020600020905b815481529060010190602001808311612d9357829003601f168201915b50505091909252505061ffff8083166000908152600c6020908152604091829020845181549286015160ff1662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009093169416939093171782558201516001820190612e209082613ed8565b5060608201516002820190612e359082613ed8565b5060808201516003820190612e4a9082613ed8565b5060a08201516004820190612e5f9082613ed8565b5060c08201516005820190612e749082613ed8565b50505061ffff8181166000908152600c602090815260409182902080549251606094612ec994908116936201000090910460ff1692600181019260028201926003830192600481019260059091019101614199565b60408051601f19818403018152919052600754909150612ef7906001600160a01b031661ffff8416836134df565b60405161ffff8316907f2b5dd09586b0a77189378432fe5fa9ced1647232ebb416f3ce6e4b5690cc352290600090a2505050565b6008546007546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015233602482015261ffff841660448201529116906323b872dd90606401600060405180830381600087803b158015612f9d57600080fd5b505af1158015612fb1573d6000803e3d6000fd5b5050505061ffff81166000818152600a602052604080822060050180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1663010000001790555133917f2f2d6977500faba117d2e08d2f1dfca214533a9bf172c0f0104018a555015f2291a350565b6001600160a01b03821661306c576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610840565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610bbc576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063150b7a0290613134903390889087908790600401614333565b6020604051808303816000875af192505050801561316f575060408051601f3d908101601f1916820190925261316c91810190614365565b60015b6131f1573d80801561319d576040519150601f19603f3d011682016040523d82523d6000602084013e6131a2565b606091505b5080516000036131e9576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610840565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014613277576040517f64a0ae920000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610840565b5050505050565b606061328982612453565b5060006132a160408051602081019091526000815290565b905060008151116132c157604051806020016040528060008152506132ec565b806132cb846134f6565b6040516020016132dc929190613f98565b6040516020818303038152906040525b9392505050565b808061330757506001600160a01b03821615155b1561340157600061331784612453565b90506001600160a01b038316158015906133435750826001600160a01b0316816001600160a01b031614155b801561337557506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b156133b7576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610840565b81156133ff5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b613454838383613596565b610bdd576001600160a01b03831661349b576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610840565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610840565b6134e98383613619565b610bdd60008484846130d9565b60606000613503836136b0565b600101905060008167ffffffffffffffff811115613523576135236139bf565b6040519080825280601f01601f19166020018201604052801561354d576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461355757509392505050565b60006001600160a01b038316158015906120335750826001600160a01b0316846001600160a01b031614806135f057506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b806120335750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160a01b03821661365c576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610840565b600061366a838360006124b2565b90506001600160a01b03811615610bdd576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610840565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106136f9577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613725576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061374357662386f26fc10000830492506010015b6305f5e100831061375b576305f5e100830492506008015b612710831061376f57612710830492506004015b60648310613781576064830492506002015b600a83106105f05760010192915050565b50805461379e90613e18565b6000825580601f106137ae575050565b601f016020900490600052602060002090810190611c2391905b808211156137dc57600081556001016137c8565b5090565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c2357600080fd5b60006020828403121561382057600080fd5b81356132ec816137e0565b60005b8381101561384657818101518382015260200161382e565b50506000910152565b6000815180845261386781602086016020860161382b565b601f01601f19169290920160200192915050565b6020815260006132ec602083018461384f565b6000602082840312156138a057600080fd5b5035919050565b6001600160a01b0381168114611c2357600080fd5b600080604083850312156138cf57600080fd5b82356138da816138a7565b946020939093013593505050565b803560ff811681146138f957600080fd5b919050565b60006020828403121561391057600080fd5b6132ec826138e8565b60ff84168152606060208201526000613935606083018561384f565b8281036040840152613947818561384f565b9695505050505050565b803561ffff811681146138f957600080fd5b60006020828403121561397557600080fd5b6132ec82613951565b60008060006060848603121561399357600080fd5b833561399e816138a7565b925060208401356139ae816138a7565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115613a0957613a096139bf565b604051601f8501601f19908116603f01168101908282118183101715613a3157613a316139bf565b81604052809350858152868686011115613a4a57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112613a7557600080fd5b6132ec838335602085016139ee565b600080600060608486031215613a9957600080fd5b613aa2846138e8565b9250602084013567ffffffffffffffff80821115613abf57600080fd5b613acb87838801613a64565b93506040860135915080821115613ae157600080fd5b50613aee86828701613a64565b9150509250925092565b60008060408385031215613b0b57600080fd5b613b14836138e8565b9150613b2260208401613951565b90509250929050565b600061016060ff8e1683528c6020840152806040840152613b4e8184018d61384f565b90508281036060840152613b62818c61384f565b90508281036080840152613b76818b61384f565b89151560a085015288151560c085015287151560e08501529050851515610100840152841515610120840152828103610140840152613bb5818561384f565b9e9d5050505050505050505050505050565b600060208284031215613bd957600080fd5b81356132ec816138a7565b60008060008060008060c08789031215613bfd57600080fd5b613c06876138e8565b955060208701359450604087013567ffffffffffffffff80821115613c2a57600080fd5b613c368a838b01613a64565b95506060890135915080821115613c4c57600080fd5b613c588a838b01613a64565b94506080890135915080821115613c6e57600080fd5b613c7a8a838b01613a64565b935060a0890135915080821115613c9057600080fd5b50613c9d89828a01613a64565b9150509295509295509295565b60008060408385031215613cbd57600080fd5b8235613cc8816138a7565b915060208301358015158114613cdd57600080fd5b809150509250929050565b61ffff8816815260ff8716602082015260e060408201526000613d0e60e083018861384f565b8281036060840152613d20818861384f565b90508281036080840152613d34818761384f565b905082810360a0840152613d48818661384f565b905082810360c0840152613d5c818561384f565b9a9950505050505050505050565b60008060008060808587031215613d8057600080fd5b8435613d8b816138a7565b93506020850135613d9b816138a7565b925060408501359150606085013567ffffffffffffffff811115613dbe57600080fd5b8501601f81018713613dcf57600080fd5b613dde878235602084016139ee565b91505092959194509250565b60008060408385031215613dfd57600080fd5b8235613e08816138a7565b91506020830135613cdd816138a7565b600181811c90821680613e2c57607f821691505b602082108103613e65577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215613e7d57600080fd5b81516132ec816138a7565b601f821115610bdd576000816000526020600020601f850160051c81016020861015613eb15750805b601f850160051c820191505b81811015613ed057828155600101613ebd565b505050505050565b815167ffffffffffffffff811115613ef257613ef26139bf565b613f0681613f008454613e18565b84613e88565b602080601f831160018114613f3b5760008415613f235750858301515b600019600386901b1c1916600185901b178555613ed0565b600085815260208120601f198616915b82811015613f6a57888601518255948401946001909101908401613f4b565b5085821015613f885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351613faa81846020880161382b565b835190830190613fbe81836020880161382b565b01949350505050565b818103613fd2575050565b613fdc8254613e18565b67ffffffffffffffff811115613ff457613ff46139bf565b61400281613f008454613e18565b6000601f821160018114614036576000831561401e5750848201545b600019600385901b1c1916600184901b178455613277565b600085815260209020601f19841690600086815260209020845b838110156140705782860154825560019586019590910190602001614050565b5085831015613f885793015460001960f8600387901b161c19169092555050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff8083168181036140e0576140e061409a565b6001019392505050565b600060ff821660ff81036141005761410061409a565b60010192915050565b600060ff82168061411c5761411c61409a565b6000190192915050565b6000815461413381613e18565b6001828116801561414b57600181146141605761418f565b60ff198416875282151583028701945061418f565b8560005260208060002060005b858110156141865781548a82015290840190820161416d565b50505082870194505b5050505092915050565b7f626f6f6b696e674964000000000000000000000000000000000000000000000081527fffff0000000000000000000000000000000000000000000000000000000000008860f01b1660098201527f726f6f6d49640000000000000000000000000000000000000000000000000000600b8201527fff000000000000000000000000000000000000000000000000000000000000008760f81b1660118201527f6465736372697074696f6e426f6f6b696e6700000000000000000000000000006012820152600061426d6024830188614126565b7f6465736372697074696f6e526f6f6d0000000000000000000000000000000000815261429d600f820188614126565b90507f64617465436865636b496e00000000000000000000000000000000000000000081526142cf600b820187614126565b90507f64617465436865636b4f757400000000000000000000000000000000000000008152614301600c820186614126565b90507f746f6b656e5552490000000000000000000000000000000000000000000000008152613d5c6008820185614126565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613947608083018461384f565b60006020828403121561437757600080fd5b81516132ec816137e056fea164736f6c6343000818000a