60806040523480156200001157600080fd5b5060405162003d8738038062003d878339810160408190526200003491620002b2565b82828582620000433362000100565b80516200005890600190602084019062000159565b5050600280546001600160a01b0390921668010000000000000000026001600160e01b03199092166001600160401b034216179190911790556004805460ff191690558151620000b090600590602085019062000159565b508051620000c690600690602084019062000159565b50508151620000de9150600c90602084019062000159565b50620000f6600e6200015060201b62001d461760201c565b50505050620003b2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80546001019055565b82805462000167906200035f565b90600052602060002090601f0160209004810192826200018b5760008555620001d6565b82601f10620001a657805160ff1916838001178555620001d6565b82800160010185558215620001d6579182015b82811115620001d6578251825591602001919060010190620001b9565b50620001e4929150620001e8565b5090565b5b80821115620001e45760008155600101620001e9565b600082601f83011262000210578081fd5b81516001600160401b03808211156200022d576200022d6200039c565b604051601f8301601f19908116603f011681019082821181831017156200025857620002586200039c565b8160405283815260209250868385880101111562000274578485fd5b8491505b8382101562000297578582018301518183018401529082019062000278565b83821115620002a857848385830101525b9695505050505050565b60008060008060808587031215620002c8578384fd5b84516001600160a01b0381168114620002df578485fd5b60208601519094506001600160401b0380821115620002fc578485fd5b6200030a88838901620001ff565b9450604087015191508082111562000320578384fd5b6200032e88838901620001ff565b9350606087015191508082111562000344578283fd5b506200035387828801620001ff565b91505092959194509250565b600181811c908216806200037457607f821691505b602082108114156200039657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6139c580620003c26000396000f3fe6080604052600436106102895760003560e01c80636352211e116101535780639e6afc0e116100cb578063d128e65e1161007f578063d7a1cfe111610064578063d7a1cfe114610758578063e985e9c514610778578063f2fde38b146107c1576102c9565b8063d128e65e14610718578063d42afb5614610738576102c9565b8063b88d4fde116100b0578063b88d4fde146106af578063c87b56dd146106cf578063cf09e0d0146106ef576102c9565b80639e6afc0e1461067a578063a22cb4651461068f576102c9565b80637ae86a57116101225780638da5cb5b116101075780638da5cb5b146106275780639325df261461064557806395d89b4114610665576102c9565b80637ae86a57146105f25780638456cb5914610612576102c9565b80636352211e1461056257806368125a1b1461058257806370a08231146105bd578063715018a6146105dd576102c9565b80632a96305f116102015780634622b155116101b557806359659e901161019a57806359659e90146105005780635a46cf3d1461052a5780635c975abb1461054a576102c9565b80634622b155146104c057806355f804b3146104e0576102c9565b80633f4ba83a116101e65780633f4ba83a1461046b57806342842e0e1461048057806342966c68146104a0576102c9565b80632a96305f146104435780633ccfd60b14610456576102c9565b8063162094c41161025857806318160ddd1161023d57806318160ddd146103e457806323b872dd1461040357806328d8058314610423576102c9565b8063162094c4146103af57806317d7de7c146103cf576102c9565b806301ffc9a7146102fe57806306fdde0314610333578063081812fc14610355578063095ea7b31461038d576102c9565b366102c957604080513381523460208201527f7664b23f13b4424f5be77d07828378b5a26612849564d241cfd54f0e7d4cd9ad91015b60405180910390a1005b604080513381523460208201527f26875833861a2b006512a11f1b86edf95df96131040f3caeed72989ee985808391016102bf565b34801561030a57600080fd5b5061031e6103193660046131f9565b6107e1565b60405190151581526020015b60405180910390f35b34801561033f57600080fd5b506103486108c6565b60405161032a91906135af565b34801561036157600080fd5b5061037561037036600461341d565b610958565b6040516001600160a01b03909116815260200161032a565b34801561039957600080fd5b506103ad6103a8366004613177565b610a03565b005b3480156103bb57600080fd5b506103ad6103ca36600461344d565b610b35565b3480156103db57600080fd5b50610348610bab565b3480156103f057600080fd5b50600d545b60405190815260200161032a565b34801561040f57600080fd5b506103ad61041e366004613089565b610bba565b34801561042f57600080fd5b506103ad61043e3660046131a2565b610c41565b6103ad6104513660046132d7565b610d27565b34801561046257600080fd5b506103ad610ea2565b34801561047757600080fd5b506103ad610fa2565b34801561048c57600080fd5b506103ad61049b366004613089565b611006565b3480156104ac57600080fd5b506103ad6104bb36600461341d565b611021565b3480156104cc57600080fd5b506103ad6104db366004613231565b611092565b3480156104ec57600080fd5b506103ad6104fb366004613231565b6111b5565b34801561050c57600080fd5b506002546801000000000000000090046001600160a01b0316610375565b34801561053657600080fd5b506103ad61054536600461341d565b611272565b34801561055657600080fd5b5060045460ff1661031e565b34801561056e57600080fd5b5061037561057d36600461341d565b611403565b34801561058e57600080fd5b5061031e61059d366004613019565b6001600160a01b031660009081526003602052604090205460ff16151590565b3480156105c957600080fd5b506103f56105d8366004613019565b61148e565b3480156105e957600080fd5b506103ad611528565b3480156105fe57600080fd5b506103ad61060d366004613089565b61158c565b34801561061e57600080fd5b506103ad611671565b34801561063357600080fd5b506000546001600160a01b0316610375565b34801561065157600080fd5b506103ad610660366004613019565b6116d3565b34801561067157600080fd5b5061034861174e565b34801561068657600080fd5b506103ad61175d565b34801561069b57600080fd5b506103ad6106aa366004613146565b611974565b3480156106bb57600080fd5b506103ad6106ca3660046130c9565b61197f565b3480156106db57600080fd5b506103486106ea36600461341d565b611a07565b3480156106fb57600080fd5b5060025460405167ffffffffffffffff909116815260200161032a565b34801561072457600080fd5b506103ad6107333660046133ab565b611a12565b34801561074457600080fd5b506103ad610753366004613019565b611b49565b34801561076457600080fd5b506103ad610773366004613019565b611be9565b34801561078457600080fd5b5061031e610793366004613051565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b3480156107cd57600080fd5b506103ad6107dc366004613019565b611c67565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061087457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806108c057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600580546108d590613882565b80601f016020809104026020016040519081016040528092919081815260200182805461090190613882565b801561094e5780601f106109235761010080835404028352916020019161094e565b820191906000526020600020905b81548152906001019060200180831161093157829003601f168201915b5050505050905090565b6000818152600760205260408120546001600160a01b03166109e75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600960205260409020546001600160a01b031690565b6000610a0e82611403565b9050806001600160a01b0316836001600160a01b03161415610a985760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016109de565b336001600160a01b0382161480610ab45750610ab48133610793565b610b265760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016109de565b610b308383611d4f565b505050565b6000546001600160a01b0316331480610b5f57503360009081526003602052604090205460ff1615155b610b9d5760405162461bcd60e51b815260206004820152600f60248201526e139bdd1299599990dbdb9d1c9858dd608a1b60448201526064016109de565b610ba78282611dca565b5050565b6060600180546108d590613882565b610bc43382611e73565b610c365760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016109de565b610b30838383611f7b565b6000546001600160a01b0316331480610c6b57503360009081526003602052604090205460ff1615155b610ca95760405162461bcd60e51b815260206004820152600f60248201526e139bdd1299599990dbdb9d1c9858dd608a1b60448201526064016109de565b60648210610cf95760405162461bcd60e51b815260206004820152600b60248201527f3130303e3d416d6f756e7400000000000000000000000000000000000000000060448201526064016109de565b60005b82811015610d2157610d0f828542612160565b80610d19816138bd565b915050610cfc565b50505050565b600f546040517fa69530210000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063a695302190610d7990879087908790339034906004016135c2565b602060405180830381600087803b158015610d9357600080fd5b505af1158015610da7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcb9190613435565b90504260005b82811015610df657610de4863384612160565b80610dee816138bd565b915050610dd1565b50600080546040516001600160a01b039091169034908381818185875af1925050503d8060008114610e44576040519150601f19603f3d011682016040523d82523d6000602084013e610e49565b606091505b5050905080610e9a5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e6420457468657200000000000000000000000060448201526064016109de565b505050505050565b6000546001600160a01b03163314610efc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5050905080610f9f5760405162461bcd60e51b815260206004820152600e60248201527f4661696c6564576974686472617700000000000000000000000000000000000060448201526064016109de565b50565b6000546001600160a01b03163314610ffc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b61100461233a565b565b610b308383836040518060200160405280600081525061197f565b6000546001600160a01b031633148061104b57503360009081526003602052604090205460ff1615155b6110895760405162461bcd60e51b815260206004820152600f60248201526e139bdd1299599990dbdb9d1c9858dd608a1b60448201526064016109de565b610f9f816123d6565b6002546040517fbf40fac10000000000000000000000000000000000000000000000000000000081526000916801000000000000000090046001600160a01b03169063bf40fac1906110e89085906004016135af565b60206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190613035565b90506001600160a01b0381166111905760405162461bcd60e51b815260206004820152600b60248201527f4e6f467269656e644b657900000000000000000000000000000000000000000060448201526064016109de565b6001600160a01b03166000908152600360205260409020805460ff1916600117905550565b6000546001600160a01b03163314806111df57503360009081526003602052604090205460ff1615155b61121d5760405162461bcd60e51b815260206004820152600f60248201526e139bdd1299599990dbdb9d1c9858dd608a1b60448201526064016109de565b805161123090600c906020840190612eed565b507f80301dd3c75430c3fd2560f6a4bc1e4bd66f5b4cea0a2bd972c34ae27daadf7a3360008342604051611267949392919061366a565b60405180910390a150565b3361127c82611403565b6001600160a01b0316146112d25760405162461bcd60e51b815260206004820152600960248201527f4e6f74486f6c646572000000000000000000000000000000000000000000000060448201526064016109de565b600f546040517f9192c530000000000000000000000000000000000000000000000000000000008152600481018390526113789183916001600160a01b0390911690639192c53090602401600060405180830381600087803b15801561133757600080fd5b505af115801561134b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113739190810190613264565b611dca565b6040805160a0808252600b908201527f72657665616c546f6b656e00000000000000000000000000000000000000000060c082015233602082015290810182905260e06060820181905260009082015267ffffffffffffffff421660808201527f80301dd3c75430c3fd2560f6a4bc1e4bd66f5b4cea0a2bd972c34ae27daadf7a9061010001611267565b6000818152600760205260408120546001600160a01b0316806108c05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016109de565b60006001600160a01b03821661150c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016109de565b506001600160a01b031660009081526008602052604090205490565b6000546001600160a01b031633146115825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b61100460006123fa565b6000546001600160a01b03163314806115b657503360009081526003602052604090205460ff1615155b6115f45760405162461bcd60e51b815260206004820152600f60248201526e139bdd1299599990dbdb9d1c9858dd608a1b60448201526064016109de565b816001600160a01b0316836001600160a01b031614156116565760405162461bcd60e51b815260206004820152600a60248201527f73656e6465723d3d746f0000000000000000000000000000000000000000000060448201526064016109de565b610b3083838360405180602001604052806000815250612457565b6000546001600160a01b031633146116cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6110046124e0565b6000546001600160a01b0316331461172d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6060600680546108d590613882565b6000546001600160a01b031633148061178757503360009081526003602052604090205460ff1615155b6117c55760405162461bcd60e51b815260206004820152600f60248201526e139bdd1299599990dbdb9d1c9858dd608a1b60448201526064016109de565b6002546801000000000000000090046001600160a01b03166040517fbf40fac100000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d696e74696e67496e666f00000000000000000000000000000000000000000060448201526001600160a01b03919091169063bf40fac19060640160206040518083038186803b15801561186557600080fd5b505afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190613035565b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040517f4622b15500000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4e465400000000000000000000000000000000000000000000000000000000006044820152634622b15590606401600060405180830381600087803b15801561194657600080fd5b505af115801561195a573d6000803e3d6000fd5b5050600f5461100492506001600160a01b03169050611be9565b610ba7338383612568565b6119893383611e73565b6119fb5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016109de565b610d2184848484612457565b60606108c082612637565b6000546001600160a01b0316331480611a3c57503360009081526003602052604090205460ff1615155b611a7a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd1299599990dbdb9d1c9858dd608a1b60448201526064016109de565b611a8261175d565b600f546040517fd9d3962f0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d9d3962f90611ad39088908890889088908890600401613630565b600060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505050507f80301dd3c75430c3fd2560f6a4bc1e4bd66f5b4cea0a2bd972c34ae27daadf7a33858742604051611b3a94939291906136e1565b60405180910390a15050505050565b6000546001600160a01b03163314611ba35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b600280546001600160a01b0390921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055565b6000546001600160a01b03163314611c435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b03163314611cc15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109de565b6001600160a01b038116611d3d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109de565b610f9f816123fa565b80546001019055565b6000818152600960205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091558190611d9182611403565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000828152600760205260409020546001600160a01b0316611e545760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e00000000000000000000000000000000000060648201526084016109de565b6000828152600b602090815260409091208251610b3092840190612eed565b6000818152600760205260408120546001600160a01b0316611efd5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016109de565b6000611f0883611403565b9050806001600160a01b0316846001600160a01b03161480611f4f57506001600160a01b038082166000908152600a602090815260408083209388168352929052205460ff165b80611f735750836001600160a01b0316611f6884610958565b6001600160a01b0316145b949350505050565b826001600160a01b0316611f8e82611403565b6001600160a01b03161461200a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016109de565b6001600160a01b0382166120855760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109de565b6120908383836127b5565b61209b600082611d4f565b6001600160a01b03831660009081526008602052604081208054600192906120c490849061383f565b90915550506001600160a01b03821660009081526008602052604081208054600192906120f2908490613813565b9091555050600081815260076020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600061216b600e5490565b905061217b600e80546001019055565b6121858382612808565b600061219082612822565b6040516020016121a091906134ed565b60405160208183030381529060405290506000816040516020016121c4919061352e565b60405160208183030381529060405290506121df8382611dca565b600f54604080516080810182528881526001600160a01b03888116602083015267ffffffffffffffff8816828401526000606083015291517fb798f736000000000000000000000000000000000000000000000000000000008152919092169163b798f7369161225391879160040161373d565b600060405180830381600087803b15801561226d57600080fd5b505af1158015612281573d6000803e3d6000fd5b505050506001600d60008282546122989190613813565b90915550506040805160a08082526004908201527f6d696e740000000000000000000000000000000000000000000000000000000060c08201526001600160a01b0387166020820152600081830181905260e0606083018190528201524267ffffffffffffffff16608082015290517f80301dd3c75430c3fd2560f6a4bc1e4bd66f5b4cea0a2bd972c34ae27daadf7a918190036101000190a1505050505050565b60045460ff1661238c5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016109de565b6004805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6123df81612970565b6001600d60008282546123f2919061383f565b909155505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612462848484611f7b565b61246e848484846129b0565b610d215760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016109de565b60045460ff16156125335760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016109de565b6004805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123b93390565b816001600160a01b0316836001600160a01b031614156125ca5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109de565b6001600160a01b038381166000818152600a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000818152600760205260409020546060906001600160a01b03166126c45760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f722060448201527f6e6f6e6578697374656e7420746f6b656e00000000000000000000000000000060648201526084016109de565b6000828152600b6020526040812080546126dd90613882565b80601f016020809104026020016040519081016040528092919081815260200182805461270990613882565b80156127565780601f1061272b57610100808354040283529160200191612756565b820191906000526020600020905b81548152906001019060200180831161273957829003601f168201915b505050505090506000612767612b5d565b905080516000141561277a575092915050565b8151156127ac5780826040516020016127949291906134be565b60405160208183030381529060405292505050919050565b611f7384612b6c565b60045460ff1615610b305760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016109de565b610ba7828260405180602001604052806000815250612c55565b60608161286257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561288c5780612876816138bd565b91506128859050600a8361382b565b9150612866565b60008167ffffffffffffffff8111156128b557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156128df576020820181803683370190505b5090505b8415611f73576128f460018361383f565b9150612901600a866138f6565b61290c906030613813565b60f81b81838151811061292f57634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612969600a8661382b565b94506128e3565b61297981612cde565b6000818152600b60205260409020805461299290613882565b159050610f9f576000818152600b60205260408120610f9f91612f71565b60006001600160a01b0384163b15612b52576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290612a0d903390899088908890600401613573565b602060405180830381600087803b158015612a2757600080fd5b505af1925050508015612a57575060408051601f3d908101601f19168201909252612a5491810190613215565b60015b612b07573d808015612a85576040519150601f19603f3d011682016040523d82523d6000602084013e612a8a565b606091505b508051612aff5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016109de565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611f73565b506001949350505050565b6060600c80546108d590613882565b6000818152600760205260409020546060906001600160a01b0316612bf95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016109de565b6000612c03612b5d565b90506000815111612c235760405180602001604052806000815250612c4e565b80612c2d84612822565b604051602001612c3e9291906134be565b6040516020818303038152906040525b9392505050565b612c5f8383612d92565b612c6c60008484846129b0565b610b305760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016109de565b6000612ce982611403565b9050612cf7816000846127b5565b612d02600083611d4f565b6001600160a01b0381166000908152600860205260408120805460019290612d2b90849061383f565b9091555050600082815260076020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b038216612de85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109de565b6000818152600760205260409020546001600160a01b031615612e4d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109de565b612e59600083836127b5565b6001600160a01b0382166000908152600860205260408120805460019290612e82908490613813565b9091555050600081815260076020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054612ef990613882565b90600052602060002090601f016020900481019282612f1b5760008555612f61565b82601f10612f3457805160ff1916838001178555612f61565b82800160010185558215612f61579182015b82811115612f61578251825591602001919060010190612f46565b50612f6d929150612fa7565b5090565b508054612f7d90613882565b6000825580601f10612f8d575050565b601f016020900490600052602060002090810190610f9f91905b5b80821115612f6d5760008155600101612fa8565b6000612fcf612fca846137eb565b6137ba565b9050828152838383011115612fe357600080fd5b828260208301376000602084830101529392505050565b600082601f83011261300a578081fd5b612c4e83833560208501612fbc565b60006020828403121561302a578081fd5b8135612c4e8161394c565b600060208284031215613046578081fd5b8151612c4e8161394c565b60008060408385031215613063578081fd5b823561306e8161394c565b9150602083013561307e8161394c565b809150509250929050565b60008060006060848603121561309d578081fd5b83356130a88161394c565b925060208401356130b88161394c565b929592945050506040919091013590565b600080600080608085870312156130de578081fd5b84356130e98161394c565b935060208501356130f98161394c565b925060408501359150606085013567ffffffffffffffff81111561311b578182fd5b8501601f8101871361312b578182fd5b61313a87823560208401612fbc565b91505092959194509250565b60008060408385031215613158578182fd5b82356131638161394c565b91506020830135801515811461307e578182fd5b60008060408385031215613189578081fd5b82356131948161394c565b946020939093013593505050565b6000806000606084860312156131b6578081fd5b83356131c18161394c565b925060208401359150604084013567ffffffffffffffff8111156131e3578182fd5b6131ef86828701612ffa565b9150509250925092565b60006020828403121561320a578081fd5b8135612c4e81613961565b600060208284031215613226578081fd5b8151612c4e81613961565b600060208284031215613242578081fd5b813567ffffffffffffffff811115613258578182fd5b611f7384828501612ffa565b600060208284031215613275578081fd5b815167ffffffffffffffff81111561328b578182fd5b8201601f8101841361329b578182fd5b80516132a9612fca826137eb565b8181528560208385010111156132bd578384fd5b6132ce826020830160208601613856565b95945050505050565b6000806000606084860312156132eb578081fd5b833567ffffffffffffffff80821115613302578283fd5b61330e87838801612ffa565b94506020915081860135935060408601358181111561332b578384fd5b8601601f8101881361333b578384fd5b80358281111561334d5761334d613936565b8060051b925061335e8484016137ba565b8181528481019083860185850187018c1015613378578788fd5b8795505b8386101561339a57803583526001959095019491860191860161337c565b508096505050505050509250925092565b600080600080600060a086880312156133c2578283fd5b853567ffffffffffffffff8111156133d8578384fd5b6133e488828901612ffa565b955050602086013593506040860135925060608601359150608086013560ff8116811461340f578182fd5b809150509295509295909350565b60006020828403121561342e578081fd5b5035919050565b600060208284031215613446578081fd5b5051919050565b6000806040838503121561345f578182fd5b82359150602083013567ffffffffffffffff81111561347c578182fd5b61348885828601612ffa565b9150509250929050565b600081518084526134aa816020860160208601613856565b601f01601f19169290920160200192915050565b600083516134d0818460208801613856565b8351908301906134e4818360208801613856565b01949350505050565b600082516134ff818460208701613856565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250600501919050565b7f6c6f636b65642f00000000000000000000000000000000000000000000000000815260008251613566816007850160208701613856565b9190910160070192915050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526135a56080830184613492565b9695505050505050565b602081526000612c4e6020830184613492565b60a0815260006135d560a0830188613492565b60208381018890528382036040850152865180835287820192820190845b8181101561360f578451835293830193918301916001016135f3565b50506001600160a01b03969096166060850152505050608001529392505050565b60a08152600061364360a0830188613492565b905085602083015284604083015283606083015260ff831660808301529695505050505050565b60a08152600a60a08201527f736574426173655552490000000000000000000000000000000000000000000060c08201526001600160a01b038516602082015283604082015260e0606082015260006136c660e0830185613492565b905067ffffffffffffffff8316608083015295945050505050565b60a08152600e60a08201527f696e697469616c4d696e74696e6700000000000000000000000000000000000060c08201526001600160a01b038516602082015283604082015260e0606082015260006136c660e0830185613492565b82815260406020820152600082516080604084015261375f60c0840182613492565b90506001600160a01b03602085015116606084015267ffffffffffffffff60408501511660808401526060840151600681106137a957634e487b7160e01b83526021600452602483fd5b60a093909301929092525092915050565b604051601f8201601f1916810167ffffffffffffffff811182821017156137e3576137e3613936565b604052919050565b600067ffffffffffffffff82111561380557613805613936565b50601f01601f191660200190565b600082198211156138265761382661390a565b500190565b60008261383a5761383a613920565b500490565b6000828210156138515761385161390a565b500390565b60005b83811015613871578181015183820152602001613859565b83811115610d215750506000910152565b600181811c9082168061389657607f821691505b602082108114156138b757634e487b7160e01b600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138ef576138ef61390a565b5060010190565b60008261390557613905613920565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f9f57600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610f9f57600080fdfea2646970667358221220c4178bbabb58c97b160fdcbf3bad1c7f38ebdbfb0402cd5649a00f1c861b161664736f6c634300080400330000000000000000000000006234ad765237e20612da1cb8bd11081956033615000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000084a6566664c616e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054a4c414e44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a68747470733a2f2f7a3972647636696d67312e657865637574652d6170692e61702d6e6f727468656173742d322e616d617a6f6e6177732e636f6d2f70726f642f6e66742f6c616e642f00000000000000000000000000000000000000000000