60c060405234801561001057600080fd5b50466080526100e860408051808201825260098152680426c617a65537761760bc1b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f4f3c2418297976d44521b7127fe41c4e9949d309a364d0680ee7c3855be9a8b6818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0527f52720094aed01ff34e348759e70383310167af8639ed3cc691bb00386db89cda80546001600160a01b031916331790557fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f276020527fd94faaceeb75a06310ec4389fbe9463db0fde1858ecd192de12f67a1f911aff88054600160ff1991821681179092557fa6a3030ebe08bc992cbbca9f14e0a63ea1919c7ef0ddc5586271013423d94e2a80548216831790557f4f1c63d5a3279c935ded6c2c48b829e02ee37795adfb697cec8a4cc7282d37a980548216831790557f625ced908712cff47cb9ec04836829fee18aa74abe54f8973adb93c3d1256f0f80548216831790557fd6713a49211bef5e2ba58d00244968e2ef792143290b3ec5c55f193fa590f14580548216831790557f13a5ba9ca8a4e25ac238310e0ab23e7ceea0f0142b81a3135b89d889d796692580548216831790557fc4f67af706f5a76147f9c1026854c5faa9955b4f52c723a94f99523b7cbfe8768054821683179055636a865ca360e01b6000527ff642abdd07d8c84e639bfbde45cbf9c828d926b61a070ecd3276fb31f3069f7a8054909116909117905560805160a0516148b6620002c26000396000610ce301526000610bbb01526148b66000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c806370a0823111610186578063b41a06f3116100e3578063cdffacc611610097578063d8867fc811610071578063d8867fc81461087a578063dd62ed3e1461088d578063fff6cae9146108b8576102d3565b8063cdffacc6146107ea578063d21220a714610854578063d505accf14610867576102d3565b8063bc25cf77116100c8578063bc25cf7714610794578063c0c53b8b146107a7578063c45a0155146107ba576102d3565b8063b41a06f31461076b578063ba9a7a561461078b576102d3565b806395d89b411161013a578063a9059cbb1161011f578063a9059cbb14610718578063ac9650d81461072b578063adfca15e1461074b576102d3565b806395d89b41146106c9578063981b24d014610705576102d3565b80637a0ed6271161016b5780637a0ed6271461066c5780637ecebe001461068157806389afcb44146106a1576102d3565b806370a08231146106435780637464fc3d14610663576102d3565b8063313ce567116102345780634ee2cd7e116101e85780635909c0d5116101cd5780635909c0d51461061e5780635a3d5493146106275780636a62784214610630576102d3565b80634ee2cd7e146105f657806352ef6b2c14610609576102d3565b80633e13e2e3116102195780633e13e2e3146105c7578063481c6a75146105d05780634c403496146105e3576102d3565b8063313ce567146105a55780633644e515146105bf576102d3565b80630dfe16811161028b57806318160ddd1161027057806318160ddd1461055457806323b872dd1461056b57806330adf81f1461057e576102d3565b80630dfe16811461052157806313966db51461054c576102d3565b806306fdde03116102bc57806306fdde031461045f5780630902f1ac146104a8578063095ea7b31461050e576102d3565b806301ffc9a7146103d1578063022c0d9f1461044a575b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f28602052604081205436906060906001600160a01b0316806103845760405162461bcd60e51b815260206004820152601b60248201527f426c617a65537761703a20494e56414c49445f46554e4354494f4e000000000060448201526064015b60405180910390fd5b6103c48185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108c092505050565b8051945060200192505050f35b6104356103df366004613e84565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f27602052604090205460ff1690565b60405190151581526020015b60405180910390f35b61045d610458366004613eb6565b6109b1565b005b61049b6040518060400160405280600981526020017f426c617a6553776170000000000000000000000000000000000000000000000081525081565b6040516104419190613f9c565b600854604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000084041660208201527c010000000000000000000000000000000000000000000000000000000090920463ffffffff1690820152606001610441565b61043561051c366004613faf565b610a52565b600654610534906001600160a01b031681565b6040516001600160a01b039091168152602001610441565b61045d610a68565b61055d60005481565b604051908152602001610441565b610435610579366004613fdb565b610b03565b61055d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6105ad601281565b60405160ff9091168152602001610441565b61055d610bb6565b61055d600c5481565b600554610534906001600160a01b031681565b61045d6105f1366004613eb6565b610d05565b61055d610604366004613faf565b610d9d565b610611610dec565b604051610441919061401c565b61055d60095481565b61055d600a5481565b61055d61063e366004614069565b610e70565b61055d610651366004614069565b60016020526000908152604090205481565b61055d600b5481565b61067461126b565b60405161044191906140e3565b61055d61068f366004614069565b60036020526000908152604090205481565b6106b46106af366004614069565b611418565b60408051928352602083019190915201610441565b61049b6040518060400160405280600881526020017f424c415a452d4c5000000000000000000000000000000000000000000000000081525081565b61055d61071336600461417e565b61186d565b610435610726366004613faf565b611898565b61073e610739366004614197565b6118a5565b604051610441919061420c565b61075e610759366004614069565b61199a565b604051610441919061428c565b61055d610779366004614069565b600d6020526000908152604090205481565b61055d6103e881565b61045d6107a2366004614069565b611ab0565b61045d6107b536600461429f565b611c74565b7f52720094aed01ff34e348759e70383310167af8639ed3cc691bb00386db89cda546001600160a01b0316610534565b6105346107f8366004613e84565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f2860205260409020546001600160a01b031690565b600754610534906001600160a01b031681565b61045d6108753660046142ea565b611d3b565b61045d610888366004614069565b611f7a565b61055d61089b366004614361565b600260209081526000928352604080842090915290825290205481565b61045d6124d7565b6060600080846001600160a01b0316846040516108dd919061439a565b600060405180830381855af49150503d8060008114610918576040519150601f19603f3d011682016040523d82523d6000602084013e61091d565b606091505b5091509150816109a757805160000361099e5760405162461bcd60e51b815260206004820152602960248201527f44656c656761746543616c6c48656c7065723a2072657665727420776974682060448201527f6e6f20726561736f6e0000000000000000000000000000000000000000000000606482015260840161037b565b80518082602001fd5b9150505b92915050565b600080610a0d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150610a3d826008600e9054906101000a90046dffffffffffffffffffffffffffff168989898989612644565b610a4982826000612c09565b50505050505050565b6000610a5f338484612e72565b50600192915050565b600080610ac46008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091506000610ad58383612ed4565b90508015610afe57610afa6dffffffffffffffffffffffffffff8084169085166143e5565b600b555b505050565b6001600160a01b03831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ba1576001600160a01b0384166000908152600260209081526040808320338452909152902054610b7c9083906143fc565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bac848484613225565b5060019392505050565b6000467f000000000000000000000000000000000000000000000000000000000000000014610ce05750604080518082018252600981527f426c617a6553776170000000000000000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f4f3c2418297976d44521b7127fe41c4e9949d309a364d0680ee7c3855be9a8b6818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600080610d616008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b5091509150610d91826008600e9054906101000a90046dffffffffffffffffffffffffffff168989898989612644565b610a4982826001612c09565b6001600160a01b0382166000908152600f6020526040812081908190610dc4908590613327565b91509150816109a757505050506001600160a01b031660009081526001602052604090205490565b60607fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f24600501805480602002602001604051908101604052809291908181526020018280548015610e6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e48575b5050505050905090565b6000610e7a61342e565b600080610ed66008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b506006546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f65919061440f565b6007546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff0919061440f565b9050600061100e6dffffffffffffffffffffffffffff8616846143fc565b9050600061102c6dffffffffffffffffffffffffffff8616846143fc565b9050600061103a8787612ed4565b600080549192508190036110e5576004546103e8906001600160a01b031663677342ce61106786886143e5565b6040518263ffffffff1660e01b815260040161108591815260200190565b602060405180830381865afa1580156110a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c6919061440f565b6110d091906143fc565b98506110e061dead6103e86134a6565b61113a565b6111376dffffffffffffffffffffffffffff891661110383876143e5565b61110d9190614457565b6dffffffffffffffffffffffffffff891661112884876143e5565b6111329190614457565b61353b565b98505b600089116111b05760405162461bcd60e51b815260206004820152602860248201527f426c617a65537761703a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e544544000000000000000000000000000000000000000000000000606482015260840161037b565b6111ba8a8a6134a6565b6111c686868a8a613553565b81156111fa576008546dffffffffffffffffffffffffffff8082166e0100000000000000000000000000009092041602600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505050505050505061126660017f29b73ee8e70d5462b8b8ee06b237f7f69b80f34d018cb2c4a96f0e42cb33399055565b919050565b7fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f29546060907fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f24908067ffffffffffffffff8111156112cb576112cb614492565b60405190808252806020026020018201604052801561131157816020015b6040805180820190915260008152606060208201528152602001906001900390816112e95790505b50925060005b81811015611412576000836005018281548110611336576113366144c1565b9060005260206000200160009054906101000a90046001600160a01b031690506000816001600160a01b031663118a53896040518163ffffffff1660e01b8152600401600060405180830381865afa158015611396573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113be91908101906144fb565b505090506040518060400160405280836001600160a01b03168152602001828152508684815181106113f2576113f26144c1565b60200260200101819052505050808061140a906145db565b915050611317565b50505090565b60008061142361342e565b60008061147f6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b506006546007546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529395509193506001600160a01b039081169291169060009083906370a0823190602401602060405180830381865afa1580156114f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611516919061440f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d919061440f565b306000908152600160205260408120549192506115ba8888612ed4565b600054909150806115cb86856143e5565b6115d59190614457565b9a50806115e285856143e5565b6115ec9190614457565b995060008b1180156115fe575060008a115b6116705760405162461bcd60e51b815260206004820152602860248201527f426c617a65537761703a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e4544000000000000000000000000000000000000000000000000606482015260840161037b565b61167a3084613808565b61168e6001600160a01b0388168d8d613897565b6116a26001600160a01b0387168d8c613897565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa1580156116ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611723919061440f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529095506001600160a01b038716906370a0823190602401602060405180830381865afa158015611783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a7919061440f565b93506117b585858b8b613553565b81156117f0576008546117ec906dffffffffffffffffffffffffffff6e0100000000000000000000000000008204811691166143e5565b600b555b604080518c8152602081018c90526001600160a01b038e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a350505050505050505061186860017f29b73ee8e70d5462b8b8ee06b237f7f69b80f34d018cb2c4a96f0e42cb33399055565b915091565b600080600061187d846010613327565b915091508161188e57600054611890565b805b949350505050565b6000610a5f338484613225565b60608167ffffffffffffffff8111156118c0576118c0614492565b6040519080825280602002602001820160405280156118f357816020015b60608152602001906001900390816118de5790505b50905060005b828110156119935761196330858584818110611917576119176144c1565b90506020028101906119299190614613565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108c092505050565b828281518110611975576119756144c1565b6020026020010181905250808061198b906145db565b9150506118f9565b5092915050565b7fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f29546060907fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f249060005b81811015611aa857846001600160a01b0316836005018281548110611a0b57611a0b6144c1565b6000918252602090912001546001600160a01b031603611a9657846001600160a01b031663118a53896040518163ffffffff1660e01b8152600401600060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a8b91908101906144fb565b50909450611aa89050565b80611aa0816145db565b9150506119e4565b505050919050565b611ab861342e565b6006546007546008546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039384169390921691611b7d9185916dffffffffffffffffffffffffffff9091169085906370a0823190602401602060405180830381865afa158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b62919061440f565b611b6c91906143fc565b6001600160a01b0385169190613897565b6008546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611c469185916e0100000000000000000000000000009091046dffffffffffffffffffffffffffff16906001600160a01b038516906370a0823190602401602060405180830381865afa158015611c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2b919061440f565b611c3591906143fc565b6001600160a01b0384169190613897565b5050611c7160017f29b73ee8e70d5462b8b8ee06b237f7f69b80f34d018cb2c4a96f0e42cb33399055565b50565b611c7c6139e0565b611c87838383613a59565b7fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f2480546001600160a01b039485167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091557fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f258054938516938216939093179092557fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f268054919093169116179055565b42841015611d8b5760405162461bcd60e51b815260206004820152601260248201527f426c617a65537761703a20455850495245440000000000000000000000000000604482015260640161037b565b6000611d95610bb6565b6001600160a01b038916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190611de3836145db565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611e779291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611ee2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611f185750886001600160a01b0316816001600160a01b0316145b611f645760405162461bcd60e51b815260206004820152601c60248201527f426c617a65537761703a20494e56414c49445f5349474e415455524500000000604482015260640161037b565b611f6f898989612e72565b505050505050505050565b6005546001600160a01b03163314611fd45760405162461bcd60e51b815260206004820152601460248201527f426c617a65537761703a20464f5242494444454e000000000000000000000000604482015260640161037b565b7fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f24816001600160a01b03811615610afe576000816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120699190614678565b90506000806000836001600160a01b031663118a53896040518163ffffffff1660e01b8152600401600060405180830381865afa1580156120ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120d691908101906144fb565b7fffffffff000000000000000000000000000000000000000000000000000000008216600090815260038a016020526040902054929550909350915060ff16156121235750505050505050565b60058601805460018082018355600092835260209092200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0387161790558116156121bc57600686018054600181018255600091825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b600281161561220e57600786018054600181018255600091825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b60005b835181101561232a5760006001600160a01b031687600401600086848151811061223d5761223d6144c1565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000168252810191909152604001600020546001600160a01b03161461228d57600080fd5b848760040160008684815181106122a6576122a66144c1565b6020908102919091018101517fffffffff0000000000000000000000000000000000000000000000000000000016825281019190915260400160002080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905580612322816145db565b915050612211565b50604080516001808252818301909252600091816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816123425790505060408051606081019091526001600160a01b0387168152909150602081016000815260200185815250816000815181106123ad576123ad6144c1565b602090810291909101810191909152604080516001600160a01b038b16602480830191909152825180830390910181526044909101825291820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052517f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6739061245d90849089908590614695565b60405180910390a17fffffffff0000000000000000000000000000000000000000000000000000000084166000908152600389016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556124cb86826108c0565b50505050505050505050565b6124df61342e565b6006546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152612619916001600160a01b0316906370a0823190602401602060405180830381865afa158015612542573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612566919061440f565b6007546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156125c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125eb919061440f565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416613553565b61264260017f29b73ee8e70d5462b8b8ee06b237f7f69b80f34d018cb2c4a96f0e42cb33399055565b565b61264c61342e565b600085118061265b5750600084115b6126cd5760405162461bcd60e51b815260206004820152602560248201527f426c617a65537761703a20494e53554646494349454e545f4f55545055545f4160448201527f4d4f554e54000000000000000000000000000000000000000000000000000000606482015260840161037b565b866dffffffffffffffffffffffffffff16851080156126fb5750856dffffffffffffffffffffffffffff1684105b61276d5760405162461bcd60e51b815260206004820152602160248201527f426c617a65537761703a20494e53554646494349454e545f4c4951554944495460448201527f5900000000000000000000000000000000000000000000000000000000000000606482015260840161037b565b60065460075460009182916001600160a01b039182169190811690871682148015906127ab5750806001600160a01b0316876001600160a01b031614155b6127f75760405162461bcd60e51b815260206004820152601560248201527f426c617a65537761703a20494e56414c49445f544f0000000000000000000000604482015260640161037b565b8815612811576128116001600160a01b038316888b613897565b871561282b5761282b6001600160a01b038216888a613897565b84156128b1576040517ffe8818420000000000000000000000000000000000000000000000000000000081526001600160a01b0388169063fe8818429061287e9033908d908d908c908c90600401614795565b600060405180830381600087803b15801561289857600080fd5b505af11580156128ac573d6000803e3d6000fd5b505050505b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa15801561290e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612932919061440f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa158015612992573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b6919061440f565b92505050600080888b6dffffffffffffffffffffffffffff160384116129dd5760006129f3565b888b6dffffffffffffffffffffffffffff160384035b9150878a6dffffffffffffffffffffffffffff16038311612a15576000612a2b565b878a6dffffffffffffffffffffffffffff160383035b90506000821180612a3c5750600081115b612aad5760405162461bcd60e51b8152602060048201526024808201527f426c617a65537761703a20494e53554646494349454e545f494e5055545f414d60448201527f4f554e5400000000000000000000000000000000000000000000000000000000606482015260840161037b565b6000612aba8360036143e5565b612ac6866103e86143e5565b612ad091906143fc565b90506000612adf8360036143e5565b612aeb866103e86143e5565b612af591906143fc565b9050612b146dffffffffffffffffffffffffffff808e16908f166143e5565b612b2190620f42406143e5565b612b2b82846143e5565b1015612b795760405162461bcd60e51b815260206004820152600c60248201527f426c617a65537761703a204b0000000000000000000000000000000000000000604482015260640161037b565b5050612b8784848d8d613553565b60408051838152602081018390529081018a9052606081018990526001600160a01b0388169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350505050610a4960017f29b73ee8e70d5462b8b8ee06b237f7f69b80f34d018cb2c4a96f0e42cb33399055565b600b5415610afe57600080612c6d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091506000846dffffffffffffffffffffffffffff16866dffffffffffffffffffffffffffff16612ca091906143e5565b612cbd6dffffffffffffffffffffffffffff8085169086166143e5565b612cc791906143fc565b905080600c6000828254612cdb91906147e2565b90915550508315612e6a576005546040517f88720d8c00000000000000000000000000000000000000000000000000000000815233600482015260009182916001600160a01b03909116906388720d8c906024016040805180830381865afa158015612d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6f91906147f5565b90925090506001600160a01b03821615801590612d8c5750600081115b15612e67576000612710612da083866143e5565b612daa9190614457565b90508315611f6f576001600160a01b0383166000908152600d602052604081205490819003612e3757600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b6001600160a01b0384166000908152600d602052604081208054849290612e5f9084906147e2565b909155505050505b50505b505050505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316635ab7b6166040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4e9190614678565b600b546001600160a01b03821615801594509192509061320a578015613205576004546000906001600160a01b031663677342ce612f9f6dffffffffffffffffffffffffffff808916908a166143e5565b6040518263ffffffff1660e01b8152600401612fbd91815260200190565b602060405180830381865afa158015612fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffe919061440f565b600480546040517f677342ce0000000000000000000000000000000000000000000000000000000081529182018590529192506000916001600160a01b03169063677342ce90602401602060405180830381865afa158015613064573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613088919061440f565b9050808211156131fa57600061309e82846143fc565b6000546130ab91906143e5565b90506000826130bb8560056143e5565b6130c591906147e2565b905060006130d38284614457565b905080156131f65760005b600e548110156131e5576000600e82815481106130fd576130fd6144c1565b600091825260208083209190910154600480546001600160a01b03928316808652600d909452604080862054600c5491517faa9a09120000000000000000000000000000000000000000000000000000000081529384018a90526024840152604483015292945091169063aa9a091290606401602060405180830381865afa15801561318d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b1919061440f565b905080156131d0576131c382826134a6565b6131cd81856143fc565b93505b505080806131dd906145db565b9150506130de565b5080156131f6576131f687826134a6565b5050505b613202613b2a565b50505b61321d565b801561321d576000600b5561321d613b2a565b505092915050565b6001600160a01b03821661327b5760405162461bcd60e51b815260206004820152601760248201527f426c617a65537761703a205a45524f5f41444452455353000000000000000000604482015260640161037b565b613286838383613c02565b6001600160a01b038316600090815260016020526040812080548392906132ae9084906143fc565b90915550506001600160a01b038216600090815260016020526040812080548392906132db9084906147e2565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ec791815260200190565b6000804384111561337a5760405162461bcd60e51b815260206004820152601e60248201527f426c617a65537761703a20494e56414c49445f534e415053484f545f49440000604482015260640161037b565b82546000905b808210156133e9576000600261339683856147e2565b6133a09190614457565b9050868682815481106133b5576133b56144c1565b90600052602060002090600202016000015411156133d5578091506133e3565b6133e08160016147e2565b92505b50613380565b845482106133f957600080613420565b600185838154811061340d5761340d6144c1565b9060005260206000209060020201600101545b9350935050505b9250929050565b7f29b73ee8e70d5462b8b8ee06b237f7f69b80f34d018cb2c4a96f0e42cb33399080546002036134a05760405162461bcd60e51b815260206004820152601e60248201527f5265656e7472616e63794c6f636b3a207265656e7472616e742063616c6c0000604482015260640161037b565b60029055565b6134b260008383613c02565b806000808282546134c391906147e2565b90915550506001600160a01b038216600090815260016020526040812080548392906134f09084906147e2565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600081831061354a578161354c565b825b9392505050565b6dffffffffffffffffffffffffffff841180159061357f57506dffffffffffffffffffffffffffff8311155b6135cb5760405162461bcd60e51b815260206004820152601360248201527f426c617a65537761703a204f564552464c4f5700000000000000000000000000604482015260640161037b565b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061361b57506dffffffffffffffffffffffffffff841615155b801561363657506dffffffffffffffffffffffffffff831615155b156137185763ffffffff811661368d856e0100000000000000000000000000006dffffffffffffffffffffffffffff8716025b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690613d01565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166136eb846e0100000000000000000000000000006dffffffffffffffffffffffffffff881602613669565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b506008805463ffffffff83167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e0100000000000000000000000000009081027fffffffff000000000000000000000000000000000000000000000000000000009095168b83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a15050505050565b61381482600083613c02565b6001600160a01b0382166000908152600160205260408120805483929061383c9084906143fc565b925050819055508060008082825461385491906143fc565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161352f565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691613921919061439a565b6000604051808303816000865af19150503d806000811461395e576040519150601f19603f3d011682016040523d82523d6000602084013e613963565b606091505b509150915081801561398d57508051158061398d57508080602001905181019061398d9190614823565b6139d95760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657248656c7065723a3a736166655472616e7366657200000000604482015260640161037b565b5050505050565b337f52720094aed01ff34e348759e70383310167af8639ed3cc691bb00386db89cda546001600160a01b0316146126425760405162461bcd60e51b815260206004820152601960248201527f506172656e7452656c6174696f6e3a20464f5242494444454e00000000000000604482015260640161037b565b613a616139e0565b826001600160a01b0316633693799b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac59190614678565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03938416179091556005805482169583169590951790945560068054851693821693909317909255600780549093169116179055565b600e545b8015613bfa576000600e613b436001846143fc565b81548110613b5357613b536144c1565b60009182526020808320909101546001600160a01b0316808352600d9091526040822091909155600e80549192509080613b8f57613b8f614845565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555080613bf281614874565b915050613b2e565b506000600c55565b613c0d838383613d48565b7fed132e8732eaf2371e25ca93372ff1b0930f595119ad10a601cebe9034060f2460005b60068201548110156139d9576000826006018281548110613c5457613c546144c1565b60009182526020918290200154604080516001600160a01b038a81166024830152898116604483015260648083018a905283518084039091018152608490920190925292830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f63307c3500000000000000000000000000000000000000000000000000000000179052169150613cec9082906108c0565b50508080613cf9906145db565b915050613c31565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681613d4057613d40614428565b049392505050565b610afe83836001600160a01b038216613d7057613d6481613d95565b613d6c613dc3565b5050565b6001600160a01b038116613d8757613d6482613d95565b613d9082613d95565b613d6c815b6001600160a01b0381166000908152600f60209081526040808320600190925290912054611c719190613dcc565b61264260106000545b815460009015613e0d5782548390613de6906001906143fc565b81548110613df657613df66144c1565b906000526020600020906002020160000154613e10565b60005b905043811015610afe5750604080518082019091524381526020808201928352835460018082018655600095865291909420915160029094029091019283559051910155565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c7157600080fd5b600060208284031215613e9657600080fd5b813561354c81613e56565b6001600160a01b0381168114611c7157600080fd5b600080600080600060808688031215613ece57600080fd5b85359450602086013593506040860135613ee781613ea1565b9250606086013567ffffffffffffffff80821115613f0457600080fd5b818801915088601f830112613f1857600080fd5b813581811115613f2757600080fd5b896020828501011115613f3957600080fd5b9699959850939650602001949392505050565b60005b83811015613f67578181015183820152602001613f4f565b50506000910152565b60008151808452613f88816020860160208601613f4c565b601f01601f19169290920160200192915050565b60208152600061354c6020830184613f70565b60008060408385031215613fc257600080fd5b8235613fcd81613ea1565b946020939093013593505050565b600080600060608486031215613ff057600080fd5b8335613ffb81613ea1565b9250602084013561400b81613ea1565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b8181101561405d5783516001600160a01b031683529284019291840191600101614038565b50909695505050505050565b60006020828403121561407b57600080fd5b813561354c81613ea1565b600081518084526020808501945080840160005b838110156140d85781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010161409a565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015614170578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b0316845287015187840187905261415d87850182614086565b958801959350509086019060010161410a565b509098975050505050505050565b60006020828403121561419057600080fd5b5035919050565b600080602083850312156141aa57600080fd5b823567ffffffffffffffff808211156141c257600080fd5b818501915085601f8301126141d657600080fd5b8135818111156141e557600080fd5b8660208260051b85010111156141fa57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561427f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261426d858351613f70565b94509285019290850190600101614233565b5092979650505050505050565b60208152600061354c6020830184614086565b6000806000606084860312156142b457600080fd5b83356142bf81613ea1565b925060208401356142cf81613ea1565b915060408401356142df81613ea1565b809150509250925092565b600080600080600080600060e0888a03121561430557600080fd5b873561431081613ea1565b9650602088013561432081613ea1565b95506040880135945060608801359350608088013560ff8116811461434457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561437457600080fd5b823561437f81613ea1565b9150602083013561438f81613ea1565b809150509250929050565b600082516143ac818460208701613f4c565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176109ab576109ab6143b6565b818103818111156109ab576109ab6143b6565b60006020828403121561442157600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261448d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805161126681613e56565b60008060006060848603121561451057600080fd5b835167ffffffffffffffff8082111561452857600080fd5b818601915086601f83011261453c57600080fd5b815160208282111561455057614550614492565b8160051b604051601f19603f8301168101818110868211171561457557614575614492565b60405292835281830193508481018201928a84111561459357600080fd5b948201945b838610156145b8576145a9866144f0565b85529482019493820193614598565b97506145c790508882016144f0565b955050505050604084015190509250925092565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361460c5761460c6143b6565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261464857600080fd5b83018035915067ffffffffffffffff82111561466357600080fd5b60200191503681900382131561342757600080fd5b60006020828403121561468a57600080fd5b815161354c81613ea1565b6000606080830181845280875180835260808601915060808160051b87010192506020808a016000805b84811015614765577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a880301865282516001600160a01b0381511688528481015160038110614736577f4e487b710000000000000000000000000000000000000000000000000000000084526021600452602484fd5b8886015260409081015190880189905261475289890182614086565b97505094830194918301916001016146bf565b5050506001600160a01b038916908701525050838103604085015261478a8186613f70565b979650505050505050565b6001600160a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b808201808211156109ab576109ab6143b6565b6000806040838503121561480857600080fd5b825161481381613ea1565b6020939093015192949293505050565b60006020828403121561483557600080fd5b8151801515811461354c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081614883576148836143b6565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c6343000814000a