0x6080604052600436106101f1575f3560e01c806384b0196e11610108578063d5bf523c1161009d578063deaaa7cc1161006d578063deaaa7cc14610751578063e23a9a5214610784578063f851a440146107ca578063fc4eee42146107e8578063fe0d94c1146107fd575f80fd5b8063d5bf523c146106df578063da35c664146106fe578063da95691a14610713578063ddf0b00914610732575f80fd5b8063a37ee07d116100d8578063a37ee07d1461065a578063a9ed3d291461066e578063b27bb7581461068d578063d33219b4146106c0575f80fd5b806384b0196e146105ac5780638aee09f5146105d35780638f6ee2aa146105f25780638ff262e31461063b575f80fd5b80635286003e1161018957806367af206e1161015957806367af206e146104fb5780637b3c71d31461051a5780637bdbe4d0146105395780637ecebe001461054d57806384998e4e14610581575f80fd5b80635286003e1461047f578063567813881461049e5780635986ebfc146104bd5780635c60da1b146104dc575f80fd5b806326782247116101c457806326782247146103cc578063328dd982146104035780633e4f49e614610432578063524fe6d31461045e575f80fd5b8063013cf08b146101f557806306fdde03146102ba57806317977c611461030657806317a4c92d1461033f575b5f80fd5b348015610200575f80fd5b5061026761020f36600461327f565b600960208190525f91825260409091208054600182015460028301546007840154600885015495850154600a860154600b870154600c9097015495976001600160a01b03909516969395929493919290919060ff1689565b60408051998a526001600160a01b0390981660208a0152968801959095526060870193909352608086019190915260a085015260c084015260e08301521515610100820152610120015b60405180910390f35b3480156102c5575f80fd5b506102f960405180604001604052806014815260200173515444414f20476f7665726e6f7220427261766f60601b81525081565b6040516102b191906132e3565b348015610311575f80fd5b5061033161032036600461330b565b600b6020525f908152604090205481565b6040519081526020016102b1565b34801561034a575f80fd5b5061039c610359366004613324565b600a60209081525f92835260408084209091529082529020805460018201546002830154600384015460049094015492936001600160a01b039092169290919085565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016102b1565b3480156103d7575f80fd5b506001546103eb906001600160a01b031681565b6040516001600160a01b0390911681526020016102b1565b34801561040e575f80fd5b5061042261041d36600461327f565b610810565b6040516102b19493929190613411565b34801561043d575f80fd5b5061045161044c36600461327f565b610a90565b6040516102b1919061347c565b348015610469575f80fd5b5061047d61047836600461330b565b610c9f565b005b34801561048a575f80fd5b5061047d61049936600461327f565b610d67565b3480156104a9575f80fd5b5061047d6104b83660046134b2565b610d74565b3480156104c8575f80fd5b5061047d6104d7366004613716565b610dd5565b3480156104e7575f80fd5b506002546103eb906001600160a01b031681565b348015610506575f80fd5b506103eb6105153660046137c5565b611255565b348015610525575f80fd5b5061047d6105343660046137e5565b611289565b348015610544575f80fd5b50610331600181565b348015610558575f80fd5b5061033161056736600461330b565b6001600160a01b03165f9081526010602052604090205490565b34801561058c575f80fd5b5061033161059b36600461327f565b600c6020525f908152604090205481565b3480156105b7575f80fd5b506105c06112d9565b6040516102b19796959493929190613865565b3480156105de575f80fd5b506008546103eb906001600160a01b031681565b3480156105fd575f80fd5b5061062b61060c366004613324565b600d60209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016102b1565b348015610646575f80fd5b5061047d6106553660046138d4565b61131b565b348015610665575f80fd5b5061047d61147d565b348015610679575f80fd5b506007546103eb906001600160a01b031681565b348015610698575f80fd5b506103317f57223d336158142a7bf43e6e4526ecded228004ba63e6a2c09f7281e2a2c184681565b3480156106cb575f80fd5b506006546103eb906001600160a01b031681565b3480156106ea575f80fd5b5061047d6106f9366004613938565b6114e1565b348015610709575f80fd5b5061033160045481565b34801561071e575f80fd5b5061033161072d3660046139e3565b6115c6565b34801561073d575f80fd5b5061047d61074c36600461327f565b6119fe565b34801561075c575f80fd5b506103317ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b34801561078f575f80fd5b506107a361079e366004613324565b611d21565b6040805182511515815260208084015160ff169082015291810151908201526060016102b1565b3480156107d5575f80fd5b505f546103eb906001600160a01b031681565b3480156107f3575f80fd5b5061033160035481565b61047d61080b36600461327f565b611d90565b6060806060805f60095f8781526020019081526020015f209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561088d57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161086f575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156108dd57602002820191905f5260205f20905b8154815260200190600101908083116108c9575b5050505050925081805480602002602001604051908101604052809291908181526020015f905b828210156109ac578382905f5260205f2001805461092190613a3b565b80601f016020809104026020016040519081016040528092919081815260200182805461094d90613a3b565b80156109985780601f1061096f57610100808354040283529160200191610998565b820191905f5260205f20905b81548152906001019060200180831161097b57829003601f168201915b505050505081526020019060010190610904565b50505050915080805480602002602001604051908101604052809291908181526020015f905b82821015610a7a578382905f5260205f200180546109ef90613a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90613a3b565b8015610a665780601f10610a3d57610100808354040283529160200191610a66565b820191905f5260205f20905b815481529060010190602001808311610a4957829003601f168201915b5050505050815260200190600101906109d2565b5050505090509450945094509450509193509193565b5f8160045410158015610aa4575060035482115b610b075760405162461bcd60e51b815260206004820152602960248201527f476f7665726e6f72427261766f3a3a73746174653a20696e76616c69642070726044820152681bdc1bdcd85b081a5960ba1b60648201526084015b60405180910390fd5b6007546040805163092f069960e21b815290515f926001600160a01b0316916324bc1a649160048083019260209291908290030181865afa158015610b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b729190613a6d565b5f8481526009602052604090206007810154919250904311610b9757505f9392505050565b80600801544311610bac575060019392505050565b80600a01548160090154111580610bc7575081816009015411155b15610bd6575060029392505050565b80600201545f03610beb575060039392505050565b600c81015460ff1615610c02575060069392505050565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c1a287e26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c769190613a6d565b8160020154610c859190613a98565b4210610c95575060059392505050565b5060049392505050565b6007546001600160a01b03163314610d135760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f72427261766f3a3a757064617465476f7665726e616e6365436044820152706f6e6669673a2061646d696e206f6e6c7960781b6064820152608401610afe565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527f35fda526dd60d8d68240cedb5d167469fe669bb84168b3cd162ee9b594844c589060200160405180910390a150565b610d718133611fc4565b50565b337fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48383610da3848383612369565b6040805193845260ff9092166020840152908201526080606082018190525f9082015260a00160405180910390a25050565b6002610de086610a90565b6006811115610df157610df1613468565b1480610e1657506005610e0386610a90565b6006811115610e1457610e14613468565b145b80610e3957505f610e2686610a90565b6006811115610e3757610e37613468565b145b610e985760405162461bcd60e51b815260206004820152603a60248201525f80516020613f2c83398151915260448201527f2063616e6e6f742072652d7375626d69742070726f706f73616c0000000000006064820152608401610afe565b5f858152600a6020908152604080832033808552908352818420898552600990935292206001810154919290916001600160a01b031614610f445760405162461bcd60e51b815260206004820152604d60248201525f80516020613f2c83398151915260448201527f204f7468657220757365722063616e6e6f742072655375626d69742050726f7060648201526c1bdcd85b081c1c9bdc1bdcd85b609a1b608482015260a401610afe565b8160040154826002015410610fae5760405162461bcd60e51b815260206004820152603b60248201525f80516020613f2c83398151915260448201527f2052656163686564206d61782072657375626d6974206c696d697400000000006064820152608401610afe565b84518651148015610fc0575083518651145b6110355760405162461bcd60e51b815260206004820152604d60248201525f80516020613f2c83398151915260448201527f2070726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e206160648201526c0e4d2e8f240dad2e6dac2e8c6d609b1b608482015260a401610afe565b85515f036110905760405162461bcd60e51b815260206004820152603560248201525f80516020613f2c833981519152604482015274206d7573742070726f7669646520616374696f6e7360581b6064820152608401610afe565b6001865111156110e95760405162461bcd60e51b815260206004820152603160248201525f80516020613f2c83398151915260448201527020746f6f206d616e7920616374696f6e7360781b6064820152608401610afe565b85515f19905f9061110390600385019060208b01906130c0565b50865161111990600585019060208a0190613123565b50855161112f9060068501906020890190613173565b5060078301829055600883018190555f60098401819055600a8401819055600b8401556002840154611162906001613a98565b60028501555f898152600c602052604081208190555b5f8a8152600560205260409020548110156111fe575f8a8152600d60209081526040808320600590925282208054839190859081106111b9576111b9613aab565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055806111f681613abf565b915050611178565b507ffbe53550e84866bbb7856c5d4070b74d0c7b37eb43a066feb1fbb98e1b082b4489338a8a8a87878c8c6002015460405161124299989796959493929190613ad7565b60405180910390a1505050505050505050565b6005602052815f5260405f20818154811061126e575f80fd5b5f918252602090912001546001600160a01b03169150829050565b337fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda485856112b8848383612369565b86866040516112cb959493929190613b61565b60405180910390a250505050565b5f6060805f805f60606112ea6126a8565b6112f26126da565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f6113c1836113bb7ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d788888861136d8a6001600160a01b03165f90815260106020526040902080546001810190915590565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c0015b60405160208183030381529060405280519060200120612707565b84612733565b9050806114105760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f72427261766f3a3a20496e76616c696420566f7465720000006044820152606401610afe565b826001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48686611448878a8a612369565b6040805193845260ff9092166020840152908201526080606082018190525f9082015260a00160405180910390a25050505050565b60065f9054906101000a90046001600160a01b03166001600160a01b0316630e18b6816040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156114c9575f80fd5b505af11580156114db573d5f803e3d5ffd5b50505050565b5f61155f836113bb7f57223d336158142a7bf43e6e4526ecded228004ba63e6a2c09f7281e2a2c18468787611532896001600160a01b03165f90815260106020526040902080546001810190915590565b6040805160208101959095528401929092526001600160a01b03166060830152608082015260a0016113a0565b9050806115bc5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e6f72427261766f3a3a20496e76616c696420536d61727465737460448201526408135a5b9960da1b6064820152608401610afe565b6114db8484611fc4565b5f845186511480156115d9575083518651145b80156115e6575082518651145b6116665760405162461bcd60e51b8152602060048201526044602482018190527f476f7665726e6f72427261766f3a3a70726f706f73653a2070726f706f73616c908201527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6064820152630c2e8c6d60e31b608482015260a401610afe565b85515f036116cb5760405162461bcd60e51b815260206004820152602c60248201527f476f7665726e6f72427261766f3a3a70726f706f73653a206d7573742070726f60448201526b7669646520616374696f6e7360a01b6064820152608401610afe565b60018651111561172e5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a3a70726f706f73653a20746f6f206d616e7960448201526720616374696f6e7360c01b6064820152608401610afe565b335f908152600b602052604090205480156118aa575f61174d82610a90565b9050600181600681111561176357611763613468565b036117fc5760405162461bcd60e51b815260206004820152605860248201527f476f7665726e6f72427261766f3a3a70726f706f73653a206f6e65206c69766560448201527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60648201527f20616c7265616479206163746976652070726f706f73616c0000000000000000608482015260a401610afe565b5f81600681111561180f5761180f613468565b036118a85760405162461bcd60e51b815260206004820152605960248201527f476f7665726e6f72427261766f3a3a70726f706f73653a206f6e65206c69766560448201527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60648201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000608482015260a401610afe565b505b600480545f19915f9190826118be83613abf565b90915550506004545f81815260096020908152604082209283556001830180546001600160a01b0319163317905560028301919091558a51611908916003840191908d01906130c0565b50885161191e90600483019060208c01906131c3565b50875161193490600583019060208b0190613123565b50865161194a90600683019060208a0190613173565b5060078101839055600881018290555f60098201819055600a8201819055600b808301829055600c8301805460ff19169055825460018401546001600160a01b031683526020919091526040909120556004546119a6906127a3565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0815f0154338c8c8c8c89898e6040516119e899989796959493929190613ba7565b60405180910390a1549998505050505050505050565b6003611a0982610a90565b6006811115611a1a57611a1a613468565b14611a9b5760405162461bcd60e51b8152602060048201526044602482018190527f476f7665726e6f72427261766f3a3a71756575653a2070726f706f73616c2063908201527f616e206f6e6c79206265207175657565642069662069742069732073756363656064820152631959195960e21b608482015260a401610afe565b5f8181526009602090815260408083206006548251630d48571f60e31b815292519194936001600160a01b0390911692636a42b8f892600480830193928290030181865afa158015611aef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b139190613a6d565b611b1d9042613a98565b90505f5b6003830154811015611cdb57611cc9836003018281548110611b4557611b45613aab565b5f918252602090912001546004850180546001600160a01b039092169184908110611b7257611b72613aab565b905f5260205f200154856005018481548110611b9057611b90613aab565b905f5260205f20018054611ba390613a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bcf90613a3b565b8015611c1a5780601f10611bf157610100808354040283529160200191611c1a565b820191905f5260205f20905b815481529060010190602001808311611bfd57829003601f168201915b5050505050866006018581548110611c3457611c34613aab565b905f5260205f20018054611c4790613a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7390613a3b565b8015611cbe5780601f10611c9557610100808354040283529160200191611cbe565b820191905f5260205f20905b815481529060010190602001808311611ca157829003601f168201915b505050505086612a82565b80611cd381613abf565b915050611b21565b506002820181905560408051848152602081018390527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892910160405180910390a1505050565b60408051606080820183525f8083526020808401829052928401819052858152600983528381206001600160a01b0386168252600d01835283902083519182018452805460ff808216151584526101009091041692820192909252600190910154918101919091525b92915050565b6004611d9b82610a90565b6006811115611dac57611dac613468565b14611e2d5760405162461bcd60e51b815260206004820152604560248201527f476f7665726e6f72427261766f3a3a657865637574653a2070726f706f73616c60448201527f2063616e206f6e6c7920626520657865637574656420696620697420697320716064820152641d595d595960da1b608482015260a401610afe565b5f818152600960205260408120600c8101805460ff19166001179055905b6003820154811015611f8c576006546004830180546001600160a01b0390921691630825f38f919084908110611e8357611e83613aab565b905f5260205f200154846003018481548110611ea157611ea1613aab565b5f918252602090912001546004860180546001600160a01b039092169186908110611ece57611ece613aab565b905f5260205f200154866005018681548110611eec57611eec613aab565b905f5260205f2001876006018781548110611f0957611f09613aab565b905f5260205f200188600201546040518763ffffffff1660e01b8152600401611f36959493929190613cb7565b5f6040518083038185885af1158015611f51573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052611f799190810190613d02565b5080611f8481613abf565b915050611e4b565b506040518281527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a15050565b60075460405163130c9d0360e01b81526001600160a01b0383811660048301529091169063130c9d0390602401602060405180830381865afa15801561200c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120309190613d74565b6120925760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72427261766f3a204f6e6c7920536d617274657374204d696e60448201526c642063616e20617070726f766560981b6064820152608401610afe565b5f828152600d602090815260408083206001600160a01b038516845290915290205460ff1615156001036121215760405162461bcd60e51b815260206004820152603060248201527f476f7665726e6f72427261766f3a20416c726561647920417070726f7665642060448201526f109e4814db585c9d195cdd08135a5b9960821b6064820152608401610afe565b5f8281526009602052604090206008810154156121915760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20416c72656164792050726f706f73616c20604482015267105c1c1c9bdd995960c21b6064820152608401610afe565b5f838152600c60205260409020546121aa906001613a98565b5f848152600c6020908152604080832093909355600d81528282206001600160a01b03808716808552918352848420805460ff19166001908117909155888552600584528585208054918201815585528385200180546001600160a01b03191690921790915560075484516302a251a360e01b8152945193949116926302a251a3926004808401939192918290030181865afa15801561224c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122709190613a6d565b905060075f9054906101000a90046001600160a01b03166001600160a01b031663a09af23c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e69190613a6d565b5f858152600c60205260409020541080159061230457506008820154155b1561232257436007830181905561231c908290613a98565b60088301555b604080518581526001600160a01b03851660208201527f049c28adfe50bcf1b76fd95273b6a24566b9f377e52fddc653c3355248dad07a910160405180910390a150505050565b5f600161237584610a90565b600681111561238657612386613468565b146123ed5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a604482015270081d9bdd1a5b99c81a5cc818db1bdcd959607a1b6064820152608401610afe565b60028260ff16111561245c5760405162461bcd60e51b815260206004820152603260248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a60448201527120696e76616c696420766f7465207479706560701b6064820152608401610afe565b5f83815260096020526040902060018101546001600160a01b03908116908616036124e75760405162461bcd60e51b815260206004820152603560248201527f476f7665726e6f72427261766f3a3a63617374566f74653a2050726f706f73616044820152746c2063726561746f722063616e6e6f7420766f746560581b6064820152608401610afe565b6001600160a01b0385165f908152600d820160205260409020805460ff161561256f5760405162461bcd60e51b815260206004820152603460248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a604482015273081d9bdd195c88185b1c9958591e481d9bdd195960621b6064820152608401610afe565b6008546007830154604051630748d63560e31b81525f926001600160a01b031691633a46b1a8916125b8918b916004016001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156125d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f79190613a6d565b905061261361260e670de0b6b3a764000083613d93565b612c34565b90508460ff165f03612639578083600a015461262f9190613a98565b600a84015561267f565b8460ff1660010361265e578083600901546126549190613a98565b600984015561267f565b8460ff1660020361267f578083600b01546126799190613a98565b600b8401555b8154600161ffff1990911661010060ff88160217811783559091018190559150505b9392505050565b60606126d57f515444414f20476f7665726e6f7220427261766f000000000000000000000014600e612ca2565b905090565b60606126d57f3100000000000000000000000000000000000000000000000000000000000001600f612ca2565b5f611d8a612713612d4b565b8360405161190160f01b8152600281019290925260228201526042902090565b5f836001600160a01b03163b5f03612791575f806127518585612e74565b5090925090505f81600381111561276a5761276a613468565b1480156127885750856001600160a01b0316826001600160a01b0316145b925050506126a1565b61279c848484612ebd565b90506126a1565b6008546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a08231906024016020604051808303815f875af11580156127ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280e9190613a6d565b60075460405163130c9d0360e01b81523360048201529192505f916001600160a01b039091169063130c9d0390602401602060405180830381865afa158015612859573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061287d9190613d74565b15155f036129ca5760075f9054906101000a90046001600160a01b03166001600160a01b031663db002b966040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f99190613a6d565b9050818111156129665760405162461bcd60e51b815260206004820152603260248201527f476f7665726e6f72427261766f3a3a70726f706f73653a206e6f7420656e6f7560448201527133b4103a37b5b2b739903337b910313ab93760711b6064820152608401610afe565b6008546040516368417ecb60e01b8152336004820152602481018390526001600160a01b03909116906368417ecb906044015f604051808303815f87803b1580156129af575f80fd5b505af11580156129c1573d5f803e3d5ffd5b505050506129cd565b505f5b60075460408051632df06f4960e21b815290515f926001600160a01b03169163b7c1bd249160048083019260209291908290030181865afa158015612a14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a389190613a6d565b5f858152600a60209081526040808320338085529252909120958655600180870180546001600160a01b031916909217909155600286015560048501555060039092019190915550565b6006546040516001600160a01b039091169063f2b0653790612ab09088908890889088908890602001613db2565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612ae491815260200190565b602060405180830381865afa158015612aff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b239190613d74565b15612bb45760405162461bcd60e51b815260206004820152605560248201527f476f7665726e6f72427261766f3a3a71756575654f72526576657274496e746560448201527f726e616c3a206964656e746963616c2070726f706f73616c20616374696f6e20606482015274616c7265616479207175657565642061742065746160581b608482015260a401610afe565b600654604051633a66f90160e01b81526001600160a01b0390911690633a66f90190612bec9088908890889088908890600401613db2565b6020604051808303815f875af1158015612c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c2c9190613a6d565b505050505050565b5f6003821115612c935750805f612c4c600283613d93565b612c57906001613a98565b90505b81811015612c8d57905080600281612c728186613d93565b612c7c9190613a98565b612c869190613d93565b9050612c5a565b50919050565b8115612c9d575060015b919050565b606060ff8314612cbc57612cb583612f94565b9050611d8a565b818054612cc890613a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054612cf490613a3b565b8015612d3f5780601f10612d1657610100808354040283529160200191612d3f565b820191905f5260205f20905b815481529060010190602001808311612d2257829003601f168201915b50505050509050611d8a565b5f306001600160a01b037f0000000000000000000000002c25f4287d5150c3b7dfd31afb8f2c94581cc2ce16148015612da357507f000000000000000000000000000000000000000000000000000000000000000146145b15612dcd57507f9ce8f350a1c407827b15e1d19fb7a7d5dd7a98f8b4ce836a33454ea2f529e5a190565b6126d5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527fe3553f0d65391b51b3a91bfecfa0f0d36557d076ef5be4b111f87a85d2fa91d8918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f805f8351604103612eab576020840151604085015160608601515f1a612e9d88828585612fd1565b955095509550505050612eb6565b505081515f91506002905b9250925092565b5f805f856001600160a01b03168585604051602401612edd929190613dea565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b17905251612f129190613e0a565b5f60405180830381855afa9150503d805f8114612f4a576040519150601f19603f3d011682016040523d82523d5f602084013e612f4f565b606091505b5091509150818015612f6357506020815110155b8015612f8a57508051630b135d3f60e11b90612f889083016020908101908401613a6d565b145b9695505050505050565b60605f612fa083613099565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561300a57505f9150600390508261308f565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561305b573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661308657505f92506001915082905061308f565b92505f91508190505b9450945094915050565b5f60ff8216601f811115611d8a57604051632cd44ac360e21b815260040160405180910390fd5b828054828255905f5260205f20908101928215613113579160200282015b8281111561311357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906130de565b5061311f9291506131fc565b5090565b828054828255905f5260205f20908101928215613167579160200282015b8281111561316757825182906131579082613e6f565b5091602001919060010190613141565b5061311f929150613210565b828054828255905f5260205f209081019282156131b7579160200282015b828111156131b757825182906131a79082613e6f565b5091602001919060010190613191565b5061311f92915061322c565b828054828255905f5260205f20908101928215613113579160200282015b828111156131135782518255916020019190600101906131e1565b5b8082111561311f575f81556001016131fd565b8082111561311f575f6132238282613248565b50600101613210565b8082111561311f575f61323f8282613248565b5060010161322c565b50805461325490613a3b565b5f825580601f10613263575050565b601f0160209004905f5260205f2090810190610d7191906131fc565b5f6020828403121561328f575f80fd5b5035919050565b5f5b838110156132b0578181015183820152602001613298565b50505f910152565b5f81518084526132cf816020860160208601613296565b601f01601f19169290920160200192915050565b602081525f6126a160208301846132b8565b80356001600160a01b0381168114612c9d575f80fd5b5f6020828403121561331b575f80fd5b6126a1826132f5565b5f8060408385031215613335575f80fd5b82359150613345602084016132f5565b90509250929050565b5f8151808452602080850194508084015f5b838110156133855781516001600160a01b031687529582019590820190600101613360565b509495945050505050565b5f8151808452602080850194508084015f5b83811015613385578151875295820195908201906001016133a2565b5f81518084526020808501808196508360051b810191508286015f5b858110156134045782840389526133f28483516132b8565b988501989350908401906001016133da565b5091979650505050505050565b608081525f613423608083018761334e565b82810360208401526134358187613390565b9050828103604084015261344981866133be565b9050828103606084015261345d81856133be565b979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016007831061349c57634e487b7160e01b5f52602160045260245ffd5b91905290565b803560ff81168114612c9d575f80fd5b5f80604083850312156134c3575f80fd5b82359150613345602084016134a2565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613510576135106134d3565b604052919050565b5f67ffffffffffffffff821115613531576135316134d3565b5060051b60200190565b5f82601f83011261354a575f80fd5b8135602061355f61355a83613518565b6134e7565b82815260059290921b8401810191818101908684111561357d575f80fd5b8286015b8481101561359f57613592816132f5565b8352918301918301613581565b509695505050505050565b5f67ffffffffffffffff8211156135c3576135c36134d3565b50601f01601f191660200190565b5f82601f8301126135e0575f80fd5b81356135ee61355a826135aa565b818152846020838601011115613602575f80fd5b816020850160208301375f918101602001919091529392505050565b5f82601f83011261362d575f80fd5b8135602061363d61355a83613518565b82815260059290921b8401810191818101908684111561365b575f80fd5b8286015b8481101561359f57803567ffffffffffffffff81111561367e575f8081fd5b61368c8986838b01016135d1565b84525091830191830161365f565b5f82601f8301126136a9575f80fd5b813560206136b961355a83613518565b82815260059290921b840181019181810190868411156136d7575f80fd5b8286015b8481101561359f57803567ffffffffffffffff8111156136fa575f8081fd5b6137088986838b01016135d1565b8452509183019183016136db565b5f805f805f60a0868803121561372a575f80fd5b85359450602086013567ffffffffffffffff80821115613748575f80fd5b61375489838a0161353b565b95506040880135915080821115613769575f80fd5b61377589838a0161361e565b9450606088013591508082111561378a575f80fd5b61379689838a0161369a565b935060808801359150808211156137ab575f80fd5b506137b8888289016135d1565b9150509295509295909350565b5f80604083850312156137d6575f80fd5b50508035926020909101359150565b5f805f80606085870312156137f8575f80fd5b84359350613808602086016134a2565b9250604085013567ffffffffffffffff80821115613824575f80fd5b818701915087601f830112613837575f80fd5b813581811115613845575f80fd5b886020828501011115613856575f80fd5b95989497505060200194505050565b60ff60f81b8816815260e060208201525f61388360e08301896132b8565b828103604084015261389581896132b8565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506138c68185613390565b9a9950505050505050505050565b5f805f80608085870312156138e7575f80fd5b843593506138f7602086016134a2565b9250613905604086016132f5565b9150606085013567ffffffffffffffff811115613920575f80fd5b61392c878288016135d1565b91505092959194509250565b5f805f6060848603121561394a575f80fd5b8335925061395a602085016132f5565b9150604084013567ffffffffffffffff811115613975575f80fd5b613981868287016135d1565b9150509250925092565b5f82601f83011261399a575f80fd5b813560206139aa61355a83613518565b82815260059290921b840181019181810190868411156139c8575f80fd5b8286015b8481101561359f57803583529183019183016139cc565b5f805f805f60a086880312156139f7575f80fd5b853567ffffffffffffffff80821115613a0e575f80fd5b613a1a89838a0161353b565b96506020880135915080821115613a2f575f80fd5b61375489838a0161398b565b600181811c90821680613a4f57607f821691505b602082108103612c8d57634e487b7160e01b5f52602260045260245ffd5b5f60208284031215613a7d575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611d8a57611d8a613a84565b634e487b7160e01b5f52603260045260245ffd5b5f60018201613ad057613ad0613a84565b5060010190565b8981526001600160a01b0389166020820152610120604082018190525f90613b018382018b61334e565b90508281036060840152613b15818a6133be565b90508281036080840152613b2981896133be565b90508660a08401528560c084015282810360e0840152613b4981866132b8565b915050826101008301529a9950505050505050505050565b85815260ff8516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b8981526001600160a01b0389166020820152610120604082018190525f90613bd18382018b61334e565b90508281036060840152613be5818a613390565b90508281036080840152613bf981896133be565b905082810360a0840152613c0d81886133be565b90508560c08401528460e0840152828103610100840152613c2e81856132b8565b9c9b505050505050505050505050565b5f8154613c4a81613a3b565b808552602060018381168015613c675760018114613c8157613cac565b60ff1985168884015283151560051b880183019550613cac565b865f52825f205f5b85811015613ca45781548a8201860152908301908401613c89565b890184019650505b505050505092915050565b60018060a01b038616815284602082015260a060408201525f613cdd60a0830186613c3e565b8281036060840152613cef8186613c3e565b9150508260808301529695505050505050565b5f60208284031215613d12575f80fd5b815167ffffffffffffffff811115613d28575f80fd5b8201601f81018413613d38575f80fd5b8051613d4661355a826135aa565b818152856020838501011115613d5a575f80fd5b613d6b826020830160208601613296565b95945050505050565b5f60208284031215613d84575f80fd5b815180151581146126a1575f80fd5b5f82613dad57634e487b7160e01b5f52601260045260245ffd5b500490565b60018060a01b038616815284602082015260a060408201525f613dd860a08301866132b8565b8281036060840152613cef81866132b8565b828152604060208201525f613e0260408301846132b8565b949350505050565b5f8251613e1b818460208701613296565b9190910192915050565b601f821115613e6a575f81815260208120601f850160051c81016020861015613e4b5750805b601f850160051c820191505b81811015612c2c57828155600101613e57565b505050565b815167ffffffffffffffff811115613e8957613e896134d3565b613e9d81613e978454613a3b565b84613e25565b602080601f831160018114613ed0575f8415613eb95750858301515b5f19600386901b1c1916600185901b178555612c2c565b5f85815260208120601f198616915b82811015613efe57888601518255948401946001909101908401613edf565b5085821015613f1b57878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fe476f7665726e6f72427261766f3a3a72655375626d697450726f706f73616c3aa264697066735822122059009e2d83edf20b76b2e0b28b312a622b68fa0f6f15fae8a457b092acd371e064736f6c63430008140033
0x61016060405234801562000011575f80fd5b506040516200454c3803806200454c833981016040819052620000349162000359565b604080518082018252601481527f515444414f20476f7665726e6f7220427261766f000000000000000000000000602080830191909152825180840190935260018352603160f81b90830152906200008e82600e620002c3565b610120526200009f81600f620002c3565b61014052815160208084019190912060e052815190820120610100524660a0526200012c60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b038316620001a15760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a20696e76616c69642074696d656c6f636b206044820152666164647265737360c81b60648201526084015b60405180910390fd5b6001600160a01b038216620002055760405162461bcd60e51b8152602060048201526024808201527f476f7665726e6f72427261766f3a20696e76616c696420717444414f206164646044820152637265737360e01b606482015260840162000198565b6001600160a01b038116620002755760405162461bcd60e51b815260206004820152602f60248201527f476f7665726e6f72427261766f3a20696e76616c696420676f7665726e616e6360448201526e65436f6e666967206164647265737360881b606482015260840162000198565b600680546001600160a01b039485166001600160a01b0319918216811790925560088054948616948216949094179093555f8054841690911790556007805491909316911617905562000579565b5f602083511015620002e257620002da83620002fb565b9050620002f5565b81620002ef848262000440565b5060ff90505b92915050565b5f80829050601f8151111562000328578260405163305a27a960e01b815260040162000198919062000508565b8051620003358262000555565b179392505050565b80516001600160a01b038116811462000354575f80fd5b919050565b5f805f606084860312156200036c575f80fd5b62000377846200033d565b925062000387602085016200033d565b915062000397604085016200033d565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003c957607f821691505b602082108103620003e857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200043b575f81815260208120601f850160051c81016020861015620004165750805b601f850160051c820191505b81811015620004375782815560010162000422565b5050505b505050565b81516001600160401b038111156200045c576200045c620003a0565b62000474816200046d8454620003b4565b84620003ee565b602080601f831160018114620004aa575f8415620004925750858301515b5f19600386901b1c1916600185901b17855562000437565b5f85815260208120601f198616915b82811015620004da57888601518255948401946001909101908401620004b9565b5085821015620004f857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020808352835180828501525f5b81811015620005355785810183015185820160400152820162000517565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620003e8575f1960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051613f81620005cb5f395f6126e101525f6126af01525f612e2401525f612dfc01525f612d5701525f612d8101525f612dab0152613f815ff3fe6080604052600436106101f1575f3560e01c806384b0196e11610108578063d5bf523c1161009d578063deaaa7cc1161006d578063deaaa7cc14610751578063e23a9a5214610784578063f851a440146107ca578063fc4eee42146107e8578063fe0d94c1146107fd575f80fd5b8063d5bf523c146106df578063da35c664146106fe578063da95691a14610713578063ddf0b00914610732575f80fd5b8063a37ee07d116100d8578063a37ee07d1461065a578063a9ed3d291461066e578063b27bb7581461068d578063d33219b4146106c0575f80fd5b806384b0196e146105ac5780638aee09f5146105d35780638f6ee2aa146105f25780638ff262e31461063b575f80fd5b80635286003e1161018957806367af206e1161015957806367af206e146104fb5780637b3c71d31461051a5780637bdbe4d0146105395780637ecebe001461054d57806384998e4e14610581575f80fd5b80635286003e1461047f578063567813881461049e5780635986ebfc146104bd5780635c60da1b146104dc575f80fd5b806326782247116101c457806326782247146103cc578063328dd982146104035780633e4f49e614610432578063524fe6d31461045e575f80fd5b8063013cf08b146101f557806306fdde03146102ba57806317977c611461030657806317a4c92d1461033f575b5f80fd5b348015610200575f80fd5b5061026761020f36600461327f565b600960208190525f91825260409091208054600182015460028301546007840154600885015495850154600a860154600b870154600c9097015495976001600160a01b03909516969395929493919290919060ff1689565b60408051998a526001600160a01b0390981660208a0152968801959095526060870193909352608086019190915260a085015260c084015260e08301521515610100820152610120015b60405180910390f35b3480156102c5575f80fd5b506102f960405180604001604052806014815260200173515444414f20476f7665726e6f7220427261766f60601b81525081565b6040516102b191906132e3565b348015610311575f80fd5b5061033161032036600461330b565b600b6020525f908152604090205481565b6040519081526020016102b1565b34801561034a575f80fd5b5061039c610359366004613324565b600a60209081525f92835260408084209091529082529020805460018201546002830154600384015460049094015492936001600160a01b039092169290919085565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016102b1565b3480156103d7575f80fd5b506001546103eb906001600160a01b031681565b6040516001600160a01b0390911681526020016102b1565b34801561040e575f80fd5b5061042261041d36600461327f565b610810565b6040516102b19493929190613411565b34801561043d575f80fd5b5061045161044c36600461327f565b610a90565b6040516102b1919061347c565b348015610469575f80fd5b5061047d61047836600461330b565b610c9f565b005b34801561048a575f80fd5b5061047d61049936600461327f565b610d67565b3480156104a9575f80fd5b5061047d6104b83660046134b2565b610d74565b3480156104c8575f80fd5b5061047d6104d7366004613716565b610dd5565b3480156104e7575f80fd5b506002546103eb906001600160a01b031681565b348015610506575f80fd5b506103eb6105153660046137c5565b611255565b348015610525575f80fd5b5061047d6105343660046137e5565b611289565b348015610544575f80fd5b50610331600181565b348015610558575f80fd5b5061033161056736600461330b565b6001600160a01b03165f9081526010602052604090205490565b34801561058c575f80fd5b5061033161059b36600461327f565b600c6020525f908152604090205481565b3480156105b7575f80fd5b506105c06112d9565b6040516102b19796959493929190613865565b3480156105de575f80fd5b506008546103eb906001600160a01b031681565b3480156105fd575f80fd5b5061062b61060c366004613324565b600d60209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016102b1565b348015610646575f80fd5b5061047d6106553660046138d4565b61131b565b348015610665575f80fd5b5061047d61147d565b348015610679575f80fd5b506007546103eb906001600160a01b031681565b348015610698575f80fd5b506103317f57223d336158142a7bf43e6e4526ecded228004ba63e6a2c09f7281e2a2c184681565b3480156106cb575f80fd5b506006546103eb906001600160a01b031681565b3480156106ea575f80fd5b5061047d6106f9366004613938565b6114e1565b348015610709575f80fd5b5061033160045481565b34801561071e575f80fd5b5061033161072d3660046139e3565b6115c6565b34801561073d575f80fd5b5061047d61074c36600461327f565b6119fe565b34801561075c575f80fd5b506103317ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b34801561078f575f80fd5b506107a361079e366004613324565b611d21565b6040805182511515815260208084015160ff169082015291810151908201526060016102b1565b3480156107d5575f80fd5b505f546103eb906001600160a01b031681565b3480156107f3575f80fd5b5061033160035481565b61047d61080b36600461327f565b611d90565b6060806060805f60095f8781526020019081526020015f209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561088d57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161086f575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156108dd57602002820191905f5260205f20905b8154815260200190600101908083116108c9575b5050505050925081805480602002602001604051908101604052809291908181526020015f905b828210156109ac578382905f5260205f2001805461092190613a3b565b80601f016020809104026020016040519081016040528092919081815260200182805461094d90613a3b565b80156109985780601f1061096f57610100808354040283529160200191610998565b820191905f5260205f20905b81548152906001019060200180831161097b57829003601f168201915b505050505081526020019060010190610904565b50505050915080805480602002602001604051908101604052809291908181526020015f905b82821015610a7a578382905f5260205f200180546109ef90613a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90613a3b565b8015610a665780601f10610a3d57610100808354040283529160200191610a66565b820191905f5260205f20905b815481529060010190602001808311610a4957829003601f168201915b5050505050815260200190600101906109d2565b5050505090509450945094509450509193509193565b5f8160045410158015610aa4575060035482115b610b075760405162461bcd60e51b815260206004820152602960248201527f476f7665726e6f72427261766f3a3a73746174653a20696e76616c69642070726044820152681bdc1bdcd85b081a5960ba1b60648201526084015b60405180910390fd5b6007546040805163092f069960e21b815290515f926001600160a01b0316916324bc1a649160048083019260209291908290030181865afa158015610b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b729190613a6d565b5f8481526009602052604090206007810154919250904311610b9757505f9392505050565b80600801544311610bac575060019392505050565b80600a01548160090154111580610bc7575081816009015411155b15610bd6575060029392505050565b80600201545f03610beb575060039392505050565b600c81015460ff1615610c02575060069392505050565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c1a287e26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c769190613a6d565b8160020154610c859190613a98565b4210610c95575060059392505050565b5060049392505050565b6007546001600160a01b03163314610d135760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f72427261766f3a3a757064617465476f7665726e616e6365436044820152706f6e6669673a2061646d696e206f6e6c7960781b6064820152608401610afe565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527f35fda526dd60d8d68240cedb5d167469fe669bb84168b3cd162ee9b594844c589060200160405180910390a150565b610d718133611fc4565b50565b337fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48383610da3848383612369565b6040805193845260ff9092166020840152908201526080606082018190525f9082015260a00160405180910390a25050565b6002610de086610a90565b6006811115610df157610df1613468565b1480610e1657506005610e0386610a90565b6006811115610e1457610e14613468565b145b80610e3957505f610e2686610a90565b6006811115610e3757610e37613468565b145b610e985760405162461bcd60e51b815260206004820152603a60248201525f80516020613f2c83398151915260448201527f2063616e6e6f742072652d7375626d69742070726f706f73616c0000000000006064820152608401610afe565b5f858152600a6020908152604080832033808552908352818420898552600990935292206001810154919290916001600160a01b031614610f445760405162461bcd60e51b815260206004820152604d60248201525f80516020613f2c83398151915260448201527f204f7468657220757365722063616e6e6f742072655375626d69742050726f7060648201526c1bdcd85b081c1c9bdc1bdcd85b609a1b608482015260a401610afe565b8160040154826002015410610fae5760405162461bcd60e51b815260206004820152603b60248201525f80516020613f2c83398151915260448201527f2052656163686564206d61782072657375626d6974206c696d697400000000006064820152608401610afe565b84518651148015610fc0575083518651145b6110355760405162461bcd60e51b815260206004820152604d60248201525f80516020613f2c83398151915260448201527f2070726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e206160648201526c0e4d2e8f240dad2e6dac2e8c6d609b1b608482015260a401610afe565b85515f036110905760405162461bcd60e51b815260206004820152603560248201525f80516020613f2c833981519152604482015274206d7573742070726f7669646520616374696f6e7360581b6064820152608401610afe565b6001865111156110e95760405162461bcd60e51b815260206004820152603160248201525f80516020613f2c83398151915260448201527020746f6f206d616e7920616374696f6e7360781b6064820152608401610afe565b85515f19905f9061110390600385019060208b01906130c0565b50865161111990600585019060208a0190613123565b50855161112f9060068501906020890190613173565b5060078301829055600883018190555f60098401819055600a8401819055600b8401556002840154611162906001613a98565b60028501555f898152600c602052604081208190555b5f8a8152600560205260409020548110156111fe575f8a8152600d60209081526040808320600590925282208054839190859081106111b9576111b9613aab565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055806111f681613abf565b915050611178565b507ffbe53550e84866bbb7856c5d4070b74d0c7b37eb43a066feb1fbb98e1b082b4489338a8a8a87878c8c6002015460405161124299989796959493929190613ad7565b60405180910390a1505050505050505050565b6005602052815f5260405f20818154811061126e575f80fd5b5f918252602090912001546001600160a01b03169150829050565b337fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda485856112b8848383612369565b86866040516112cb959493929190613b61565b60405180910390a250505050565b5f6060805f805f60606112ea6126a8565b6112f26126da565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f6113c1836113bb7ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d788888861136d8a6001600160a01b03165f90815260106020526040902080546001810190915590565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c0015b60405160208183030381529060405280519060200120612707565b84612733565b9050806114105760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f72427261766f3a3a20496e76616c696420566f7465720000006044820152606401610afe565b826001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48686611448878a8a612369565b6040805193845260ff9092166020840152908201526080606082018190525f9082015260a00160405180910390a25050505050565b60065f9054906101000a90046001600160a01b03166001600160a01b0316630e18b6816040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156114c9575f80fd5b505af11580156114db573d5f803e3d5ffd5b50505050565b5f61155f836113bb7f57223d336158142a7bf43e6e4526ecded228004ba63e6a2c09f7281e2a2c18468787611532896001600160a01b03165f90815260106020526040902080546001810190915590565b6040805160208101959095528401929092526001600160a01b03166060830152608082015260a0016113a0565b9050806115bc5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e6f72427261766f3a3a20496e76616c696420536d61727465737460448201526408135a5b9960da1b6064820152608401610afe565b6114db8484611fc4565b5f845186511480156115d9575083518651145b80156115e6575082518651145b6116665760405162461bcd60e51b8152602060048201526044602482018190527f476f7665726e6f72427261766f3a3a70726f706f73653a2070726f706f73616c908201527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6064820152630c2e8c6d60e31b608482015260a401610afe565b85515f036116cb5760405162461bcd60e51b815260206004820152602c60248201527f476f7665726e6f72427261766f3a3a70726f706f73653a206d7573742070726f60448201526b7669646520616374696f6e7360a01b6064820152608401610afe565b60018651111561172e5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a3a70726f706f73653a20746f6f206d616e7960448201526720616374696f6e7360c01b6064820152608401610afe565b335f908152600b602052604090205480156118aa575f61174d82610a90565b9050600181600681111561176357611763613468565b036117fc5760405162461bcd60e51b815260206004820152605860248201527f476f7665726e6f72427261766f3a3a70726f706f73653a206f6e65206c69766560448201527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60648201527f20616c7265616479206163746976652070726f706f73616c0000000000000000608482015260a401610afe565b5f81600681111561180f5761180f613468565b036118a85760405162461bcd60e51b815260206004820152605960248201527f476f7665726e6f72427261766f3a3a70726f706f73653a206f6e65206c69766560448201527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60648201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000608482015260a401610afe565b505b600480545f19915f9190826118be83613abf565b90915550506004545f81815260096020908152604082209283556001830180546001600160a01b0319163317905560028301919091558a51611908916003840191908d01906130c0565b50885161191e90600483019060208c01906131c3565b50875161193490600583019060208b0190613123565b50865161194a90600683019060208a0190613173565b5060078101839055600881018290555f60098201819055600a8201819055600b808301829055600c8301805460ff19169055825460018401546001600160a01b031683526020919091526040909120556004546119a6906127a3565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0815f0154338c8c8c8c89898e6040516119e899989796959493929190613ba7565b60405180910390a1549998505050505050505050565b6003611a0982610a90565b6006811115611a1a57611a1a613468565b14611a9b5760405162461bcd60e51b8152602060048201526044602482018190527f476f7665726e6f72427261766f3a3a71756575653a2070726f706f73616c2063908201527f616e206f6e6c79206265207175657565642069662069742069732073756363656064820152631959195960e21b608482015260a401610afe565b5f8181526009602090815260408083206006548251630d48571f60e31b815292519194936001600160a01b0390911692636a42b8f892600480830193928290030181865afa158015611aef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b139190613a6d565b611b1d9042613a98565b90505f5b6003830154811015611cdb57611cc9836003018281548110611b4557611b45613aab565b5f918252602090912001546004850180546001600160a01b039092169184908110611b7257611b72613aab565b905f5260205f200154856005018481548110611b9057611b90613aab565b905f5260205f20018054611ba390613a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054611bcf90613a3b565b8015611c1a5780601f10611bf157610100808354040283529160200191611c1a565b820191905f5260205f20905b815481529060010190602001808311611bfd57829003601f168201915b5050505050866006018581548110611c3457611c34613aab565b905f5260205f20018054611c4790613a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7390613a3b565b8015611cbe5780601f10611c9557610100808354040283529160200191611cbe565b820191905f5260205f20905b815481529060010190602001808311611ca157829003601f168201915b505050505086612a82565b80611cd381613abf565b915050611b21565b506002820181905560408051848152602081018390527f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892910160405180910390a1505050565b60408051606080820183525f8083526020808401829052928401819052858152600983528381206001600160a01b0386168252600d01835283902083519182018452805460ff808216151584526101009091041692820192909252600190910154918101919091525b92915050565b6004611d9b82610a90565b6006811115611dac57611dac613468565b14611e2d5760405162461bcd60e51b815260206004820152604560248201527f476f7665726e6f72427261766f3a3a657865637574653a2070726f706f73616c60448201527f2063616e206f6e6c7920626520657865637574656420696620697420697320716064820152641d595d595960da1b608482015260a401610afe565b5f818152600960205260408120600c8101805460ff19166001179055905b6003820154811015611f8c576006546004830180546001600160a01b0390921691630825f38f919084908110611e8357611e83613aab565b905f5260205f200154846003018481548110611ea157611ea1613aab565b5f918252602090912001546004860180546001600160a01b039092169186908110611ece57611ece613aab565b905f5260205f200154866005018681548110611eec57611eec613aab565b905f5260205f2001876006018781548110611f0957611f09613aab565b905f5260205f200188600201546040518763ffffffff1660e01b8152600401611f36959493929190613cb7565b5f6040518083038185885af1158015611f51573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052611f799190810190613d02565b5080611f8481613abf565b915050611e4b565b506040518281527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a15050565b60075460405163130c9d0360e01b81526001600160a01b0383811660048301529091169063130c9d0390602401602060405180830381865afa15801561200c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120309190613d74565b6120925760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72427261766f3a204f6e6c7920536d617274657374204d696e60448201526c642063616e20617070726f766560981b6064820152608401610afe565b5f828152600d602090815260408083206001600160a01b038516845290915290205460ff1615156001036121215760405162461bcd60e51b815260206004820152603060248201527f476f7665726e6f72427261766f3a20416c726561647920417070726f7665642060448201526f109e4814db585c9d195cdd08135a5b9960821b6064820152608401610afe565b5f8281526009602052604090206008810154156121915760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20416c72656164792050726f706f73616c20604482015267105c1c1c9bdd995960c21b6064820152608401610afe565b5f838152600c60205260409020546121aa906001613a98565b5f848152600c6020908152604080832093909355600d81528282206001600160a01b03808716808552918352848420805460ff19166001908117909155888552600584528585208054918201815585528385200180546001600160a01b03191690921790915560075484516302a251a360e01b8152945193949116926302a251a3926004808401939192918290030181865afa15801561224c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122709190613a6d565b905060075f9054906101000a90046001600160a01b03166001600160a01b031663a09af23c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e69190613a6d565b5f858152600c60205260409020541080159061230457506008820154155b1561232257436007830181905561231c908290613a98565b60088301555b604080518581526001600160a01b03851660208201527f049c28adfe50bcf1b76fd95273b6a24566b9f377e52fddc653c3355248dad07a910160405180910390a150505050565b5f600161237584610a90565b600681111561238657612386613468565b146123ed5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a604482015270081d9bdd1a5b99c81a5cc818db1bdcd959607a1b6064820152608401610afe565b60028260ff16111561245c5760405162461bcd60e51b815260206004820152603260248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a60448201527120696e76616c696420766f7465207479706560701b6064820152608401610afe565b5f83815260096020526040902060018101546001600160a01b03908116908616036124e75760405162461bcd60e51b815260206004820152603560248201527f476f7665726e6f72427261766f3a3a63617374566f74653a2050726f706f73616044820152746c2063726561746f722063616e6e6f7420766f746560581b6064820152608401610afe565b6001600160a01b0385165f908152600d820160205260409020805460ff161561256f5760405162461bcd60e51b815260206004820152603460248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a604482015273081d9bdd195c88185b1c9958591e481d9bdd195960621b6064820152608401610afe565b6008546007830154604051630748d63560e31b81525f926001600160a01b031691633a46b1a8916125b8918b916004016001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156125d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f79190613a6d565b905061261361260e670de0b6b3a764000083613d93565b612c34565b90508460ff165f03612639578083600a015461262f9190613a98565b600a84015561267f565b8460ff1660010361265e578083600901546126549190613a98565b600984015561267f565b8460ff1660020361267f578083600b01546126799190613a98565b600b8401555b8154600161ffff1990911661010060ff88160217811783559091018190559150505b9392505050565b60606126d57f0000000000000000000000000000000000000000000000000000000000000000600e612ca2565b905090565b60606126d57f0000000000000000000000000000000000000000000000000000000000000000600f612ca2565b5f611d8a612713612d4b565b8360405161190160f01b8152600281019290925260228201526042902090565b5f836001600160a01b03163b5f03612791575f806127518585612e74565b5090925090505f81600381111561276a5761276a613468565b1480156127885750856001600160a01b0316826001600160a01b0316145b925050506126a1565b61279c848484612ebd565b90506126a1565b6008546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a08231906024016020604051808303815f875af11580156127ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280e9190613a6d565b60075460405163130c9d0360e01b81523360048201529192505f916001600160a01b039091169063130c9d0390602401602060405180830381865afa158015612859573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061287d9190613d74565b15155f036129ca5760075f9054906101000a90046001600160a01b03166001600160a01b031663db002b966040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f99190613a6d565b9050818111156129665760405162461bcd60e51b815260206004820152603260248201527f476f7665726e6f72427261766f3a3a70726f706f73653a206e6f7420656e6f7560448201527133b4103a37b5b2b739903337b910313ab93760711b6064820152608401610afe565b6008546040516368417ecb60e01b8152336004820152602481018390526001600160a01b03909116906368417ecb906044015f604051808303815f87803b1580156129af575f80fd5b505af11580156129c1573d5f803e3d5ffd5b505050506129cd565b505f5b60075460408051632df06f4960e21b815290515f926001600160a01b03169163b7c1bd249160048083019260209291908290030181865afa158015612a14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a389190613a6d565b5f858152600a60209081526040808320338085529252909120958655600180870180546001600160a01b031916909217909155600286015560048501555060039092019190915550565b6006546040516001600160a01b039091169063f2b0653790612ab09088908890889088908890602001613db2565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612ae491815260200190565b602060405180830381865afa158015612aff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b239190613d74565b15612bb45760405162461bcd60e51b815260206004820152605560248201527f476f7665726e6f72427261766f3a3a71756575654f72526576657274496e746560448201527f726e616c3a206964656e746963616c2070726f706f73616c20616374696f6e20606482015274616c7265616479207175657565642061742065746160581b608482015260a401610afe565b600654604051633a66f90160e01b81526001600160a01b0390911690633a66f90190612bec9088908890889088908890600401613db2565b6020604051808303815f875af1158015612c08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c2c9190613a6d565b505050505050565b5f6003821115612c935750805f612c4c600283613d93565b612c57906001613a98565b90505b81811015612c8d57905080600281612c728186613d93565b612c7c9190613a98565b612c869190613d93565b9050612c5a565b50919050565b8115612c9d575060015b919050565b606060ff8314612cbc57612cb583612f94565b9050611d8a565b818054612cc890613a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054612cf490613a3b565b8015612d3f5780601f10612d1657610100808354040283529160200191612d3f565b820191905f5260205f20905b815481529060010190602001808311612d2257829003601f168201915b50505050509050611d8a565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612da357507f000000000000000000000000000000000000000000000000000000000000000046145b15612dcd57507f000000000000000000000000000000000000000000000000000000000000000090565b6126d5604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f805f8351604103612eab576020840151604085015160608601515f1a612e9d88828585612fd1565b955095509550505050612eb6565b505081515f91506002905b9250925092565b5f805f856001600160a01b03168585604051602401612edd929190613dea565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b17905251612f129190613e0a565b5f60405180830381855afa9150503d805f8114612f4a576040519150601f19603f3d011682016040523d82523d5f602084013e612f4f565b606091505b5091509150818015612f6357506020815110155b8015612f8a57508051630b135d3f60e11b90612f889083016020908101908401613a6d565b145b9695505050505050565b60605f612fa083613099565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561300a57505f9150600390508261308f565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561305b573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661308657505f92506001915082905061308f565b92505f91508190505b9450945094915050565b5f60ff8216601f811115611d8a57604051632cd44ac360e21b815260040160405180910390fd5b828054828255905f5260205f20908101928215613113579160200282015b8281111561311357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906130de565b5061311f9291506131fc565b5090565b828054828255905f5260205f20908101928215613167579160200282015b8281111561316757825182906131579082613e6f565b5091602001919060010190613141565b5061311f929150613210565b828054828255905f5260205f209081019282156131b7579160200282015b828111156131b757825182906131a79082613e6f565b5091602001919060010190613191565b5061311f92915061322c565b828054828255905f5260205f20908101928215613113579160200282015b828111156131135782518255916020019190600101906131e1565b5b8082111561311f575f81556001016131fd565b8082111561311f575f6132238282613248565b50600101613210565b8082111561311f575f61323f8282613248565b5060010161322c565b50805461325490613a3b565b5f825580601f10613263575050565b601f0160209004905f5260205f2090810190610d7191906131fc565b5f6020828403121561328f575f80fd5b5035919050565b5f5b838110156132b0578181015183820152602001613298565b50505f910152565b5f81518084526132cf816020860160208601613296565b601f01601f19169290920160200192915050565b602081525f6126a160208301846132b8565b80356001600160a01b0381168114612c9d575f80fd5b5f6020828403121561331b575f80fd5b6126a1826132f5565b5f8060408385031215613335575f80fd5b82359150613345602084016132f5565b90509250929050565b5f8151808452602080850194508084015f5b838110156133855781516001600160a01b031687529582019590820190600101613360565b509495945050505050565b5f8151808452602080850194508084015f5b83811015613385578151875295820195908201906001016133a2565b5f81518084526020808501808196508360051b810191508286015f5b858110156134045782840389526133f28483516132b8565b988501989350908401906001016133da565b5091979650505050505050565b608081525f613423608083018761334e565b82810360208401526134358187613390565b9050828103604084015261344981866133be565b9050828103606084015261345d81856133be565b979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016007831061349c57634e487b7160e01b5f52602160045260245ffd5b91905290565b803560ff81168114612c9d575f80fd5b5f80604083850312156134c3575f80fd5b82359150613345602084016134a2565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613510576135106134d3565b604052919050565b5f67ffffffffffffffff821115613531576135316134d3565b5060051b60200190565b5f82601f83011261354a575f80fd5b8135602061355f61355a83613518565b6134e7565b82815260059290921b8401810191818101908684111561357d575f80fd5b8286015b8481101561359f57613592816132f5565b8352918301918301613581565b509695505050505050565b5f67ffffffffffffffff8211156135c3576135c36134d3565b50601f01601f191660200190565b5f82601f8301126135e0575f80fd5b81356135ee61355a826135aa565b818152846020838601011115613602575f80fd5b816020850160208301375f918101602001919091529392505050565b5f82601f83011261362d575f80fd5b8135602061363d61355a83613518565b82815260059290921b8401810191818101908684111561365b575f80fd5b8286015b8481101561359f57803567ffffffffffffffff81111561367e575f8081fd5b61368c8986838b01016135d1565b84525091830191830161365f565b5f82601f8301126136a9575f80fd5b813560206136b961355a83613518565b82815260059290921b840181019181810190868411156136d7575f80fd5b8286015b8481101561359f57803567ffffffffffffffff8111156136fa575f8081fd5b6137088986838b01016135d1565b8452509183019183016136db565b5f805f805f60a0868803121561372a575f80fd5b85359450602086013567ffffffffffffffff80821115613748575f80fd5b61375489838a0161353b565b95506040880135915080821115613769575f80fd5b61377589838a0161361e565b9450606088013591508082111561378a575f80fd5b61379689838a0161369a565b935060808801359150808211156137ab575f80fd5b506137b8888289016135d1565b9150509295509295909350565b5f80604083850312156137d6575f80fd5b50508035926020909101359150565b5f805f80606085870312156137f8575f80fd5b84359350613808602086016134a2565b9250604085013567ffffffffffffffff80821115613824575f80fd5b818701915087601f830112613837575f80fd5b813581811115613845575f80fd5b886020828501011115613856575f80fd5b95989497505060200194505050565b60ff60f81b8816815260e060208201525f61388360e08301896132b8565b828103604084015261389581896132b8565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506138c68185613390565b9a9950505050505050505050565b5f805f80608085870312156138e7575f80fd5b843593506138f7602086016134a2565b9250613905604086016132f5565b9150606085013567ffffffffffffffff811115613920575f80fd5b61392c878288016135d1565b91505092959194509250565b5f805f6060848603121561394a575f80fd5b8335925061395a602085016132f5565b9150604084013567ffffffffffffffff811115613975575f80fd5b613981868287016135d1565b9150509250925092565b5f82601f83011261399a575f80fd5b813560206139aa61355a83613518565b82815260059290921b840181019181810190868411156139c8575f80fd5b8286015b8481101561359f57803583529183019183016139cc565b5f805f805f60a086880312156139f7575f80fd5b853567ffffffffffffffff80821115613a0e575f80fd5b613a1a89838a0161353b565b96506020880135915080821115613a2f575f80fd5b61375489838a0161398b565b600181811c90821680613a4f57607f821691505b602082108103612c8d57634e487b7160e01b5f52602260045260245ffd5b5f60208284031215613a7d575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611d8a57611d8a613a84565b634e487b7160e01b5f52603260045260245ffd5b5f60018201613ad057613ad0613a84565b5060010190565b8981526001600160a01b0389166020820152610120604082018190525f90613b018382018b61334e565b90508281036060840152613b15818a6133be565b90508281036080840152613b2981896133be565b90508660a08401528560c084015282810360e0840152613b4981866132b8565b915050826101008301529a9950505050505050505050565b85815260ff8516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b8981526001600160a01b0389166020820152610120604082018190525f90613bd18382018b61334e565b90508281036060840152613be5818a613390565b90508281036080840152613bf981896133be565b905082810360a0840152613c0d81886133be565b90508560c08401528460e0840152828103610100840152613c2e81856132b8565b9c9b505050505050505050505050565b5f8154613c4a81613a3b565b808552602060018381168015613c675760018114613c8157613cac565b60ff1985168884015283151560051b880183019550613cac565b865f52825f205f5b85811015613ca45781548a8201860152908301908401613c89565b890184019650505b505050505092915050565b60018060a01b038616815284602082015260a060408201525f613cdd60a0830186613c3e565b8281036060840152613cef8186613c3e565b9150508260808301529695505050505050565b5f60208284031215613d12575f80fd5b815167ffffffffffffffff811115613d28575f80fd5b8201601f81018413613d38575f80fd5b8051613d4661355a826135aa565b818152856020838501011115613d5a575f80fd5b613d6b826020830160208601613296565b95945050505050565b5f60208284031215613d84575f80fd5b815180151581146126a1575f80fd5b5f82613dad57634e487b7160e01b5f52601260045260245ffd5b500490565b60018060a01b038616815284602082015260a060408201525f613dd860a08301866132b8565b8281036060840152613cef81866132b8565b828152604060208201525f613e0260408301846132b8565b949350505050565b5f8251613e1b818460208701613296565b9190910192915050565b601f821115613e6a575f81815260208120601f850160051c81016020861015613e4b5750805b601f850160051c820191505b81811015612c2c57828155600101613e57565b505050565b815167ffffffffffffffff811115613e8957613e896134d3565b613e9d81613e978454613a3b565b84613e25565b602080601f831160018114613ed0575f8415613eb95750858301515b5f19600386901b1c1916600185901b178555612c2c565b5f85815260208120601f198616915b82811015613efe57888601518255948401946001909101908401613edf565b5085821015613f1b57878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fe476f7665726e6f72427261766f3a3a72655375626d697450726f706f73616c3aa264697066735822122059009e2d83edf20b76b2e0b28b312a622b68fa0f6f15fae8a457b092acd371e064736f6c63430008140033000000000000000000000000e0e04e4ca274d57dd620cf3133236b15af65578f00000000000000000000000026869045311fc5e5353eadcfa654cd47ddc203560000000000000000000000007e19b2cd8c0f62e9fcdec64313c74c4d9e29c57e