0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100dd565b5f54610100900460ff161561008c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146100db575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611cbb6101115f395f81816104ba015281816104fa015281816106c40152818161070401526107910152611cbb5ff3fe6080604052600436106100ef575f3560e01c8063485cc9551161008757806391d148541161005757806391d14854146102a5578063a217fddf146102c4578063a30c7d11146102d7578063d547741f146102f6575f80fd5b8063485cc955146102205780634f1ef2861461023f57806352d1902d146102525780637a9b9c8614610266575f80fd5b80632f2ff15d116100c25780632f2ff15d146101a3578063364bc15a146101c257806336568abe146101e25780633659cfe614610201575f80fd5b806301ffc9a7146100f35780631889046a14610127578063225f606314610148578063248a9ca314610167575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004611638565b610315565b60405190151581526020015b60405180910390f35b348015610132575f80fd5b506101466101413660046116c2565b61034b565b005b348015610153575f80fd5b5061014661016236600461178f565b6103d5565b348015610172575f80fd5b5061019561018136600461180d565b5f9081526065602052604090206001015490565b60405190815260200161011e565b3480156101ae575f80fd5b506101466101bd366004611824565b610409565b3480156101cd575f80fd5b506101955f80516020611c1f83398151915281565b3480156101ed575f80fd5b506101466101fc366004611824565b610432565b34801561020c575f80fd5b5061014661021b36600461184e565b6104b0565b34801561022b575f80fd5b5061014661023a366004611867565b61058d565b61014661024d3660046118fb565b6106ba565b34801561025d575f80fd5b50610195610785565b348015610271575f80fd5b5061028d73a045d4daea28ba7bfe234c96eaa03dafae85a14781565b6040516001600160a01b03909116815260200161011e565b3480156102b0575f80fd5b506101126102bf366004611824565b610836565b3480156102cf575f80fd5b506101955f81565b3480156102e2575f80fd5b506101466102f136600461178f565b610860565b348015610301575f80fd5b50610146610310366004611824565b61088c565b5f6001600160e01b03198216637965db0b60e01b148061034557506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f80516020611c1f833981519152610362816108b0565b6001600160a01b038a166103af5760405162461bcd60e51b815260206004820152600f60248201526e0c081859191c995cdcc81d985d5b1d608a1b60448201526064015b60405180910390fd5b6103bc8a8a8a8a8a6108ba565b6103c98a8686868661097a565b50505050505050505050565b5f80516020611c1f8339815191526103ec816108b0565b6103f68686610b40565b610401848484610bca565b505050505050565b5f82815260656020526040902060010154610423816108b0565b61042d8383610c70565b505050565b6001600160a01b03811633146104a25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016103a6565b6104ac8282610cf5565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104f85760405162461bcd60e51b81526004016103a690611986565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105405f80516020611c3f833981519152546001600160a01b031690565b6001600160a01b0316146105665760405162461bcd60e51b81526004016103a6906119d2565b61056f81610d5b565b604080515f8082526020820190925261058a91839190610d65565b50565b5f54610100900460ff16158080156105ab57505f54600160ff909116105b806105c45750303b1580156105c457505f5460ff166001145b6106275760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103a6565b5f805460ff191660011790558015610648575f805461ff0019166101001790555b610650610ecf565b61065a5f84610f3b565b6106715f80516020611c1f83398151915283610f3b565b801561042d575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107025760405162461bcd60e51b81526004016103a690611986565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661074a5f80516020611c3f833981519152546001600160a01b031690565b6001600160a01b0316146107705760405162461bcd60e51b81526004016103a6906119d2565b61077982610d5b565b6104ac82826001610d65565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108245760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103a6565b505f80516020611c3f83398151915290565b5f9182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f80516020611c1f833981519152610877816108b0565b6108818686610f45565b61040184848461108a565b5f828152606560205260409020600101546108a6816108b0565b61042d8383610cf5565b61058a81336111f4565b5f5b8381101561040157856001600160a01b03166346e6ac498686848181106108e5576108e5611a1e565b90506020020160208101906108fa919061184e565b85858581811061090c5761090c611a1e565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044015f604051808303815f87803b158015610958575f80fd5b505af115801561096a573d5f803e3d5ffd5b5050600190920191506108bc9050565b5f5b610987600185611a46565b811015610a4457856001600160a01b03166346e6ac498686848181106109af576109af611a1e565b90506020020160208101906109c4919061184e565b8585858181106109d6576109d6611a1e565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044015f604051808303815f87803b158015610a22575f80fd5b505af1158015610a34573d5f803e3d5ffd5b50506001909201915061097c9050565b505f856001600160a01b0316639aa7df946040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa79190611a59565b90506001600160a01b0386166346e6ac498686610ac5600182611a46565b818110610ad457610ad4611a1e565b9050602002016020810190610ae9919061184e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015610b2e575f80fd5b505af11580156103c9573d5f803e3d5ffd5b5f5b8181101561042d57828282818110610b5c57610b5c611a1e565b9050602002016020810190610b71919061184e565b6001600160a01b0316632606a10b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610ba8575f80fd5b505af1158015610bba573d5f803e3d5ffd5b505060019092019150610b429050565b5f5b81811015610c6a57836001600160a01b0316636ec2b8d4848484818110610bf557610bf5611a1e565b9050602002016020810190610c0a919061184e565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b158015610c48575f80fd5b505af1158015610c5a573d5f803e3d5ffd5b505060019092019150610bcc9050565b50505050565b610c7a8282610836565b6104ac575f8281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610cb13390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610cff8282610836565b156104ac575f8281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b5f6104ac816108b0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610d985761042d8361124d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610df2575060408051601f3d908101601f19168201909252610def91810190611a59565b60015b610e555760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103a6565b5f80516020611c3f8339815191528114610ec35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103a6565b5061042d8383836112e8565b5f54610100900460ff16610f395760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103a6565b565b6104ac8282610c70565b73a045d4daea28ba7bfe234c96eaa03dafae85a1475f5b82811015610c6a575f826001600160a01b03166310fcd40d868685818110610f8657610f86611a1e565b9050602002016020810190610f9b919061184e565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f60405180830381865afa158015610fdc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110039190810190611a92565b50905080156110815784848381811061101e5761101e611a1e565b9050602002016020810190611033919061184e565b6001600160a01b0316632606a10b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561106a575f80fd5b505af115801561107c573d5f803e3d5ffd5b505050505b50600101610f5c565b73a045d4daea28ba7bfe234c96eaa03dafae85a1475f5b828110156111ed575f826001600160a01b031663f6ea6b6c878787868181106110cc576110cc611a1e565b90506020020160208101906110e1919061184e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f60405180830381865afa158015611129573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111509190810190611a92565b50905080156111e457856001600160a01b0316636ec2b8d486868581811061117a5761117a611a1e565b905060200201602081019061118f919061184e565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b1580156111cd575f80fd5b505af11580156111df573d5f803e3d5ffd5b505050505b506001016110a1565b5050505050565b6111fe8282610836565b6104ac5761120b8161130c565b61121683602061131e565b604051602001611227929190611b1e565b60408051601f198184030181529082905262461bcd60e51b82526103a691600401611b92565b6001600160a01b0381163b6112ba5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103a6565b5f80516020611c3f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6112f1836114bb565b5f825111806112fd5750805b1561042d57610c6a83836114fa565b60606103456001600160a01b03831660145b60605f61132c836002611bc4565b611337906002611bdb565b67ffffffffffffffff81111561134f5761134f61188f565b6040519080825280601f01601f191660200182016040528015611379576020820181803683370190505b509050600360fc1b815f8151811061139357611393611a1e565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106113c1576113c1611a1e565b60200101906001600160f81b03191690815f1a9053505f6113e3846002611bc4565b6113ee906001611bdb565b90505b6001811115611465576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061142257611422611a1e565b1a60f81b82828151811061143857611438611a1e565b60200101906001600160f81b03191690815f1a90535060049490941c9361145e81611bee565b90506113f1565b5083156114b45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016103a6565b9392505050565b6114c48161124d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114b48383604051806060016040528060278152602001611c5f6027913960605f80856001600160a01b0316856040516115369190611c03565b5f60405180830381855af49150503d805f811461156e576040519150601f19603f3d011682016040523d82523d5f602084013e611573565b606091505b50915091506115848683838761158e565b9695505050505050565b606083156115fc5782515f036115f5576001600160a01b0385163b6115f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103a6565b5081611606565b611606838361160e565b949350505050565b81511561161e5781518083602001fd5b8060405162461bcd60e51b81526004016103a69190611b92565b5f60208284031215611648575f80fd5b81356001600160e01b0319811681146114b4575f80fd5b80356001600160a01b0381168114611675575f80fd5b919050565b5f8083601f84011261168a575f80fd5b50813567ffffffffffffffff8111156116a1575f80fd5b6020830191508360208260051b85010111156116bb575f80fd5b9250929050565b5f805f805f805f805f60a08a8c0312156116da575f80fd5b6116e38a61165f565b985060208a013567ffffffffffffffff808211156116ff575f80fd5b61170b8d838e0161167a565b909a50985060408c0135915080821115611723575f80fd5b61172f8d838e0161167a565b909850965060608c0135915080821115611747575f80fd5b6117538d838e0161167a565b909650945060808c013591508082111561176b575f80fd5b506117788c828d0161167a565b915080935050809150509295985092959850929598565b5f805f805f606086880312156117a3575f80fd5b853567ffffffffffffffff808211156117ba575f80fd5b6117c689838a0161167a565b90975095508591506117da6020890161165f565b945060408801359150808211156117ef575f80fd5b506117fc8882890161167a565b969995985093965092949392505050565b5f6020828403121561181d575f80fd5b5035919050565b5f8060408385031215611835575f80fd5b823591506118456020840161165f565b90509250929050565b5f6020828403121561185e575f80fd5b6114b48261165f565b5f8060408385031215611878575f80fd5b6118818361165f565b91506118456020840161165f565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118cc576118cc61188f565b604052919050565b5f67ffffffffffffffff8211156118ed576118ed61188f565b50601f01601f191660200190565b5f806040838503121561190c575f80fd5b6119158361165f565b9150602083013567ffffffffffffffff811115611930575f80fd5b8301601f81018513611940575f80fd5b803561195361194e826118d4565b6118a3565b818152866020838501011115611967575f80fd5b816020840160208301375f602083830101528093505050509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561034557610345611a32565b5f60208284031215611a69575f80fd5b5051919050565b5f5b83811015611a8a578181015183820152602001611a72565b50505f910152565b5f8060408385031215611aa3575f80fd5b82518015158114611ab2575f80fd5b602084015190925067ffffffffffffffff811115611ace575f80fd5b8301601f81018513611ade575f80fd5b8051611aec61194e826118d4565b818152866020838501011115611b00575f80fd5b611b11826020830160208601611a70565b8093505050509250929050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081525f8351611b55816017850160208801611a70565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611b86816028840160208801611a70565b01602801949350505050565b602081525f8251806020840152611bb0816040850160208701611a70565b601f01601f19169190910160400192915050565b808202811582820484141761034557610345611a32565b8082018082111561034557610345611a32565b5f81611bfc57611bfc611a32565b505f190190565b5f8251611c14818460208701611a70565b919091019291505056fefc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209f2aca8bd12389b01352a5ece2391a7edbbe3367e5da10055f2f4ada9f9deb1964736f6c63430008170033