0x6101406040523480156200001257600080fd5b506040518060400160405280600681526020016529ba30b232b960d11b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600681526020016529ba30b232b960d11b8152506040518060400160405280600281526020016114d160f21b81525081600390805190602001906200009f92919062000778565b508051620000b590600490602084019062000778565b5050825160209384012082519284019290922060e08390526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818901819052818301979097526060810194909452608080850193909352308483018190528151808603909301835260c0948501909152815191909601209052929092526101205250620001729050336200015c6012600a62000927565b6200016c906308f0d18062000938565b62000178565b620009e2565b6200018f82826200019360201b62000a651760201c565b5050565b620001aa82826200024a60201b62000af51760201c565b6001600160e01b03620001be620003398216565b11156200022b5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084015b60405180910390fd5b62000244600962000bdc6200033f60201b178362000356565b50505050565b6001600160a01b038216620002a25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000222565b8060026000828254620002b691906200095a565b90915550506001600160a01b03821660009081526020819052604081208054839290620002e59084906200095a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200018f600083836200050d565b60025490565b60006200034d82846200095a565b90505b92915050565b825460009081908015620003a857856200037260018362000975565b815481106200038557620003856200098f565b60009182526020909120015464010000000090046001600160e01b0316620003ab565b60005b6001600160e01b03169250620003c283858760201c565b91506000811180156200040657504386620003df60018462000975565b81548110620003f257620003f26200098f565b60009182526020909120015463ffffffff16145b156200047a5762000422826200052560201b62000be81760201c565b866200043060018462000975565b815481106200044357620004436200098f565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550620004ff565b8560405180604001604052806200049c436200059460201b62000c551760201c565b63ffffffff168152602001620004bd856200052560201b62000be81760201c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b505050565b62000508838383620005fb60201b62000cba1760201c565b60006001600160e01b03821115620005905760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840162000222565b5090565b600063ffffffff821115620005905760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840162000222565b620006138383836200050860201b62000cec1760201c565b6001600160a01b038381166000908152600760205260408082205485841683529120546200050892918216911683818314801590620006525750600081115b1562000508576001600160a01b03831615620006df576001600160a01b0383166000908152600860209081526040822082916200069c91906200076a901b62000cf1178562000356565b91509150846001600160a01b0316600080516020620027e08339815191528383604051620006d4929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161562000508576001600160a01b0382166000908152600860209081526040822082916200072391906200033f901b62000bdc178562000356565b91509150836001600160a01b0316600080516020620027e083398151915283836040516200075b929190918252602082015260400190565b60405180910390a25050505050565b60006200034d828462000975565b8280546200078690620009a5565b90600052602060002090601f016020900481019282620007aa5760008555620007f5565b82601f10620007c557805160ff1916838001178555620007f5565b82800160010185558215620007f5579182015b82811115620007f5578251825591602001919060010190620007d8565b50620005909291505b80821115620005905760008155600101620007fe565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200086b5781600019048211156200084f576200084f62000814565b808516156200085d57918102915b93841c93908002906200082f565b509250929050565b600082620008845750600162000350565b81620008935750600062000350565b8160018114620008ac5760028114620008b757620008d7565b600191505062000350565b60ff841115620008cb57620008cb62000814565b50506001821b62000350565b5060208310610133831016604e8410600b8410161715620008fc575081810a62000350565b6200090883836200082a565b80600019048211156200091f576200091f62000814565b029392505050565b60006200034d60ff84168362000873565b600081600019048311821515161562000955576200095562000814565b500290565b6000821982111562000970576200097062000814565b500190565b6000828210156200098a576200098a62000814565b500390565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680620009ba57607f821691505b60208210811415620009dc57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051611dae62000a3260003960006110f3015260006111420152600061111d01526000611076015260006110a0015260006110ca0152611dae6000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d714610311578063a9059cbb14610324578063c3cda52014610337578063d505accf1461034a578063dd62ed3e1461035d578063f1127ed81461037057600080fd5b806370a082311461029457806379cc6790146102bd5780637ecebe00146102d05780638e539e8c146102e357806395d89b41146102f65780639ab24eb0146102fe57600080fd5b8063395093511161011557806339509351146101da5780633a46b1a8146101ed57806342966c6814610200578063587cde1e146102155780635c19a95c146102595780636fcfff451461026c57600080fd5b806306fdde031461015d578063095ea7b31461017b57806318160ddd1461019e57806323b872dd146101b0578063313ce567146101c35780633644e515146101d2575b600080fd5b6101656103ad565b6040516101729190611a5f565b60405180910390f35b61018e610189366004611ad0565b61043f565b6040519015158152602001610172565b6002545b604051908152602001610172565b61018e6101be366004611afa565b610457565b60405160128152602001610172565b6101a261047b565b61018e6101e8366004611ad0565b61048a565b6101a26101fb366004611ad0565b6104ac565b61021361020e366004611b36565b61052b565b005b610241610223366004611b4f565b6001600160a01b039081166000908152600760205260409020541690565b6040516001600160a01b039091168152602001610172565b610213610267366004611b4f565b610538565b61027f61027a366004611b4f565b610542565b60405163ffffffff9091168152602001610172565b6101a26102a2366004611b4f565b6001600160a01b031660009081526020819052604090205490565b6102136102cb366004611ad0565b61056a565b6101a26102de366004611b4f565b610583565b6101a26102f1366004611b36565b6105a1565b6101656105fd565b6101a261030c366004611b4f565b61060c565b61018e61031f366004611ad0565b610693565b61018e610332366004611ad0565b61070e565b610213610345366004611b7b565b61071c565b610213610358366004611bd3565b610852565b6101a261036b366004611c3d565b6109b6565b61038361037e366004611c70565b6109e1565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610172565b6060600380546103bc90611cb0565b80601f01602080910402602001604051908101604052809291908181526020018280546103e890611cb0565b80156104355780601f1061040a57610100808354040283529160200191610435565b820191906000526020600020905b81548152906001019060200180831161041857829003601f168201915b5050505050905090565b60003361044d818585610cfd565b5060019392505050565b600033610465858285610e21565b610470858585610e95565b506001949350505050565b6000610485611069565b905090565b60003361044d81858561049d83836109b6565b6104a79190611cfb565b610cfd565b60004382106105025760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090206105249083611190565b9392505050565b610535338261124d565b50565b6105353382611257565b6001600160a01b03811660009081526008602052604081205461056490610c55565b92915050565b610575823383610e21565b61057f828261124d565b5050565b6001600160a01b038116600090815260056020526040812054610564565b60004382106105f25760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016104f9565b610564600983611190565b6060600480546103bc90611cb0565b6001600160a01b0381166000908152600860205260408120548015610680576001600160a01b038316600090815260086020526040902061064e600183611d13565b8154811061065e5761065e611d2a565b60009182526020909120015464010000000090046001600160e01b0316610683565b60005b6001600160e01b03169392505050565b600033816106a182866109b6565b9050838110156107015760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104f9565b6104708286868403610cfd565b60003361044d818585610e95565b8342111561076c5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016104f9565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906107e6906107de9060a001604051602081830303815290604052805190602001206112d0565b85858561131e565b90506107f181611346565b861461083f5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016104f9565b6108498188611257565b50505050505050565b834211156108a25760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016104f9565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108d18c611346565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061092c826112d0565b9050600061093c8287878761131e565b9050896001600160a01b0316816001600160a01b03161461099f5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016104f9565b6109aa8a8a8a610cfd565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60408051808201909152600080825260208201526001600160a01b0383166000908152600860205260409020805463ffffffff8416908110610a2557610a25611d2a565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b610a6f8282610af5565b6002546001600160e01b031015610ae15760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016104f9565b610aef6009610bdc8361136e565b50505050565b6001600160a01b038216610b4b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f9565b8060026000828254610b5d9190611cfb565b90915550506001600160a01b03821660009081526020819052604081208054839290610b8a908490611cfb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361057f600083836114e7565b60006105248284611cfb565b60006001600160e01b03821115610c515760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016104f9565b5090565b600063ffffffff821115610c515760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016104f9565b6001600160a01b03838116600090815260076020526040808220548584168352912054610cec929182169116836114f2565b505050565b60006105248284611d13565b6001600160a01b038316610d5f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f9565b6001600160a01b038216610dc05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e2d84846109b6565b90506000198114610aef5781811015610e885760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f9565b610aef8484848403610cfd565b6001600160a01b038316610ef95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f9565b6001600160a01b038216610f5b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f9565b6001600160a01b03831660009081526020819052604090205481811015610fd35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f9565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061100a908490611cfb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105691815260200190565b60405180910390a3610aef8484846114e7565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156110c257507f000000000000000000000000000000000000000000000000000000000000000046145b156110ec57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156111f45760006111ab828461162f565b9050848682815481106111c0576111c0611d2a565b60009182526020909120015463ffffffff1611156111e0578092506111ee565b6111eb816001611cfb565b91505b50611197565b81156112385784611206600184611d13565b8154811061121657611216611d2a565b60009182526020909120015464010000000090046001600160e01b031661123b565b60005b6001600160e01b031695945050505050565b61057f828261164a565b6001600160a01b038281166000818152600760208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610aef8284836114f2565b60006105646112dd611069565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061132f87878787611662565b9150915061133c8161174f565b5095945050505050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b8254600090819080156113b95785611387600183611d13565b8154811061139757611397611d2a565b60009182526020909120015464010000000090046001600160e01b03166113bc565b60005b6001600160e01b031692506113d583858763ffffffff16565b9150600081118015611413575043866113ef600184611d13565b815481106113ff576113ff611d2a565b60009182526020909120015463ffffffff16145b156114735761142182610be8565b8661142d600184611d13565b8154811061143d5761143d611d2a565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506114de565b85604051806040016040528061148843610c55565b63ffffffff16815260200161149c85610be8565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b610cec838383610cba565b816001600160a01b0316836001600160a01b0316141580156115145750600081115b15610cec576001600160a01b038316156115a2576001600160a01b0383166000908152600860205260408120819061154f90610cf18561136e565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611597929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610cec576001600160a01b038216600090815260086020526040812081906115d890610bdc8561136e565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611620929190918252602082015260400190565b60405180910390a25050505050565b600061163e6002848418611d40565b61052490848416611cfb565b611654828261190a565b610aef6009610cf18361136e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156116995750600090506003611746565b8460ff16601b141580156116b157508460ff16601c14155b156116c25750600090506004611746565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611716573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661173f57600060019250925050611746565b9150600090505b94509492505050565b600081600481111561176357611763611d62565b141561176c5750565b600181600481111561178057611780611d62565b14156117ce5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104f9565b60028160048111156117e2576117e2611d62565b14156118305760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104f9565b600381600481111561184457611844611d62565b141561189d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104f9565b60048160048111156118b1576118b1611d62565b14156105355760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016104f9565b6001600160a01b03821661196a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104f9565b6001600160a01b038216600090815260208190526040902054818110156119de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104f9565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611a0d908490611d13565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610cec836000846114e7565b600060208083528351808285015260005b81811015611a8c57858101830151858201604001528201611a70565b81811115611a9e576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611acb57600080fd5b919050565b60008060408385031215611ae357600080fd5b611aec83611ab4565b946020939093013593505050565b600080600060608486031215611b0f57600080fd5b611b1884611ab4565b9250611b2660208501611ab4565b9150604084013590509250925092565b600060208284031215611b4857600080fd5b5035919050565b600060208284031215611b6157600080fd5b61052482611ab4565b803560ff81168114611acb57600080fd5b60008060008060008060c08789031215611b9457600080fd5b611b9d87611ab4565b95506020870135945060408701359350611bb960608801611b6a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611bee57600080fd5b611bf788611ab4565b9650611c0560208901611ab4565b95506040880135945060608801359350611c2160808901611b6a565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611c5057600080fd5b611c5983611ab4565b9150611c6760208401611ab4565b90509250929050565b60008060408385031215611c8357600080fd5b611c8c83611ab4565b9150602083013563ffffffff81168114611ca557600080fd5b809150509250929050565b600181811c90821680611cc457607f821691505b6020821081141561136857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611d0e57611d0e611ce5565b500190565b600082821015611d2557611d25611ce5565b500390565b634e487b7160e01b600052603260045260246000fd5b600082611d5d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fdfea264697066735822122096e0f51af94731af38599fe5978c736d64a1cfb26a4fbd1ce34d9ece341366f464736f6c63430008090033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724