60806040526d0c7ad30df3280e0af8792893091b600b55604051620017dd380380620017dd8339810160408190526200003891620002e7565b888888600562000049848262000443565b50600662000058838262000443565b50600455505060078590556008849055600980546001600160a01b038086166001600160a01b031990921691909117909155604051908216903480156108fc02916000818181858888f19350505050158015620000b9573d6000803e3d6000fd5b50600a80546001600160a01b0319166001600160a01b038416178155620000fb908390620000e9908a9062000624565b620000f5908962000639565b6200010a565b50505050505050505062000669565b6001600160a01b038216620001655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806003600082825462000179919062000653565b90915550506001600160a01b03821660009081526001602052604081208054839290620001a890849062000653565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200021f57600080fd5b81516001600160401b03808211156200023c576200023c620001f7565b604051601f8301601f19908116603f01168101908282118183101715620002675762000267620001f7565b816040528381526020925086838588010111156200028457600080fd5b600091505b83821015620002a8578582018301518183018401529082019062000289565b600093810190920192909252949350505050565b6001600160a01b0381168114620002d257600080fd5b50565b8051620002e281620002bc565b919050565b60008060008060008060008060006101208a8c0312156200030757600080fd5b89516001600160401b03808211156200031f57600080fd5b6200032d8d838e016200020d565b9a5060208c01519150808211156200034457600080fd5b50620003538c828d016200020d565b98505060408a0151965060608a0151955060808a0151945060a08a0151935060c08a01516200038281620002bc565b60e08b01519093506200039581620002bc565b9150620003a66101008b01620002d5565b90509295985092959850929598565b600181811c90821680620003ca57607f821691505b602082108103620003eb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001f257600081815260208120601f850160051c810160208610156200041a5750805b601f850160051c820191505b818110156200043b5782815560010162000426565b505050505050565b81516001600160401b038111156200045f576200045f620001f7565b6200047781620004708454620003b5565b84620003f1565b602080601f831160018114620004af5760008415620004965750858301515b600019600386901b1c1916600185901b1785556200043b565b600085815260208120601f198616915b82811015620004e057888601518255948401946001909101908401620004bf565b5085821015620004ff5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005665781600019048211156200054a576200054a6200050f565b808516156200055857918102915b93841c93908002906200052a565b509250929050565b6000826200057f575060016200061e565b816200058e575060006200061e565b8160018114620005a75760028114620005b257620005d2565b60019150506200061e565b60ff841115620005c657620005c66200050f565b50506001821b6200061e565b5060208310610133831016604e8410600b8410161715620005f7575081810a6200061e565b62000603838362000525565b80600019048211156200061a576200061a6200050f565b0290505b92915050565b60006200063283836200056e565b9392505050565b80820281158282048414176200061e576200061e6200050f565b808201808211156200061e576200061e6200050f565b61116480620006796000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063875ae990116100c3578063aa797dbc1161007c578063aa797dbc146102b6578063b2bdfa7b146102d9578063cf820461146102ec578063dd62ed3e146102f5578063f2fde38b1461032e578063fce589d81461034157600080fd5b8063875ae990146102515780638980f11f146102645780638da5cb5b1461027757806395d89b4114610288578063a457c2d714610290578063a9059cbb146102a357600080fd5b8063313ce56711610115578063313ce567146101c557806339509351146101cd57806370a08231146101e0578063715018a6146102095780637b7e8bac14610213578063869236111461023e57600080fd5b806306fdde0314610152578063095ea7b31461017057806310c8aeac1461019357806318160ddd146101aa57806323b872dd146101b2575b600080fd5b61015a61034a565b6040516101679190610ea9565b60405180910390f35b61018361017e366004610f13565b6103dc565b6040519015158152602001610167565b61019c600b5481565b604051908152602001610167565b60035461019c565b6101836101c0366004610f3d565b6103f3565b60045461019c565b6101836101db366004610f13565b6104a9565b61019c6101ee366004610f79565b6001600160a01b031660009081526001602052604090205490565b6102116104e0565b005b600954610226906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b61021161024c366004610fa5565b610554565b61021161025f366004610fdc565b6105a9565b610211610272366004610f13565b6105fd565b600a546001600160a01b0316610226565b61015a6106be565b61018361029e366004610f13565b6106cd565b6101836102b1366004610f13565b610768565b6101836102c4366004610f79565b60006020819052908152604090205460ff1681565b600a54610226906001600160a01b031681565b61019c60075481565b61019c610303366004611011565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61021161033c366004610f79565b610775565b61019c60085481565b60606005805461035990611044565b80601f016020809104026020016040519081016040528092919081815260200182805461038590611044565b80156103d25780601f106103a7576101008083540402835291602001916103d2565b820191906000526020600020905b8154815290600101906020018083116103b557829003601f168201915b5050505050905090565b60006103e9338484610860565b5060015b92915050565b6000610400848484610984565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561048a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61049e85336104998685611094565b610860565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916103e99185906104999086906110a7565b600a546001600160a01b0316331461050a5760405162461bcd60e51b8152600401610481906110ba565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600a546001600160a01b0316331461057e5760405162461bcd60e51b8152600401610481906110ba565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b600a546001600160a01b031633146105d35760405162461bcd60e51b8152600401610481906110ba565b600792909255600855600980546001600160a01b0319166001600160a01b03909216919091179055565b600a546001600160a01b031633146106275760405162461bcd60e51b8152600401610481906110ba565b816001600160a01b031663a9059cbb610648600a546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b991906110ef565b505050565b60606006805461035990611044565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561074f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610481565b61075e33856104998685611094565b5060019392505050565b60006103e9338484610984565b600a546001600160a01b0316331461079f5760405162461bcd60e51b8152600401610481906110ba565b6001600160a01b0381166108045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610481565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166108c25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610481565b6001600160a01b0382166109235760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610481565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109e85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610481565b6001600160a01b038216610a4a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610481565b6001600160a01b03831660009081526020819052604090205460ff16158015610a8c57506001600160a01b03821660009081526020819052604090205460ff16155b610ac85760405162461bcd60e51b815260206004820152600d60248201526c456e656d79206164647265737360981b6044820152606401610481565b6001600160a01b03831660009081526001602052604090205481811015610b405760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610481565b610b4a8282611094565b6001600160a01b038516600090815260016020526040902055600754829015801590610b8457506009546001600160a01b03868116911614155b15610c39576000610ba46007546064610b9d919061110c565b8390610d57565b6009546001600160a01b0316600090815260016020526040902054909150610bcc9082610da0565b600980546001600160a01b03908116600090815260016020908152604091829020949094559154915184815291811692908916917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c358482610dff565b9350505b6000600854118015610c5957506009546001600160a01b03868116911614155b15610cd4576000610c726008546064610b9d919061110c565b600354909150610c829082610dff565b6003556040518181526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610cd08482610dff565b9350505b6001600160a01b03841660009081526001602052604081208054859290610cfc9084906110a7565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610d4891815260200190565b60405180910390a35050505050565b6000610d9983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e41565b9392505050565b600080610dad83856110a7565b905083811015610d995760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610481565b6000610d9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e78565b60008183610e625760405162461bcd60e51b81526004016104819190610ea9565b506000610e6f848661110c565b95945050505050565b60008184841115610e9c5760405162461bcd60e51b81526004016104819190610ea9565b506000610e6f8486611094565b600060208083528351808285015260005b81811015610ed657858101830151858201604001528201610eba565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610f0e57600080fd5b919050565b60008060408385031215610f2657600080fd5b610f2f83610ef7565b946020939093013593505050565b600080600060608486031215610f5257600080fd5b610f5b84610ef7565b9250610f6960208501610ef7565b9150604084013590509250925092565b600060208284031215610f8b57600080fd5b610d9982610ef7565b8015158114610fa257600080fd5b50565b60008060408385031215610fb857600080fd5b610fc183610ef7565b91506020830135610fd181610f94565b809150509250929050565b600080600060608486031215610ff157600080fd5b833592506020840135915061100860408501610ef7565b90509250925092565b6000806040838503121561102457600080fd5b61102d83610ef7565b915061103b60208401610ef7565b90509250929050565b600181811c9082168061105857607f821691505b60208210810361107857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103ed576103ed61107e565b808201808211156103ed576103ed61107e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561110157600080fd5b8151610d9981610f94565b60008261112957634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122084326d409ee3323ea70cc4670c18918ef6e7e9ddb19c3e805149fe0a852f015564736f6c6343000811003300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000017dfcdece4000000000000000000000000000000000000000000000000000000000000000006300000000000000000000000000000000000000000000000000000000000000000000000000000000000000006927af1942d1f90067d99bc7c29cf99027e47fed0000000000000000000000006927af1942d1f90067d99bc7c29cf99027e47fed00000000000000000000000051e46fddf884518d96ebea18023f7b2d0a82582a0000000000000000000000000000000000000000000000000000000000000008596573204368616400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035945530000000000000000000000000000000000000000000000000000000000