0x6106a06040523480156200001257600080fd5b5060405162007cfe38038062007cfe833981016040819052620000359162001c53565b606081015160e082015161010083015161012084015161014085015160c0860151600460ff861610156200008657604051630ea0e9f960e01b815260ff861660048201526024015b60405180910390fd5b600b60ff86161115620000b25760405163269d5ed360e11b815260ff861660048201526024016200007d565b670de0b6b3a7640000861115620000dc5760405163587c36fd60e01b815260040160405180910390fd5b85600003620000fe57604051631d01c47d60e01b815260040160405180910390fd5b6105c08690526001805460ff808816600160801b0260ff60801b1990921691909117909155848116610560528381166105805282166105a05262ffffff8116610540526200015b62000151600283900b90565b60015b9062000729565b608052670de0b6b3a764000060a05262000179600160038362000809565b60c0526200018b600160048362000809565b60e0526200019d600260048362000809565b61010052620001b0600160058362000809565b61012052620001c3600260058362000809565b61014052620001d6600360058362000809565b61016052620001e9600160068362000809565b61018052620001fc600260068362000809565b6101a0526200020f600360068362000809565b6101c05262000222600460068362000809565b6101e05262000235600160078362000809565b6102005262000248600260078362000809565b610220526200025b600360078362000809565b610240526200026e600460078362000809565b6102605262000281600560078362000809565b6102805262000294600160088362000809565b6102a052620002a7600260088362000809565b6102c052620002ba600360088362000809565b6102e052620002cd600460088362000809565b61030052620002e0600560088362000809565b61032052620002f3600660088362000809565b6103405262000306600160098362000809565b6103605262000319600260098362000809565b610380526200032c600360098362000809565b6103a0526200033f600460098362000809565b6103c05262000352600560098362000809565b6103e05262000365600660098362000809565b6104005262000378600760098362000809565b6104205262000388600462000869565b63ffffffff16610440526200039e600562000869565b63ffffffff1661046052620003b4600662000869565b63ffffffff1661048052620003ca600762000869565b63ffffffff166104a052620003e0600862000869565b63ffffffff166104c052620003f6600962000869565b63ffffffff166104e0526200040c600a62000869565b63ffffffff166105005262000422600b62000869565b63ffffffff166105205250505061016084015162ffffff1660000392506200046091505057604051638bc24f2b60e01b815260040160405180910390fd5b8060c0015162ffffff1681610160015162ffffff1611156200049557604051635e44714960e01b815260040160405180910390fd5b428160a0015165ffffffffffff161015620004c3576040516309f5296560e11b815260040160405180910390fd5b61016e61ffff168160c0015162ffffff1610620005195760c0810151620004ee600161016e62001d67565b6040516321288fed60e01b815262ffffff909216600483015261ffff1660248201526044016200007d565b600081602001516001600160a01b0316634c08d8e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200055e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000584919062001d8c565b63ffffffff169050600082602001516001600160a01b031663e7a891b96040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f7919062001d8c565b63ffffffff1690508065ffffffffffff16836080015165ffffffffffff1610806200063a57508083608001516200062f919062001dca565b65ffffffffffff1615155b156200065957604051635cbc82cb60e11b815260040160405180910390fd5b80828460a001516200066c919062001df2565b62000678919062001dca565b65ffffffffffff16156200069f576040516317d5b2ab60e11b815260040160405180910390fd5b60408301516001600160a01b0316620006cb5760405163f0d1a69360e01b815260040160405180910390fd5b505060408101516001600160a01b039081166106805261016082015162ffffff1661066052815181166105e05260208201511661060052608081015165ffffffffffff9081166106205260a090910151166106405262001ffc565b90565b60008282600160ff1b821480620007435750600160ff1b81145b1562000762576040516309fe2b4560e41b815260040160405180910390fd5b600080600084126200077557836200077a565b836000035b9150600083126200078c578262000791565b826000035b90506000620007aa83670de0b6b3a764000084620008c5565b90506001600160ff1b03811115620007e05760405163d49c26b360e01b815260048101899052602481018890526044016200007d565b60001985851813620007fc81620007f8578260000390565b8290565b9998505050505050505050565b6000806200081984600162001e14565b90506200085e6200084862000842600084900b620001546200083c868b62001e38565b60000b90565b620009a0565b62000857600286900b62000151565b9062000a2c565b9150505b9392505050565b60008060005b620008868162000880818762000ae0565b62000eba565b62000892908362001e5c565b915080620008a08162001e7c565b9150620008b1905060018562001e9e565b60ff168160ff16106200086f575092915050565b60008080600019858709858702925082811083820303915050806000036200090457838281620008f957620008f962001db4565b049250505062000862565b8381106200093757604051630c740aef60e31b81526004810187905260248101869052604481018590526064016200007d565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008181811215620009c95760405163b9b0f49b60e01b8152600481018490526024016200007d565b620009e4670de0b6b3a76400006001600160ff1b0362001eba565b81131562000a095760405163063103bf60e01b8152600481018490526024016200007d565b600062000a20670de0b6b3a7640000830262000ed8565b9050805b949350505050565b6000828281830362000a5b57801562000a4757600062000a51565b670de0b6b3a76400005b9250505062000ada565b670de0b6b3a7640000820362000a7e57670de0b6b3a76400009250505062000ada565b8060000362000a9a57670de0b6b3a76400009250505062000ada565b670de0b6b3a7640000810362000ab557849250505062000ada565b62000ad562000acf62000ac88762001071565b86620011e5565b62001293565b925050505b92915050565b60008260ff1660000362000af8575060805162000ada565b8160ff1660030362000b205760028360ff161162000b1a575060a05162000ada565b62000eb2565b8160ff1660040362000b425760038360ff161162000b1a575060a05162000ada565b8160ff1660050362000b7a578260ff1660010362000b64575060c05162000ada565b60048360ff161162000b1a575060a05162000ada565b8160ff1660060362000bc9578260ff1660010362000b9c575060e05162000ada565b8260ff1660020362000bb357506101005162000ada565b60058360ff161162000b1a575060a05162000ada565b8160ff1660070362000c30578260ff1660010362000bec57506101205162000ada565b8260ff1660020362000c0357506101405162000ada565b8260ff1660030362000c1a57506101605162000ada565b60068360ff161162000b1a575060a05162000ada565b8160ff1660080362000cae578260ff1660010362000c5357506101805162000ada565b8260ff1660020362000c6a57506101a05162000ada565b8260ff1660030362000c8157506101c05162000ada565b8260ff1660040362000c9857506101e05162000ada565b60078360ff161162000b1a575060a05162000ada565b8160ff1660090362000d43578260ff1660010362000cd157506102005162000ada565b8260ff1660020362000ce857506102205162000ada565b8260ff1660030362000cff57506102405162000ada565b8260ff1660040362000d1657506102605162000ada565b8260ff1660050362000d2d57506102805162000ada565b60088360ff161162000b1a575060a05162000ada565b8160ff16600a0362000def578260ff1660010362000d6657506102a05162000ada565b8260ff1660020362000d7d57506102c05162000ada565b8260ff1660030362000d9457506102e05162000ada565b8260ff1660040362000dab57506103005162000ada565b8260ff1660050362000dc257506103205162000ada565b8260ff1660060362000dd957506103405162000ada565b60098360ff161162000b1a575060a05162000ada565b8160ff16600b0362000eb2578260ff1660010362000e1257506103605162000ada565b8260ff1660020362000e2957506103805162000ada565b8260ff1660030362000e4057506103a05162000ada565b8260ff1660040362000e5757506103c05162000ada565b8260ff1660050362000e6e57506103e05162000ada565b8260ff1660060362000e8557506104005162000ada565b8260ff1660070362000e9c57506104205162000ada565b600a8360ff161162000eb2575060a05162000ada565b600062000862565b600062000862620007268362000ed1828762001350565b90620011e5565b60008160000362000eeb57506000919050565b50600181600160801b811062000f065760409190911b9060801c5b68010000000000000000811062000f225760209190911b9060401c5b640100000000811062000f3a5760109190911b9060201c5b62010000811062000f505760089190911b9060101c5b610100811062000f655760049190911b9060081c5b6010811062000f795760029190911b9060041c5b6004811062000f8a57600182901b91505b600182848162000f9e5762000f9e62001db4565b048301901c9150600182848162000fb95762000fb962001db4565b048301901c9150600182848162000fd45762000fd462001db4565b048301901c9150600182848162000fef5762000fef62001db4565b048301901c915060018284816200100a576200100a62001db4565b048301901c9150600182848162001025576200102562001db4565b048301901c9150600182848162001040576200104062001db4565b048301901c915060008284816200105b576200105b62001db4565b0490508083106200106a578092505b5050919050565b600081818113620010995760405163059b101b60e01b8152600481018490526024016200007d565b6000670de0b6b3a76400008212620010b457506001620010dd565b50600019816ec097ce7bc90715b34b9f100000000081620010d957620010d962001db4565b0591505b600062001160670de0b6b3a7640000840560016001600160801b03821160071b91821c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211871b91821c969096119490961792909217171791909117919091171790565b9050670de0b6b3a7640000810283821d670de0b6b3a763ffff1981016200118d5750909102949350505050565b671bc16d674ec800006706f05b59d3b200005b6000811315620011d657670de0b6b3a7640000838002059250818312620011cd579283019260019290921d915b60011d620011a0565b50505091909102949350505050565b60008282600160ff1b821480620011ff5750600160ff1b81145b156200121e5760405163a6070c2560e01b815260040160405180910390fd5b6000806000841262001231578362001236565b836000035b9150600083126200124857826200124d565b826000035b905060006200125d83836200135f565b90506001600160ff1b03811115620007e05760405163120b5b4360e01b815260048101899052602481018890526044016200007d565b60008181811215620012fe5768033dd1780914b9711419811215620012bb5750600092915050565b620012f6620012d262000726600084900362001293565b6ec097ce7bc90715b34b9f100000000081620012f257620012f262001db4565b0590565b91506200134a565b680a688906bd8affffff8113156200132c57604051626c1a0560e31b8152600481018490526024016200007d565b670de0b6b3a7640000604082901b0562000a24620007268262001419565b50919050565b600062000ada82600462001feb565b6000808060001984860984860292508281108382030391505080600003620013955750670de0b6b3a76400009004905062000ada565b670de0b6b3a76400008110620013c957604051635173648d60e01b815260048101869052602481018590526044016200007d565b6000670de0b6b3a764000085870962040000818503049310909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b600160bf1b67ff000000000000008216156200152f576780000000000000008216156200144f5768016a09e667f3bcc9090260401c5b6740000000000000008216156200146f576801306fe0a31b7152df0260401c5b6720000000000000008216156200148f576801172b83c7d517adce0260401c5b671000000000000000821615620014af5768010b5586cf9890f62a0260401c5b670800000000000000821615620014cf576801059b0d31585743ae0260401c5b670400000000000000821615620014ef57680102c9a3e778060ee70260401c5b6702000000000000008216156200150f5768010163da9fb33356d80260401c5b6701000000000000008216156200152f57680100b1afa5abcbed610260401c5b66ff000000000000821615620016375766800000000000008216156200155e5768010058c86da1c09ea20260401c5b66400000000000008216156200157d576801002c605e2e8cec500260401c5b66200000000000008216156200159c57680100162f3904051fa10260401c5b6610000000000000821615620015bb576801000b175effdc76ba0260401c5b6608000000000000821615620015da57680100058ba01fb9f96d0260401c5b6604000000000000821615620015f95768010002c5cc37da94920260401c5b660200000000000082161562001618576801000162e525ee05470260401c5b6601000000000000821615620016375768010000b17255775c040260401c5b65ff000000000082161562001736576580000000000082161562001664576801000058b91b5bc9ae0260401c5b654000000000008216156200168257680100002c5c89d5ec6d0260401c5b65200000000000821615620016a05768010000162e43f4f8310260401c5b65100000000000821615620016be57680100000b1721bcfc9a0260401c5b65080000000000821615620016dc5768010000058b90cf1e6e0260401c5b65040000000000821615620016fa576801000002c5c863b73f0260401c5b650200000000008216156200171857680100000162e430e5a20260401c5b6501000000000082161562001736576801000000b1721835510260401c5b64ff000000008216156200182c576480000000008216156200176157680100000058b90c0b490260401c5b6440000000008216156200177e5768010000002c5c8601cc0260401c5b6420000000008216156200179b576801000000162e42fff00260401c5b641000000000821615620017b85768010000000b17217fbb0260401c5b640800000000821615620017d5576801000000058b90bfce0260401c5b640400000000821615620017f257680100000002c5c85fe30260401c5b6402000000008216156200180f5768010000000162e42ff10260401c5b6401000000008216156200182c57680100000000b17217f80260401c5b63ff00000082161562001919576380000000821615620018555768010000000058b90bfc0260401c5b634000000082161562001871576801000000002c5c85fe0260401c5b63200000008216156200188d57680100000000162e42ff0260401c5b6310000000821615620018a9576801000000000b17217f0260401c5b6308000000821615620018c557680100000000058b90c00260401c5b6304000000821615620018e15768010000000002c5c8600260401c5b6302000000821615620018fd576801000000000162e4300260401c5b6301000000821615620019195768010000000000b172180260401c5b62ff0000821615620019fd576280000082161562001940576801000000000058b90c0260401c5b624000008216156200195b57680100000000002c5c860260401c5b62200000821615620019765768010000000000162e430260401c5b621000008216156200199157680100000000000b17210260401c5b62080000821615620019ac5768010000000000058b910260401c5b62040000821615620019c7576801000000000002c5c80260401c5b62020000821615620019e257680100000000000162e40260401c5b62010000821615620019fd576801000000000000b1720260401c5b61ff0082161562001ad85761800082161562001a2257680100000000000058b90260401c5b61400082161562001a3c5768010000000000002c5d0260401c5b61200082161562001a56576801000000000000162e0260401c5b61100082161562001a705768010000000000000b170260401c5b61080082161562001a8a576801000000000000058c0260401c5b61040082161562001aa457680100000000000002c60260401c5b61020082161562001abe57680100000000000001630260401c5b61010082161562001ad857680100000000000000b10260401c5b60ff82161562001baa57608082161562001afb57680100000000000000590260401c5b604082161562001b14576801000000000000002c0260401c5b602082161562001b2d57680100000000000000160260401c5b601082161562001b46576801000000000000000b0260401c5b600882161562001b5f57680100000000000000060260401c5b600482161562001b7857680100000000000000030260401c5b600282161562001b9157680100000000000000010260401c5b600182161562001baa57680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60405161018081016001600160401b038111828210171562001bf357634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b038116811462001c1157600080fd5b919050565b805165ffffffffffff8116811462001c1157600080fd5b805162ffffff8116811462001c1157600080fd5b805160ff8116811462001c1157600080fd5b6000610180828403121562001c6757600080fd5b62001c7162001bc1565b62001c7c8362001bf9565b815262001c8c6020840162001bf9565b602082015262001c9f6040840162001bf9565b60408201526060830151606082015262001cbc6080840162001c16565b608082015262001ccf60a0840162001c16565b60a082015262001ce260c0840162001c2d565b60c082015262001cf560e0840162001c41565b60e082015261010062001d0a81850162001c41565b9082015261012062001d1e84820162001c41565b9082015261014062001d3284820162001c41565b9082015261016062001d4684820162001c2d565b908201529392505050565b634e487b7160e01b600052601160045260246000fd5b61ffff82811682821603908082111562001d855762001d8562001d51565b5092915050565b60006020828403121562001d9f57600080fd5b815163ffffffff811681146200086257600080fd5b634e487b7160e01b600052601260045260246000fd5b600065ffffffffffff8084168062001de65762001de662001db4565b92169190910692915050565b65ffffffffffff82811682821603908082111562001d855762001d8562001d51565b600082810b9082900b03607f198112607f8213171562000ada5762000ada62001d51565b600081810b9083900b01607f8113607f198212171562000ada5762000ada62001d51565b63ffffffff81811683821601908082111562001d855762001d8562001d51565b600060ff821660ff810362001e955762001e9562001d51565b60010192915050565b60ff828116828216039081111562000ada5762000ada62001d51565b60008262001ecc5762001ecc62001db4565b600160ff1b82146000198414161562001ee95762001ee962001d51565b500590565b600181815b8085111562001f2f57816000190482111562001f135762001f1362001d51565b8085161562001f2157918102915b93841c939080029062001ef3565b509250929050565b60008262001f485750600162000ada565b8162001f575750600062000ada565b816001811462001f70576002811462001f7b5762001f9b565b600191505062000ada565b60ff84111562001f8f5762001f8f62001d51565b50506001821b62000ada565b5060208310610133831016604e8410600b841016171562001fc0575081810a62000ada565b62001fcc838362001eee565b806000190482111562001fe35762001fe362001d51565b029392505050565b60006200086260ff84168362001f37565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051610580516105a0516105c0516105e05161060051610620516106405161066051610680516159c86200233660003960006113a101526000818161044a01526113580152600081816108cd015281816119eb0152611ffc015260008181610a0501528181611a1b01528181611fbd0152818161238501526125390152600081816108650152818161152b0152818161178e0152611833015260008181610935015281816113060152818161196e01528181611a86015281816121760152818161230c0152612e850152600081816104a8015261494901526000818161066b015281816115fa0152613fb1015260008181610754015281816115cf01526140d50152600081816106d50152818161161e01526140af0152600081816109de01526123e3015260008181611d290152613a9f015260008181611cf70152613a62015260008181611cc50152613a25015260008181611c9301526139e8015260008181611c6101526139ab015260008181611c2f015261396e015260008181611bfd015261393101526000611bcb01526000612e0801526000612dd601526000612da401526000612d7201526000612d4001526000612d0e01526000612cdc01526000612c6d01526000612c3b01526000612c0901526000612bd701526000612ba501526000612b7301526000612b0401526000612ad201526000612aa001526000612a6e01526000612a3c015260006129cd0152600061299b0152600061296901526000612937015260006128c80152600061289601526000612864015260006127f5015260006127c3015260006127540152600081816126d5015281816127170152818161278601528181612827015281816128fa015281816129ff01528181612b3601528181612c9f0152612e3a0152600061269801526159c86000f3fe608060405234801561001057600080fd5b50600436106104125760003560e01c80638cd8b2f611610220578063c052b56e11610130578063e4ff7a89116100b8578063eedfb45011610087578063eedfb45014610a27578063f8632be414610a3a578063face493214610a42578063fc8a081014610a55578063fe77315114610a8057600080fd5b8063e4ff7a89146109b3578063e631674a146109c6578063e8196f63146109d9578063ed88b77f14610a0057600080fd5b8063d0ef024a116100ff578063d0ef024a14610930578063d5002f2e14610957578063d6ef7af01461095f578063dd1ecaec14610972578063e37a85481461098557600080fd5b8063c052b56e146108c8578063cd3293de146108ef578063cefa23381461090a578063cf7b0df81461091d57600080fd5b8063a84037b6116101b3578063b0812d7b11610182578063b0812d7b14610860578063b31b69e014610887578063b7b02fc81461089a578063bcb00910146108ad578063bf86d690146108c057600080fd5b8063a84037b61461082a578063aa7e4f891461083d578063aa8de0ea14610850578063aff78fbb1461085857600080fd5b8063948231fb116101ef578063948231fb146107e6578063980bfca9146107f9578063a1270e2e1461080f578063a55b9c351461082257600080fd5b80638cd8b2f61461079e5780638da4d3c9146107b15780639199687a146107c057806393b72539146107d357600080fd5b80634b319713116103265780636067e20f116102ae5780636e27a2e51161027d5780636e27a2e514610720578063771de8a714610734578063790e3d47146107475780637d3fba051461074f57806380fffbd91461077657600080fd5b80636067e20f1461068d57806360df8caa146106bd57806364909dbd146106d057806367b40cf7146106f757600080fd5b806355203645116102f5578063552036451461060e578063559a692014610616578063571d0223146106365780635758e7051461065e57806358c7aa0f1461066657600080fd5b80634b319713146105bd5780634e0dd782146105d55780634f051a72146105e8578063543c7445146105fb57600080fd5b80632f695cc9116103a957806345e167781161037857806345e1677814610550578063479cdd7c14610563578063494219961461057657806349d1059b1461058a5780634a767a4e146105b557600080fd5b80632f695cc9146105135780633f0192eb1461051b578063447d41b51461052e578063452266421461053657600080fd5b806313c846ee116103e557806313c846ee146104a35780631d522f1a146104ca578063269fdac8146104eb5780632b2261e3146104fe57600080fd5b806302abcc1e146104175780630937eb541461043d5780630aa955881461044557806310501d0414610480575b600080fd5b61042a61042536600461509f565b610a93565b6040519081526020015b60405180910390f35b61042a610aaa565b61046c7f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff9091168152602001610434565b61049361048e3660046150d2565b610ac3565b6040519015158152602001610434565b61042a7f000000000000000000000000000000000000000000000000000000000000000081565b6104d361f2ee81565b6040516001600160a01b039091168152602001610434565b6104936104f9366004615129565b610ae4565b61051161050c366004615194565b610b48565b005b61046c610d25565b61042a6105293660046151be565b610d32565b61046c610da6565b61053e610de0565b60405160ff9091168152602001610434565b61053e61055e366004615201565b610df0565b61042a61057136600461521c565b610e7a565b600154600160881b900462ffffff1661046c565b60015461059d906001600160801b031681565b6040516001600160801b039091168152602001610434565b61042a611348565b602f54630100000090046001600160801b031661042a565b6105116105e3366004615290565b611396565b61042a6105f636600461509f565b611453565b61046c61060936600461509f565b61148b565b602d5461042a565b610629610624366004615290565b6114e6565b60405161043491906152ab565b6106496106443660046152d4565b61151b565b60405163ffffffff9091168152602001610434565b61042a611526565b61053e7f000000000000000000000000000000000000000000000000000000000000000081565b6001546106a690600160a01b900465ffffffffffff1681565b60405165ffffffffffff9091168152602001610434565b61042a6106cb3660046152d4565b6115c6565b61053e7f000000000000000000000000000000000000000000000000000000000000000081565b61042a610705366004615290565b6001600160a01b031660009081526005602052604090205490565b60015461053e90600160801b900460ff1681565b6106496107423660046152d4565b61166a565b61042a6116b7565b61053e7f000000000000000000000000000000000000000000000000000000000000000081565b6107896107843660046152ef565b611733565b60408051928352602083019190915201610434565b6105116107ac366004615338565b6118ad565b602f5461046c9062ffffff1681565b61046c6107ce366004615353565b6119e7565b6105116107e1366004615353565b611a79565b602e546104d3906001600160a01b031681565b610801611abe565b60405161043492919061536c565b61064961081d3660046152d4565b611bbb565b610629611d4d565b61042a6108383660046151be565b611d6b565b61049361084b3660046152d4565b611d8e565b610649611dba565b61046c611dd3565b6104d37f000000000000000000000000000000000000000000000000000000000000000081565b610493610895366004615129565b611e1d565b6106a66108a83660046150d2565b611fb9565b61042a6108bb3660046152d4565b612020565b610493612071565b6106a67f000000000000000000000000000000000000000000000000000000000000000081565b6002546040516001600160601b039091168152602001610434565b61049361091836600461539c565b612083565b61042a61092b366004615401565b6120df565b6104d37f000000000000000000000000000000000000000000000000000000000000000081565b61042a6121ec565b61051161096d36600461542b565b612205565b6106a66109803660046150d2565b61237e565b610998610993366004615401565b6123af565b60408051825181526020928301519281019290925201610434565b61046c6109c1366004615353565b61248f565b61042a6109d4366004615455565b612688565b61046c7f000000000000000000000000000000000000000000000000000000000000000081565b6106a67f000000000000000000000000000000000000000000000000000000000000000081565b61042a610a3536600461542b565b612e65565b610649612fbe565b61046c610a503660046152d4565b612fd7565b610a68610a633660046152d4565b612ffa565b6040516001600160681b039091168152602001610434565b61042a610a8e366004615401565b613029565b6000610aa1600684846131fa565b90505b92915050565b6000610abe610ab96006613624565b61368c565b905090565b6000610ad3610980836001615495565b65ffffffffffff1642101592915050565b6001600160a01b0384811660009081526004602090815260408083209387168352928152828220600154600160881b900462ffffff168352815282822060ff868116845290825283832063ffffffff8616845290915291902054165b949350505050565b602e546001600160a01b03163314610b8d57602e546040516311fb346360e01b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b610b95612071565b15610bb35760405163bee46da560e01b815260040160405180910390fd5b6001600160a01b038216610bda57604051633467947f60e21b815260040160405180910390fd5b6002546001600160601b039081169082161115610c215760025460405163046b156b60e41b81526001600160601b0380841660048301529091166024820152604401610b84565b600280546bffffffffffffffffffffffff1981166001600160601b039182168490038216179091556001600160a01b0383166000908152600560205260408120805492841692909190610c759084906154b1565b9091555050602f54610cb390610ca5906001600160601b03841690600160981b90046001600160681b03166154c4565b6001600160681b03166136e9565b602f80546001600160681b0392909216600160981b026001600160981b039092169190911790556040516001600160601b03821681526001600160a01b038316907fecb1c952c58fd78de1639daecf690934ce9017bbd60ceaf3355f80ee8d24e7379060200160405180910390a25050565b6000610abe6107ce611526565b600061f2ed196001600160a01b03851601610d515760005b9050610d9f565b600080610d5f868686613756565b9150915080600003610d7657600092505050610d9f565b610d9a610d88610d85836137df565b90565b610d94610d85856137df565b90613849565b925050505b9392505050565b600080610db1610d25565b90506000610dbe426119e7565b90508162ffffff168162ffffff1611610dd75780610dd9565b815b9250505090565b602f54600090610abe9062ffffff165b600154600090600160881b900462ffffff1615610e63576000610e128361391f565b60015490915060ff600160801b9091048116908216811015610e4057610e398160016154e4565b9150610e5c565b8060ff168260ff161015610e5c57610e596001826154fd565b91505b5092915050565b5050600154600160801b900460ff1690565b919050565b600154600090600160881b900462ffffff16610e9581610ac3565b15610eb357604051632253b77960e01b815260040160405180910390fd5b6001600160a01b038316158015610ed357506000846001600160601b0316115b15610ef157604051633467947f60e21b815260040160405180910390fd5b600154600160801b900460ff166000610f0a8983613ae3565b905080602001516001600160681b0316866001600160601b03161115610f6357602081015160405163499c160960e11b81526001600160601b03881660048201526001600160681b039091166024820152604401610b84565b80602001516001600160681b0316600003610f91576040516331d7a46d60e01b815260040160405180910390fd5b610f9d338b8b8b611e1d565b610fe057604051637032605160e11b81523360048201526001600160a01b038b16602482015260ff8a16604482015263ffffffff89166064820152608401610b84565b3360009081526004602090815260408083206001600160a01b038e168452825280832062ffffff87168452825280832060ff808e16855290835281842063ffffffff8d168552909252909120541615611072576040516336ce4d6360e21b81523360048201526001600160a01b038b16602482015260ff8a16604482015263ffffffff89166064820152608401610b84565b3360009081526004602090815260408083206001600160a01b038e168452825280832062ffffff87168452825280832060ff8d168452825280832063ffffffff8c1684528252909120805460ff191660011790558101516110d69082908b90613baa565b60006001600160601b03871615611184576040516001600160601b03881681526001600160a01b038716907feeb4ea63ac93d08466c88060e80ed42f0641debf45e931025fbb35faf5f2ad1a9060200160405180910390a26001600160a01b038616600090815260056020526040812080546001600160601b038a16929061115f9084906154b1565b90915550505060208101516001600160601b03871690036001600160681b0316611194565b5060208101516001600160681b03165b602f805462ffffff169060006111a983615516565b91906101000a81548162ffffff021916908362ffffff160217905550506111f881602f60039054906101000a90046001600160801b03166001600160801b03166111f391906154b1565b613e0f565b602f80546001600160801b03929092166301000000026301000000600160981b0319909216919091179081905561124e90610ca5906001600160601b038a16906001600160681b03600160981b909104166154c4565b602f80546001600160681b0392909216600160981b026001600160981b039283161790556040805162ffffff8716815260ff8d16602082015263ffffffff8c169181019190915290821660608201526001600160601b03881660808201526001600160a01b0387811660a0830152808a1691908d169033907f81d4e3306aa30f56dc9c3949abd8c27539b445f9ef380425f39f3f7114888e4f9060c00160405180910390a4801561132d5761132d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168983613e78565b50602001516001600160681b03169998505050505050505050565b60015460009061138990610980907f000000000000000000000000000000000000000000000000000000000000000090600160881b900462ffffff16615495565b65ffffffffffff16905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113df576040516308f78f9960e31b815260040160405180910390fd5b602e546001600160a01b0316156114095760405163f113e20d60e01b815260040160405180910390fd5b602e80546001600160a01b0319166001600160a01b0383169081179091556040517f358e588c5cd5d2bb706322d2e830055eeabb50b8db83d24061f87aff7dd0852690600090a250565b61f2ee60009081526003602052610aa17f1d8e29c4e3375eb7ea0a68899d0c1506ffa0d406a1bddf68d17aeb693ef45d5184846131fa565b600062ffffff8216156114cd578262ffffff168262ffffff16116114c3576114b38284615538565b6114be906001615495565b6114c6565b60015b9050610aa4565b60405163b948ace160e01b815260040160405180910390fd5b60408051808201909152600080825260208201526001600160a01b0382166000908152600360205260409020610aa490613624565b6000610aa482613ee0565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663495b77466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ab9190615554565b905060006115b7611348565b9050818110610aa45781610dd9565b60006115f660ff7f000000000000000000000000000000000000000000000000000000000000000016600261556d565b60ff7f00000000000000000000000000000000000000000000000000000000000000008116907f0000000000000000000000000000000000000000000000000000000000000000166116496002866154fd565b60ff16611656919061556d565b61166091906154b1565b610aa491906154b1565b6000600460ff8316108015906116845750600b60ff831611155b156116af5761169c6116976001846154fd565b613ee0565b6116a583611bbb565b610aa49190615584565b506000919050565b600154600090600160801b810460ff1690600160881b900462ffffff16826117218383156116f557602f546116f09062ffffff16610df0565b6116f7565b845b600180546001600160801b03169061171c90611714908890615495565b610425611dd3565b613eed565b506001600160601b0316949350505050565b600080600061174185611fb9565b9050600061174e8561237e565b604051635d9abccd60e11b81526001600160a01b038a81166004830152898116602483015265ffffffffffff8086166044840152831660648301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bb35799a90608401602060405180830381865afa1580156117d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fb9190615554565b60405163e7d7b22560e01b81526001600160a01b038a8116600483015265ffffffffffff8086166024840152841660448301529195507f00000000000000000000000000000000000000000000000000000000000000009091169063e7d7b22590606401602060405180830381865afa15801561187c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a09190615554565b9250505094509492505050565b6118b5612071565b156118d35760405163bee46da560e01b815260040160405180910390fd5b600280548291906000906118f19084906001600160601b03166155a1565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080602e60148282829054906101000a90046001600160601b031661193991906155a1565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506119a63330836001600160601b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613fff909392919063ffffffff16565b6040516001600160601b038216815233907f1d0cc8799b7a2ca858861054abd7190041668c65caaae12953b2b3ca09ac2c2d9060200160405180910390a250565b60007f000000000000000000000000000000000000000000000000000000000000000065ffffffffffff81168310611a70577f000000000000000000000000000000000000000000000000000000000000000065ffffffffffff168165ffffffffffff1684611a5691906155c1565b611a6091906155ea565b611a6b906001615495565b610d9f565b60019392505050565b611aae6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084613fff565b611aba61f2ee82612e65565b5050565b6000611ada604080518082019091526000808252602082015290565b611ae2612071565b611aea579091565b603054611b11906001600160601b03811690600160601b90046001600160a01b03166155fe565b6001600160a01b0316600003611b8557611b2b6006613624565b805160208201516001600160a01b0316600160601b026001600160601b0390911617603055602f549091506001600160681b03600160981b90910416611b708261368c565b611b7a91906155c1565b603181905591509091565b5050604080518082019091526030546001600160601b0381168252600160601b90046001600160a01b0316602082015260315491565b60008160ff16600403611bef57507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160ff16600503611c2157507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160ff16600603611c5357507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160ff16600703611c8557507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160ff16600803611cb757507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160ff16600903611ce957507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160ff16600a03611d1b57507f0000000000000000000000000000000000000000000000000000000000000000919050565b8160ff16600b036116af57507f0000000000000000000000000000000000000000000000000000000000000000919050565b6040805180820190915260008082526020820152610abe6006613624565b6001600160a01b0383166000908152600360205260408120610b409084846131fa565b600154600090611daa90600290600160801b900460ff166154fd565b60ff168260ff1610159050919050565b600154600090610abe90600160801b900460ff1661166a565b600080611dde610da6565b6001805491925090611dfc90600160881b900462ffffff1683615538565b62ffffff1611611e0c5780611e17565b611e17600182615538565b91505090565b600154600090600160881b900462ffffff16808203611e4f5760405163bd7210dd60e01b815260040160405180910390fd5b60015460ff600160801b909104811690851610611e985760015460405163014560a960e41b815260ff8681166004830152600160801b9092049091166024820152604401610b84565b6000611eb385600160109054906101000a900460ff16612688565b90506000611ec4836106098461403d565b90506000611ed187613ee0565b90508063ffffffff168663ffffffff1610611f185760405163dae230d160e01b815263ffffffff80881660048301528216602482015260ff88166044820152606401610b84565b602d546040805162ffffff87166020808301919091526001600160a01b03808e16838501528c16606083015260ff8b16608083015263ffffffff8a1660a083015260c0808301949094528251808303909401845260e090910190915281519101206000611f868b8588610d32565b9050600080611f978d8d888b611733565b91509150611fa8848383868b614061565b9d9c50505050505050505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611fe7600184615538565b62ffffff16611ff6919061561e565b610aa4907f0000000000000000000000000000000000000000000000000000000000000000615648565b60015460009060ff600160801b909104811690831681111561206857610d9f6120498483613ae3565b604001516001546001600160801b03166120638685614093565b6140fc565b50600092915050565b600061207b611526565b421015905090565b6001600160a01b038086166000908152600460209081526040808320938816835292815282822062ffffff87168352815282822060ff808716845290825283832063ffffffff8616845290915291902054165b95945050505050565b60006120e9612071565b6121065760405163f84b2b3360e01b815260040160405180910390fd5b60006121128433613029565b905061211e6006613624565b6001600160a01b038086166000908152603260209081526040808320338452825290912083519390910151909116600160601b026001600160601b039092169190911790558015610aa15761219d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483613e78565b80602f60038282829054906101000a90046001600160801b03166121c19190615667565b92506101000a8154816001600160801b0302191690836001600160801b031602179055509392505050565b600154600090610abe90600160801b900460ff166115c6565b33600090815260056020526040902054808211156122405760405163353d47df60e21b81526004810183905260248101829052604401610b84565b3360009081526005602052604090208282039055602f54612276906111f3908490630100000090046001600160801b03166154b1565b602f80546001600160801b03929092166301000000026301000000600160981b031990921691909117908190556122c8906122c39084906001600160681b03600160981b909104166155c1565b6136e9565b602f80546001600160681b0392909216600160981b026001600160981b039092169190911790556001600160a01b0383163014612333576123336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484613e78565b60408051838152602081018390526001600160a01b0385169133917ff4e9e956ba4b65051e84982c3ade043c89890cdbc452e9e446afe09cd4db40c8910160405180910390a3505050565b6000611ff67f000000000000000000000000000000000000000000000000000000000000000062ffffff841661561e565b6040805180820190915260008082526020820152600060016123cf610d25565b6123d99190615538565b90506000612407827f000000000000000000000000000000000000000000000000000000000000000061148b565b9050600080612417878486613756565b9150915060008061242a89898789611733565b915091508060000361245a5760405180604001604052806000815260200160008152509650505050505050610aa4565b60405180604001604052808386612471919061556d565b8152602001612480838661556d565b90529998505050505050505050565b602e546000906001600160a01b031633146124d257602e546040516311fb346360e01b81523360048201526001600160a01b039091166024820152604401610b84565b6124da612071565b156124f85760405163bee46da560e01b815260040160405180910390fd5b81600003612519576040516327c57e9d60e21b815260040160405180910390fd5b6000612523611dd3565b9050600061253082611fb9565b9050600061255e7f000000000000000000000000000000000000000000000000000000000000000083615648565b90508065ffffffffffff1642101561259357604051630fb8a1cf60e41b815265ffffffffffff82166004820152602401610b84565b600154602f5462ffffff600160881b830481169291169060ff600160801b90910416806125bf83610df0565b90506125df87826125da6125d4886001615495565b8b610a93565b61414a565b602d89905563ffffffff8316156125fd57602f805462ffffff191690555b600254600154604080518c815260ff86811660208301528516818301526001600160601b0390931660608401526001600160801b03909116608083015265ffffffffffff881660a08301525162ffffff8916917f60785c409db91938793d3f74013b06843f82ea0588265495b262b016fe5323ae919081900360c00190a25094979650505050505050565b60008260ff166000036126bc57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8160ff166003036126fe5760028360ff16116126f957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b612e5e565b8160ff1660040361273b5760038360ff16116126f957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8160ff166005036127aa578260ff1660010361277857507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b60048360ff16116126f957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8160ff1660060361284b578260ff166001036127e757507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff1660020361281957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b60058360ff16116126f957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8160ff1660070361291e578260ff1660010361288857507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff166002036128ba57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff166003036128ec57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b60068360ff16116126f957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8160ff16600803612a23578260ff1660010361295b57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff1660020361298d57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff166003036129bf57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff166004036129f157507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b60078360ff16116126f957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8160ff16600903612b5a578260ff16600103612a6057507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600203612a9257507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600303612ac457507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600403612af657507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600503612b2857507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b60088360ff16116126f957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8160ff16600a03612cc3578260ff16600103612b9757507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600203612bc957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600303612bfb57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600403612c2d57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600503612c5f57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600603612c9157507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b60098360ff16116126f957507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8160ff16600b03612e5e578260ff16600103612d0057507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600203612d3257507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600303612d6457507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600403612d9657507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600503612dc857507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600603612dfa57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b8260ff16600703612e2c57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b600a8360ff1611612e5e57507f0000000000000000000000000000000000000000000000000000000000000000610aa4565b6000610aa1565b600080612e70610aaa565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef89190615554565b612f0291906155c1565b905082811015612f2f576040516304b4846b60e51b81526004810184905260248101829052604401610b84565b6000612f39610da6565b6001600160a01b0386166000908152600360205260409020909150612f5f90858361430f565b50612f6c6006858361430f565b508062ffffff16856001600160a01b03167f5003852720160444a61076ba7bfd246c7fbe2529223dfefc1386c8459dc80cd486604051612fae91815260200190565b60405180910390a3509392505050565b600154600090610abe90600160801b900460ff16611bbb565b6000610aa4612ff583600160109054906101000a900460ff16612688565b61403d565b60015460009060ff600160801b9091048116908316811115612068576130208382613ae3565b60200151610d9f565b6000613033612071565b61303f57506000610aa4565b6001600160a01b038084166000908152603260209081526040808320868516845282528083208151808301835290546001600160601b0381168252600160601b900490941684830152805180820190915282815290810191909152602082015182516000916130b6916001600160601b03166155fe565b6001600160a01b0316600003613118576130ce611abe565b935090506130dc86866123af565b6001600160a01b038088166000908152603360209081526040808320938a16835292815291902082518155908201516001909101559150613157565b6001600160a01b038087166000908152603360209081526040808320938916835292815290829020825180840190935280548352600101549082015291505b816020015160000361316f5760009350505050610aa4565b600061317b6006613624565b60208501518551919250613197916001600160601b03166155fe565b602082015182516131b191906001600160601b03166155fe565b6131bb9190615687565b6131ce906001600160a01b0316836154b1565b915082602001518284600001516131e5919061556d565b6131ef91906155ea565b979650505050505050565b60008162ffffff168362ffffff1611156132365760405163147b8d8560e01b815262ffffff808516600483015283166024820152604401610b84565b60408051808201909152845461ffff808216835262010000909104166020820181905260000361326a576000915050610d9f565b600061328d826000015161ffff16836020015161ffff1661016e61ffff16614650565b905060006132ab836000015161ffff16846020015161ffff16614675565b90506000876001018361ffff1661016e81106132c9576132c96156a7565b600a91828204019190066003029054906101000a900462ffffff1690506000886001018361ffff1661016e8110613302576133026156a7565b600a91828204019190066003029054906101000a900462ffffff1690508162ffffff168762ffffff16108061334057508062ffffff168862ffffff16115b1561335357600095505050505050610d9f565b60408051808201909152600080825260208201528262ffffff168962ffffff161115806133885750856020015161ffff166001145b156133d6575062ffffff8216600090815260268a0160209081526040918290208251808401909352546001600160601b0381168352600160601b90046001600160a01b03169082015261349b565b5062ffffff8816600090815260268a0160209081526040918290208251808401909352546001600160601b038116808452600160601b9091046001600160a01b031691830191909152158015613437575060208101516001600160a01b0316155b1561349b5760006134528b60010187878a602001518e6146a0565b62ffffff16600090815260268f0160209081526040918290208251808401909352546001600160601b0381168352600160601b90046001600160a01b0316908201529450505050505b60408051808201909152600080825260208201528262ffffff168962ffffff161015806134d05750866020015161ffff166001145b1561351e575062ffffff8216600090815260268b0160209081526040918290208251808401909352546001600160601b0381168352600160601b90046001600160a01b0316908201526135e3565b5062ffffff8816600090815260268b0160209081526040918290208251808401909352546001600160601b038116808452600160601b9091046001600160a01b03169183019190915215801561357f575060208101516001600160a01b0316155b156135e357600061359a8c60010188888b602001518e6146a0565b505062ffffff16600090815260268e0160209081526040918290208251808401909352546001600160601b0381168352600160601b90046001600160a01b031690820152925050505b60208083015190820151825161360291906001600160601b03166155fe565b61360c9190615687565b6001600160a01b03169b9a5050505050505050505050565b6040805180820190915260008082526020820152816026016000613647846147ec565b815260208082019290925260409081016000208151808301909252546001600160601b0381168252600160601b90046001600160a01b03169181019190915292915050565b602f54602e5460208301518351600093630100000090046001600160801b031692600160a01b90046001600160601b03908116926136cc929091166155fe565b6001600160a01b03166136df91906154b1565b610aa491906155c1565b60006001600160681b038211156137525760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663034206269747360c81b6064820152608401610b84565b5090565b60008080613766600686866131fa565b61f2ee600090815260036020529091506137a17f1d8e29c4e3375eb7ea0a68899d0c1506ffa0d406a1bddf68d17aeb693ef45d5187876131fa565b90506137ad81836155c1565b6001600160a01b03881660009081526003602052604090209093506137d39087876131fa565b93505050935093915050565b60006001600160ff1b038211156137525760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610b84565b60008282600160ff1b8214806138625750600160ff1b81145b15613880576040516309fe2b4560e41b815260040160405180910390fd5b600080600084126138915783613896565b836000035b9150600083126138a657826138ab565b826000035b905060006138c283670de0b6b3a76400008461483e565b90506001600160ff1b038111156138f65760405163d49c26b360e01b81526004810189905260248101889052604401610b84565b600019858518136139128161390e5782600003610d85565b8290565b9998505050505050505050565b60008061392d8360026156bd565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff16101561396c5750600492915050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1610156139a95750600592915050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1610156139e65750600692915050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff161015613a235750600792915050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff161015613a605750600892915050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff161015613a9d5750600992915050565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff161015613ada5750600a92915050565b50600b92915050565b604080516060810182526000808252602082018190529181019190915260ff8316600090815260208181526040918290208251606081018452905462ffffff808216808452630100000083046001600160681b031694840194909452600160801b9091046001600160801b0316938201939093526001549092600160881b90910416908114613ba25762ffffff811682526040820151600154613b939187918791906001600160801b0316614912565b6001600160681b031660208301525b509392505050565b6000613bc583600160109054906101000a900460ff16614093565b6040850151600154919250600091613bea916122c3916001600160801b0316856140fc565b9050806001600160681b0316836001600160681b03161115613cd5576000613c23613c1583866156dd565b6001600160681b03166149ad565b6002549091506001600160601b039081169082161115613c6157604051631bc48d3f60e11b81526001600160681b0385166004820152602401610b84565b600280546bffffffffffffffffffffffff1981166001600160601b0391821684900382161790915560405190821681527f01b0c36286a79b0a18a8ac370c284b84f47d521151940da35082feb5aace3fea9060200160405180910390a1506001546001600160801b03166040860152613da6565b6000613ce460ff8416856156fd565b9050600060ff821615613d0057613cfb82856154fd565b613d03565b60005b905060ff811615613d54576002805460ff83169190600090613d2f9084906001600160601b03166155a1565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b8360ff16613d738260ff16876001600160681b03166122c391906154b1565b613d7d9190615723565b6001600160681b031687604001818151613d979190615667565b6001600160801b031690525050505b50505060ff1660009081526020818152604091829020835181549285015193909401516001600160801b03908116600160801b026001600160681b039094166301000000026001600160801b031990931662ffffff909516949094179190911792909216179055565b60006001600160801b038211156137525760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610b84565b6040516001600160a01b038316602482015260448101829052613edb90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a15565b505050565b6000610aa482600461582d565b600080600080613efd8888614aea565b905087815b8160ff168160ff161015613f565760ff8116600090815260208190526040902054613f4290600160801b90046001600160801b031689612063848e614093565b613f4c90856154b1565b9350600101613f02565b50505060008185613f6791906154b1565b90506000613f74886115c6565b90506000613f8282846155ea565b9050613f9a6111f3826001600160801b038b166154b1565b9450613ff0613fa9838361556d565b84613fd760ff7f0000000000000000000000000000000000000000000000000000000000000000168561556d565b613fe191906154b1565b613feb91906155c1565b6149ad565b95505050505094509492505050565b6040516001600160a01b03808516602483015283166044820152606481018290526140379085906323b872dd60e01b90608401613ea4565b50505050565b6000610aa461405c61405784670de0b6b3a7640000610d94565b614b0d565b614b89565b600083600003614073575060006120d6565b61407e858484614b9d565b6140888786614bb9565b109695505050505050565b6000806140a16003846154fd565b60ff168460ff16116140d3577f0000000000000000000000000000000000000000000000000000000000000000610e59565b7f0000000000000000000000000000000000000000000000000000000000000000949350505050565b600080836001600160801b0316856001600160801b0316101561413f5760ff8316614127868661583c565b6001600160801b031661413a919061556d565b6120d6565b600095945050505050565b600460ff8316101561417457604051630ea0e9f960e01b815260ff83166004820152602401610b84565b60015460ff600160801b820416906001600160801b031660008061419a84878588613eed565b9150915060006141aa8588614aea565b905086815b8160ff168160ff1610156142575760405180606001604052808b62ffffff1681526020016141df838c8a89614912565b6001600160681b0390811682526001600160801b03808a1660209384015260ff85166000908152808452604090819020855181549587015196909201518316600160801b02959093166301000000026001600160801b031990941662ffffff90911617929092179091169190911790556001016141af565b50600180546001600160801b03851670ffffffffffffffffffffffffffffffffff1990911617600160801b60ff8b16021768ffffffffffffffffff60881b1916600160881b62ffffff8c160265ffffffffffff60a01b191617600160a01b4265ffffffffffff1602179055600280548591906000906142e09084906001600160601b03166155a1565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550505050505050505050565b60008162ffffff1660000361433757604051631136607d60e01b815260040160405180910390fd5b60408051808201909152845461ffff80821680845262010000909204166020830152600090600187019061436d9061016e614675565b61016e811061437e5761437e6156a7565b600a91828204019190066003029054906101000a900462ffffff1690508062ffffff168462ffffff1610156143d5576040516374876e6960e11b815262ffffff808616600483015282166024820152604401610b84565b62ffffff81811660008181526026890160208181526040928390208351808501909452546001600160601b0381168452600160601b90046001600160a01b031690830152929091908716146145d157602084015161016e61ffff821610156144495761444260018261585c565b9050614499565b8260008a600101876000015161ffff1661016e811061446a5761446a6156a7565b600a80820492909201549190066003026101000a900462ffffff16815260208101919091526040016000908120555b8689600101866000015161ffff1661016e81106144b8576144b86156a7565b600a91828204019190066003026101000a81548162ffffff021916908362ffffff16021790555060405180604001604052806144f38a6149ad565b6001600160601b0316815260200161452f84600001516001600160601b0316856020015161452191906155fe565b6001600160a01b0316614c3c565b6001600160a01b0390811690915262ffffff89166000908152602086815260409182902084519490910151909216600160601b026001600160601b039093169290921790558051808201909152855181906145909061ffff1661016e614ca5565b61ffff908116825292831660209182015281518b5492909101518316620100000263ffffffff199092169216919091171788555060019350610d9f92505050565b60405180604001604052806145f88984600001516001600160601b0316613feb91906154b1565b6001600160601b0390811682526020938401516001600160a01b039081169285019290925262ffffff9095166000908152938352604084208251929093015116600160601b029316929092179091559150610d9f9050565b60008183101561466257506000610d9f565b610d4a61466f83866154b1565b83614cb5565b60008160000361468757506000610aa4565b610aa1600161469684866154b1565b61466f91906155c1565b6000808080878161ffff808316908a16106146bb57886146d1565b60016146c7898461585c565b6146d19190615877565b905060005b60026146e2838561585c565b6146ec9190615892565b90506147008161ffff168a61ffff16614cb5565b96508b8761ffff1661016e8110614719576147196156a7565b600a91828204019190066003029054906101000a900462ffffff1695506147488161ffff168a61ffff16614ca5565b94508b8561ffff1661016e8110614761576147616156a7565b600a91828204019190066003029054906101000a900462ffffff16935060008862ffffff168762ffffff16111590508080156147a757508462ffffff168962ffffff1611155b156147b257506147dd565b806147c9576147c2600183615877565b92506147d7565b6147d482600161585c565b93505b506146d6565b50505095509550955095915050565b805460009060018301906148069061ffff1661016e614675565b61016e8110614817576148176156a7565b600a91828204019190066003029054906101000a900462ffffff1662ffffff169050919050565b60008080600019858709858702925082811083820303915050806000036148785783828161486e5761486e6155d4565b0492505050610d9f565b8381106148a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610b84565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008061491e86613ee0565b9050600061493185856120638a8a614093565b9050600061498261497d61494485614cc1565b6149777f000000000000000000000000000000000000000000000000000000000000000061497187614cc1565b90614d08565b90614d17565b614d2f565b90506001600160681b03811161499857806149a1565b6001600160681b035b98975050505050505050565b60006001600160601b038211156137525760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610b84565b6000614a6a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d439092919063ffffffff16565b9050805160001480614a8b575080806020019051810190614a8b91906158a7565b613edb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b84565b600060028360ff168360ff1611614b015782614b03565b835b610aa191906154fd565b600081670afdc366fbc00000600160ff1b03811315614b4257604051631d0bee6360e21b815260048101849052602401610b84565b6000614b56670de0b6b3a7640000836158c9565b905080600003614b6857839250614b82565b8082036000831315614b7f57670de0b6b3a7640000015b92505b5050919050565b6000610aa4670de0b6b3a7640000836158dd565b6000610b4061405c84614bb385614bb389614d52565b90614dc9565b600081600003614bdc5760405163d1d533f160e01b815260040160405180910390fd5b600082614beb816000196155c1565b614bf69060016154b1565b614c00919061590b565b9050835b81811015614c3257604080516020808201939093528151808203840181529082019091528051910120614c04565b6120d6848261590b565b60006001600160a01b038211156137525760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663630206269747360c81b6064820152608401610b84565b6000610aa161466f8460016154b1565b6000610aa1828461590b565b6000614cd7670de0b6b3a76400006000196155ea565b821115614cfa57604051631cd951a760e01b815260048101839052602401610b84565b50670de0b6b3a76400000290565b6000610aa1610d858484614e6d565b6000610aa1610d8584670de0b6b3a76400008561483e565b6000610aa4670de0b6b3a7640000836155ea565b6060610b408484600085614f23565b6000614d6a670de0b6b3a7640000600160ff1b6158dd565b821215614d8d576040516399474eeb60e01b815260048101839052602401610b84565b614da6670de0b6b3a76400006001600160ff1b036158dd565b821315614cfa57604051639d58109160e01b815260048101839052602401610b84565b60008282600160ff1b821480614de25750600160ff1b81145b15614e005760405163a6070c2560e01b815260040160405180910390fd5b60008060008412614e115783614e16565b836000035b915060008312614e265782614e2b565b826000035b90506000614e398383614e6d565b90506001600160ff1b038111156138f65760405163120b5b4360e01b81526004810189905260248101889052604401610b84565b6000808060001984860984860292508281108382030391505080600003614ea15750670de0b6b3a764000090049050610aa4565b670de0b6b3a76400008110614ed357604051635173648d60e01b81526004810186905260248101859052604401610b84565b6000670de0b6b3a764000085870962040000818503049310909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b606082471015614f845760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b84565b600080866001600160a01b03168587604051614fa09190615943565b60006040518083038185875af1925050503d8060008114614fdd576040519150601f19603f3d011682016040523d82523d6000602084013e614fe2565b606091505b50915091506131ef878383876060831561505d578251600003615056576001600160a01b0385163b6150565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b84565b5081610b40565b610b4083838151156150725781518083602001fd5b8060405162461bcd60e51b8152600401610b84919061595f565b803562ffffff81168114610e7557600080fd5b600080604083850312156150b257600080fd5b6150bb8361508c565b91506150c96020840161508c565b90509250929050565b6000602082840312156150e457600080fd5b610aa18261508c565b80356001600160a01b0381168114610e7557600080fd5b803560ff81168114610e7557600080fd5b803563ffffffff81168114610e7557600080fd5b6000806000806080858703121561513f57600080fd5b615148856150ed565b9350615156602086016150ed565b925061516460408601615104565b915061517260608601615115565b905092959194509250565b80356001600160601b0381168114610e7557600080fd5b600080604083850312156151a757600080fd5b6151b0836150ed565b91506150c96020840161517d565b6000806000606084860312156151d357600080fd5b6151dc846150ed565b92506151ea6020850161508c565b91506151f86040850161508c565b90509250925092565b60006020828403121561521357600080fd5b610aa182615115565b60008060008060008060c0878903121561523557600080fd5b61523e876150ed565b955061524c60208801615104565b945061525a60408801615115565b9350615268606088016150ed565b92506152766080880161517d565b915061528460a088016150ed565b90509295509295509295565b6000602082840312156152a257600080fd5b610aa1826150ed565b81516001600160601b031681526020808301516001600160a01b03169082015260408101610aa4565b6000602082840312156152e657600080fd5b610aa182615104565b6000806000806080858703121561530557600080fd5b61530e856150ed565b935061531c602086016150ed565b925061532a6040860161508c565b91506151726060860161508c565b60006020828403121561534a57600080fd5b610aa18261517d565b60006020828403121561536557600080fd5b5035919050565b82815260608101610d9f602083018480516001600160601b031682526020908101516001600160a01b0316910152565b600080600080600060a086880312156153b457600080fd5b6153bd866150ed565b94506153cb602087016150ed565b93506153d96040870161508c565b92506153e760608701615104565b91506153f560808701615115565b90509295509295909350565b6000806040838503121561541457600080fd5b61541d836150ed565b91506150c9602084016150ed565b6000806040838503121561543e57600080fd5b615447836150ed565b946020939093013593505050565b6000806040838503121561546857600080fd5b61547183615104565b91506150c960208401615104565b634e487b7160e01b600052601160045260246000fd5b62ffffff818116838216019080821115610e5c57610e5c61547f565b80820180821115610aa457610aa461547f565b6001600160681b03818116838216019080821115610e5c57610e5c61547f565b60ff8181168382160190811115610aa457610aa461547f565b60ff8281168282160390811115610aa457610aa461547f565b600062ffffff80831681810361552e5761552e61547f565b6001019392505050565b62ffffff828116828216039080821115610e5c57610e5c61547f565b60006020828403121561556657600080fd5b5051919050565b8082028115828204841417610aa457610aa461547f565b63ffffffff818116838216019080821115610e5c57610e5c61547f565b6001600160601b03818116838216019080821115610e5c57610e5c61547f565b81810381811115610aa457610aa461547f565b634e487b7160e01b600052601260045260246000fd5b6000826155f9576155f96155d4565b500490565b6001600160a01b03818116838216019080821115610e5c57610e5c61547f565b65ffffffffffff8181168382160280821691908281146156405761564061547f565b505092915050565b65ffffffffffff818116838216019080821115610e5c57610e5c61547f565b6001600160801b03818116838216019080821115610e5c57610e5c61547f565b6001600160a01b03828116828216039080821115610e5c57610e5c61547f565b634e487b7160e01b600052603260045260246000fd5b63ffffffff8181168382160280821691908281146156405761564061547f565b6001600160681b03828116828216039080821115610e5c57610e5c61547f565b60006001600160681b0380841680615717576157176155d4565b92169190910692915050565b60006001600160681b038084168061573d5761573d6155d4565b92169190910492915050565b600181815b8085111561578457816000190482111561576a5761576a61547f565b8085161561577757918102915b93841c939080029061574e565b509250929050565b60008261579b57506001610aa4565b816157a857506000610aa4565b81600181146157be57600281146157c8576157e4565b6001915050610aa4565b60ff8411156157d9576157d961547f565b50506001821b610aa4565b5060208310610133831016604e8410600b8410161715615807575081810a610aa4565b6158118383615749565b80600019048211156158255761582561547f565b029392505050565b6000610aa160ff84168361578c565b6001600160801b03828116828216039080821115610e5c57610e5c61547f565b61ffff818116838216019080821115610e5c57610e5c61547f565b61ffff828116828216039080821115610e5c57610e5c61547f565b600061ffff8084168061573d5761573d6155d4565b6000602082840312156158b957600080fd5b81518015158114610aa157600080fd5b6000826158d8576158d86155d4565b500790565b6000826158ec576158ec6155d4565b600160ff1b8214600019841416156159065761590661547f565b500590565b60008261591a5761591a6155d4565b500690565b60005b8381101561593a578181015183820152602001615922565b50506000910152565b6000825161595581846020870161591f565b9190910192915050565b602081526000825180602084015261597e81604085016020870161591f565b601f01601f1916919091016040019291505056fea2646970667358221220bde9c7ed083250a28851a22bb16dd44b8da20a6a548e28570adbdb39dbcc145964736f6c63430008180033000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000004d5f2cd31701f3e5de77b3f89ee7b80eb87b4acc000000000000000000000000c516fe1fee5122d66e9427721a63d6c27e1201ca00000000000000000000000000000000000000000000000006f05b59d3b20000000000000000000000000000000000000000000000000000000000000024ea000000000000000000000000000000000000000000000000000000000066da29e00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000005