0x60e060405267016345785d8a00005f5573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26080523360a05273a07f07c1cf041a0d552351ede3ca9e63e900503260c052600180546001600160a01b0319166e04444c5dc75cb358380d2e3de08a9017905534801561006f575f5ffd5b5060805160a05160c0516147fd6101465f395f50505f611c1701525f81816102f901528181610326015281816103ae0152818161055901528181610622015281816107d50152818161084a01528181610a4a01528181610a7701528181610afd01528181610c8701528181610d1401528181610ea801528181610f13015281816110e3015281816114460152818161151001528181611616015281816117f30152818161199101528181611abc01528181611b6501528181611dd901528181611e1c01528181611ea4015261208601526147fd5ff3fe60806040526004361061005d575f3560e01c80639b2cb5d8116100425780639b2cb5d814610103578063b61d27f614610125578063d9d5865d1461015457610064565b80638b76aea4146100ad57806391dd7346146100ce57610064565b3661006457005b5f3660608261007683600481846134f6565b810190610083919061351d565b905030810361009957610094610173565b6100a1565b6100a16108b2565b50915050805190602001f35b3480156100b8575f5ffd5b506100cc6100c736600461378b565b61106e565b005b3480156100d9575f5ffd5b506100ed6100e83660046138ba565b611bce565b6040516100fa9190613927565b60405180910390f35b34801561010e575f5ffd5b506101175f5481565b6040519081526020016100fa565b348015610130575f5ffd5b5061014461013f366004613940565b611c14565b60405190151581526020016100fa565b34801561015f575f5ffd5b5061011761016e366004613998565b611cf3565b60405160046064350180356020810182843760208184010160405250505f5f828060200190518101906101a69190613a74565b9150915081600f03610416575f818060200190518101906101c79190613b24565b805160208201516040808401516060850151608086015160a087015161012088015161010089015195516370a0823160e01b81523060048201529899509697959693959294919390929091905f906001600160a01b038716906370a0823190602401602060405180830381865afa158015610244573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102689190613c76565b905061028788878784308960405180602001604052805f815250611daa565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa1580156102cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ef9190613c76565b90505f61031e82887f000000000000000000000000000000000000000000000000000000000000000087611cf3565b905061036f897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031610833060405180602001604052805f815250612102565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038c81166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044015f604051808303815f87803b1580156103ef575f5ffd5b505af1158015610401573d5f5f3e3d5ffd5b50505050505050505050505050505050505050565b81601003610688575f818060200190518101906104339190613b24565b805160208201516040808401516060850151608086015160a087015161012088015194516370a0823160e01b815230600482015297985095969495929491939092915f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156104a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ca9190613c76565b90506104e987868684308860405180602001604052805f815250611daa565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa15801561052d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105519190613c76565b90506105e3877f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b03161083306103e78a6040516020016105b191906001600160a01b0391909116815260200190565b60408051601f19818403018152908290526105cf9291602001613c8d565b60405160208183030381529060405261218c565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044015f604051808303815f87803b158015610663575f5ffd5b505af1158015610675573d5f5f3e3d5ffd5b5050505050505050505050505050505050565b816011036108ad575f818060200190518101906106a59190613b24565b805160208201516040808401516060850151608086015160a087015160c088015161012089015195516370a0823160e01b81523060048201529899509697959693959294919390929091905f906001600160a01b038716906370a0823190602401602060405180830381865afa158015610721573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107459190613c76565b905061076488878784308960405180602001604052805f815250611daa565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa1580156107a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cc9190613c76565b905061080b88877f000000000000000000000000000000000000000000000000000000000000000084308960405180602001604052805f815250611daa565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044015f604051808303815f87803b15801561088b575f5ffd5b505af115801561089d573d5f5f3e3d5ffd5b5050505050505050505050505050505b505050565b6040515f8080806004604435018035602081018288378601602001604052505060043590506024355f8212156108f5576108eb82613cd6565b9350809250610904565b6108fe81613cd6565b93508192505b50505f5f8480602001905181019061091c9190613a74565b9150915081601303610b62575f5f5f5f5f5f868060200190518101906109429190613d0c565b6040516370a0823160e01b8152306004820152959b509399509197509550935091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610995573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b99190613c76565b90506109d887868684308760405180602001604052805f815250611daa565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610a1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a409190613c76565b90505f610a6f82877f000000000000000000000000000000000000000000000000000000000000000088611cf3565b9050610ac0887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031610833060405180602001604052805f815250612102565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018d90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044015f604051808303815f87803b158015610b3e575f5ffd5b505af1158015610b50573d5f5f3e3d5ffd5b50505050505050505050505050611067565b81601503610d7f575f5f5f5f5f85806020019051810190610b839190613dbc565b6040516370a0823160e01b8152306004820152949950929750909550935091505f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610bd4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf89190613c76565b9050610c1786858584308760405180602001604052805f815250611daa565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610c5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7f9190613c76565b9050610cdf867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161083306103e7896040516020016105b191906001600160a01b0391909116815260200190565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018b90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044015f604051808303815f87803b158015610d5d575f5ffd5b505af1158015610d6f573d5f5f3e3d5ffd5b5050505050505050505050611067565b81601603610f7f575f5f5f5f5f5f86806020019051810190610da19190613e43565b6040516370a0823160e01b8152306004820152959b509399509197509550935091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610df4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e189190613c76565b9050610e3787868684308860405180602001604052805f815250611daa565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9f9190613c76565b9050610ede87867f000000000000000000000000000000000000000000000000000000000000000084308860405180602001604052805f815250611daa565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018c90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044015f604051808303815f87803b158015610f5c575f5ffd5b505af1158015610f6e573d5f5f3e3d5ffd5b505050505050505050505050611067565b816103e70361101a575f81806020019051810190610f9d9190613ebe565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690529091506001600160a01b0382169063a9059cbb906044015f604051808303815f87803b158015610ffe575f5ffd5b505af1158015611010573d5f5f3e3d5ffd5b5050505050611067565b60405162461bcd60e51b815260206004820152600f60248201527f756e6b6e6f776e207061747465726e000000000000000000000000000000000060448201526064015b60405180910390fd5b5050505050565b835f8151811061108057611080613ed9565b602002602001015160021480156110b15750836001815181106110a5576110a5613ed9565b60200260200101516007145b80156110d75750836002815181106110cb576110cb613ed9565b60200260200101516002145b156113d1575f61113c887f00000000000000000000000000000000000000000000000000000000000000008960018151811061111557611115613ed9565b6020026020010151855f8151811061112f5761112f613ed9565b6020026020010151611cf3565b90505f600f604051806101400160405280895f8151811061115f5761115f613ed9565b60200260200101516001600160a01b031681526020018960018151811061118857611188613ed9565b60200260200101516001600160a01b03168152602001896002815181106111b1576111b1613ed9565b60200260200101516001600160a01b031681526020018a6001815181106111da576111da613ed9565b60200260200101516001600160a01b031681526020018a60028151811061120357611203613ed9565b60200260200101516001600160a01b031681526020018787600181811061122c5761122c613ed9565b905060200281019061123e9190613f06565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020018787600281811061128a5761128a613ed9565b905060200281019061129c9190613f06565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252508551602090910190869060019081106112ed576112ed613ed9565b602002602001015181526020018560028151811061130d5761130d613ed9565b602002602001015181526020018b81525060405160200161132e9190613fa1565b60408051601f198184030181529082905261134c92916020016140a6565b60405160208183030381529060405290506113ca875f8151811061137257611372613ed9565b60200260200101518960018151811061138d5761138d613ed9565b60200260200101516001600160a01b03168a5f815181106113b0576113b0613ed9565b60200260200101516001600160a01b031610843085612102565b5050611aa5565b835f815181106113e3576113e3613ed9565b6020026020010151600214801561141457508360018151811061140857611408613ed9565b60200260200101516007145b801561143a57508360028151811061142e5761142e613ed9565b60200260200101516003145b1561149b575f611478887f00000000000000000000000000000000000000000000000000000000000000008960018151811061111557611115613ed9565b90505f6010604051806101400160405280895f8151811061115f5761115f613ed9565b835f815181106114ad576114ad613ed9565b602002602001015160021480156114de5750836001815181106114d2576114d2613ed9565b60200260200101516007145b80156115045750836002815181106114f8576114f8613ed9565b60200260200101516007145b15611565575f611542887f00000000000000000000000000000000000000000000000000000000000000008960018151811061111557611115613ed9565b90505f6011604051806101400160405280895f8151811061115f5761115f613ed9565b835f8151811061157757611577613ed9565b602002602001015160031480156115a857508360018151811061159c5761159c613ed9565b60200260200101516007145b80156115ce5750836002815181106115c2576115c2613ed9565b60200260200101516002145b156117425761173d855f815181106115e8576115e8613ed9565b60200260200101518760018151811061160357611603613ed9565b60200260200101516001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031610898860018151811061165357611653613ed9565b602002602001015160138a60018151811061167057611670613ed9565b60200260200101518b60028151811061168b5761168b613ed9565b60200260200101518d6001815181106116a6576116a6613ed9565b60200260200101518e6002815181106116c1576116c1613ed9565b60200260200101518a6002815181106116dc576116dc613ed9565b60200260200101518d8d60018181106116f7576116f7613ed9565b90506020028101906117099190613f06565b60405160200161171f97969594939291906140ea565b60408051601f19818403018152908290526105cf92916020016140a6565b611aa5565b835f8151811061175457611754613ed9565b6020026020010151600314801561178557508360018151811061177957611779613ed9565b60200260200101516007145b80156117ab57508360028151811061179f5761179f613ed9565b60200260200101516003145b156118e05761173d855f815181106117c5576117c5613ed9565b6020026020010151876001815181106117e0576117e0613ed9565b60200260200101516001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031610898860018151811061183057611830613ed9565b602002602001015160158a60018151811061184d5761184d613ed9565b60200260200101518b60028151811061186857611868613ed9565b60200260200101518d60018151811061188357611883613ed9565b60200260200101518e60028151811061189e5761189e613ed9565b60200260200101518c8c60018181106118b9576118b9613ed9565b90506020028101906118cb9190613f06565b60405160200161171f96959493929190614185565b835f815181106118f2576118f2613ed9565b6020026020010151600314801561192357508360018151811061191757611917613ed9565b60200260200101516007145b801561194957508360028151811061193d5761193d613ed9565b60200260200101516007145b15611aa557611aa5855f8151811061196357611963613ed9565b60200260200101518760018151811061197e5761197e613ed9565b60200260200101516001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161089886001815181106119ce576119ce613ed9565b602002602001015160168a6001815181106119eb576119eb613ed9565b60200260200101518b600281518110611a0657611a06613ed9565b60200260200101518d600181518110611a2157611a21613ed9565b60200260200101518e600281518110611a3c57611a3c613ed9565b60200260200101518c8c6001818110611a5757611a57613ed9565b9050602002810190611a699190613f06565b8e8e6002818110611a7c57611a7c613ed9565b9050602002810190611a8e9190613f06565b60405160200161171f9897969594939291906141d4565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611b09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2d9190613c76565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044015f604051808303815f87803b158015611bae575f5ffd5b505af1158015611bc0573d5f5f3e3d5ffd5b505050505050505050505050565b60605f80611bde84860186614283565b509150915081600103611bfa57611bf481612235565b50611c0c565b815f03611c0c57611c0a81612235565b505b505092915050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611c8d5760405162461bcd60e51b815260206004820152600860248201527f6e6f746f776e6572000000000000000000000000000000000000000000000000604482015260640161105e565b846001600160a01b0316848484604051611ca89291906142f0565b5f6040518083038185875af1925050503d805f8114611ce2576040519150601f19603f3d011682016040523d82523d5f602084013e611ce7565b606091505b50909695505050505050565b5f826001600160a01b0316846001600160a01b03161015611d6e57611d6785835f81518110611d2457611d24613ed9565b602002602001015184600181518110611d3f57611d3f613ed9565b602002602001015185600281518110611d5a57611d5a613ed9565b6020026020010151612af4565b9050611da2565b611d9f8583600181518110611d8557611d85613ed9565b6020026020010151845f81518110611d3f57611d3f613ed9565b90505b949350505050565b5f82806020019051810190611dbf9190614322565b80519091505f908190611dd29082612c3e565b15611e5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614611e165788611e18565b5f5b98507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614611e595787611e5b565b5f5b97505b6001600160a01b03808916908a169081109250611f0b576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015611eed575f5ffd5b505af1158015611eff573d5f5f3e3d5ffd5b50505050869050611f16565b611f16898b89612c54565b5f6040518061014001604052808c6001600160a01b03168152602001306001600160a01b03168152602001855f01516001600160a01b0316815260200185602001516001600160a01b03168152602001856040015162ffffff168152602001856060015160020b815260200185608001516001600160a01b031681526020018415158152602001611fa68a612d69565b611faf90613cd6565b815260408051602081810183525f82529283015251611fcf9291016143b6565b60408051601f19818403018152908290526001549092506001600160a01b0316906348c8949190612008905f9085908a90602001614487565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016120339190613927565b5f604051808303815f875af115801561204e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261207591908101906144be565b506001600160a01b0389166120f5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b1580156120dd575f5ffd5b505af11580156120ef573d5f5f3e3d5ffd5b50505050505b5050505050505050505050565b5f5f8561211057845f612113565b5f855b6040517f022c0d9f00000000000000000000000000000000000000000000000000000000815291935091506001600160a01b0388169063022c0d9f906121639085908590899089906004016144f0565b5f604051808303815f87803b15801561217a575f5ffd5b505af11580156120f5573d5f5f3e3d5ffd5b846001600160a01b031663128acb0883866121a687612d69565b886121c55773fffd8963efd1fc6a506488495d951d5263988d256121cc565b6401000276a45b866040518663ffffffff1660e01b81526004016121ed95949392919061451d565b60408051808303815f875af1158015612208573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222c919061455b565b50505050505050565b60605f8280602001905181019061224c919061458c565b80519091506001600160a01b03163314612264575f5ffd5b5f60405180606001604052808360e001511515815260200183610100015181526020018360e001516122b4576122af600173fffd8963efd1fc6a506488495d951d5263988d2661468e565b6122c4565b6122c46401000276a360016146ad565b6001600160a01b031681525090505f6040518060a0016040528084604001516001600160a01b0316815260200184606001516001600160a01b03168152602001846080015162ffffff1681526020018460a0015160020b81526020018460c001516001600160a01b031681525090505f835f01516001600160a01b031663f3cd914c83858761012001516040518463ffffffff1660e01b815260040161236c939291906146cc565b6020604051808303815f875af1158015612388573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123ac9190613c76565b90505f6123bd856040015130612ddd565b90505f6123ce866060015130612ddd565b855190915015612718575f856020015112156125805784602001518212156124845760405162461bcd60e51b815260206004820152604760248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f6563696669656400000000000000000000000000000000000000000000000000608482015260a40161105e565b8161248f8460801d90565b600f0b146125055760405162461bcd60e51b815260206004820152602b60248201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060448201527f64656c7461416674657230000000000000000000000000000000000000000000606482015260840161105e565b5f81121561257b5760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f203000000000000000000000000000000000000000606482015260840161105e565b612a53565b5f8213156125f65760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f207a65726f00000000000000000000000000000000000000606482015260840161105e565b8061260184600f0b90565b600f0b146126775760405162461bcd60e51b815260206004820152602b60248201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060448201527f64656c7461416674657231000000000000000000000000000000000000000000606482015260840161105e565b846020015181131561257b5760405162461bcd60e51b8152602060048201526044602482018190527f64656c7461416674657231206973206e6f74206c657373207468616e206f7220908201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f6669656400000000000000000000000000000000000000000000000000000000608482015260a40161105e565b5f856020015112156128bb5784602001518112156127c45760405162461bcd60e51b815260206004820152604760248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f6563696669656400000000000000000000000000000000000000000000000000608482015260a40161105e565b806127cf84600f0b90565b600f0b146128455760405162461bcd60e51b815260206004820152602b60248201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060448201527f64656c7461416674657231000000000000000000000000000000000000000000606482015260840161105e565b5f82121561257b5760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f203000000000000000000000000000000000000000606482015260840161105e565b5f8113156129315760405162461bcd60e51b815260206004820152602a60248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f203000000000000000000000000000000000000000000000606482015260840161105e565b8161293c8460801d90565b600f0b146129b25760405162461bcd60e51b815260206004820152602b60248201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060448201527f64656c7461416674657230000000000000000000000000000000000000000000606482015260840161105e565b8460200151821315612a535760405162461bcd60e51b8152602060048201526044602482018190527f64656c7461416674657230206973206e6f74206c657373207468616e206f7220908201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f6669656400000000000000000000000000000000000000000000000000000000608482015260a40161105e565b5f821215612a7757612a778660400151876020015184612a7290613cd6565b612e75565b5f811215612a9657612a968660600151876020015183612a7290613cd6565b5f821315612ab157612ab18660400151876020015184613108565b5f811315612acc57612acc8660600151876020015183613108565b6040805160208101859052016040516020818303038152906040529650505050505050919050565b5f5f8511612b6a5760405162461bcd60e51b815260206004820152602b60248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4960448201527f4e5055545f414d4f554e54000000000000000000000000000000000000000000606482015260840161105e565b5f84118015612b7857505f83115b612bea5760405162461bcd60e51b815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f4951554944495459000000000000000000000000000000000000000000000000606482015260840161105e565b5f612c00612bf9600a8561475f565b8790613186565b90505f612c0d8286613186565b90505f612c2683612c20896103e8613186565b906131f5565b9050612c32818361475f565b98975050505050505050565b6001600160a01b03828116908216145b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052612cd38482613252565b612d6357604080516001600160a01b03851660248201525f6044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052612d599085906132f3565b612d6384826132f3565b50505050565b5f7f80000000000000000000000000000000000000000000000000000000000000008210612dd95760405162461bcd60e51b815260206004820152600760248201527f546f6f2062696700000000000000000000000000000000000000000000000000604482015260640161105e565b5090565b6001600160a01b038181165f908152838216602052604080822060015491517ff135baaa000000000000000000000000000000000000000000000000000000008152600481018290529293909291169063f135baaa90602401602060405180830381865afa158015612e51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da29190613c76565b6001600160a01b038316612efa5760015f9054906101000a90046001600160a01b03166001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af1158015612ed5573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612d639190613c76565b6001546040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529091169063a5841194906024015f604051808303815f87803b158015612f57575f5ffd5b505af1158015612f69573d5f5f3e3d5ffd5b505050506001600160a01b0382163014613018576001546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152918216602482015260448101839052908416906323b872dd906064016020604051808303815f875af1158015612fee573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130129190614797565b50613093565b6001546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529084169063a9059cbb906044015f604051808303815f87803b15801561307c575f5ffd5b505af115801561308e573d5f5f3e3d5ffd5b505050505b60015f9054906101000a90046001600160a01b03166001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af11580156130e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d639190613c76565b6001546040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301526044820184905290911690630b0d9c09906064015f604051808303815f87803b158015613174575f5ffd5b505af115801561222c573d5f5f3e3d5ffd5b5f8115806131a95750828261319b81836147b0565b92506131a7908361475f565b145b612c4e5760405162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015260640161105e565b5f8261320183826147c7565b9150811015612c4e5760405162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015260640161105e565b5f5f5f846001600160a01b03168460405161326d91906147da565b5f604051808303815f865af19150503d805f81146132a6576040519150601f19603f3d011682016040523d82523d5f602084013e6132ab565b606091505b50915091508180156132d55750805115806132d55750808060200190518101906132d59190614797565b80156132ea57506001600160a01b0385163b15155b95945050505050565b5f613347826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133d99092919063ffffffff16565b905080515f14806133675750808060200190518101906133679190614797565b6108ad5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161105e565b6060611da284845f85855f5f866001600160a01b031685876040516133fe91906147da565b5f6040518083038185875af1925050503d805f8114613438576040519150601f19603f3d011682016040523d82523d5f602084013e61343d565b606091505b509150915061344e87838387613459565b979650505050505050565b606083156134c75782515f036134c0576001600160a01b0385163b6134c05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161105e565b5081611da2565b611da283838151156134dc5781518083602001fd5b8060405162461bcd60e51b815260040161105e9190613927565b5f5f85851115613504575f5ffd5b83861115613510575f5ffd5b5050820193919092039150565b5f6020828403121561352d575f5ffd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610140810167ffffffffffffffff8111828210171561358557613585613534565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156135b4576135b4613534565b604052919050565b5f67ffffffffffffffff8211156135d5576135d5613534565b5060051b60200190565b6001600160a01b03811681146135f3575f5ffd5b50565b5f82601f830112613605575f5ffd5b8135613618613613826135bc565b61358b565b8082825260208201915060208360051b860101925085831115613639575f5ffd5b602085015b8381101561365f578035613651816135df565b83526020928301920161363e565b5095945050505050565b5f82601f830112613678575f5ffd5b8135613686613613826135bc565b8082825260208201915060208360051b8601019250858311156136a7575f5ffd5b602085015b8381101561365f5780358352602092830192016136ac565b5f5f83601f8401126136d4575f5ffd5b50813567ffffffffffffffff8111156136eb575f5ffd5b6020830191508360208260051b8501011115613705575f5ffd5b9250929050565b5f82601f83011261371b575f5ffd5b8135613729613613826135bc565b8082825260208201915060208360051b86010192508583111561374a575f5ffd5b602085015b8381101561365f57803567ffffffffffffffff81111561376d575f5ffd5b61377c886020838a0101613669565b8452506020928301920161374f565b5f5f5f5f5f5f5f60c0888a0312156137a1575f5ffd5b87359650602088013567ffffffffffffffff8111156137be575f5ffd5b6137ca8a828b016135f6565b965050604088013567ffffffffffffffff8111156137e6575f5ffd5b6137f28a828b016135f6565b955050606088013567ffffffffffffffff81111561380e575f5ffd5b61381a8a828b01613669565b945050608088013567ffffffffffffffff811115613836575f5ffd5b6138428a828b016136c4565b90945092505060a088013567ffffffffffffffff811115613861575f5ffd5b61386d8a828b0161370c565b91505092959891949750929550565b5f5f83601f84011261388c575f5ffd5b50813567ffffffffffffffff8111156138a3575f5ffd5b602083019150836020828501011115613705575f5ffd5b5f5f602083850312156138cb575f5ffd5b823567ffffffffffffffff8111156138e1575f5ffd5b6138ed8582860161387c565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61393960208301846138f9565b9392505050565b5f5f5f5f60608587031215613953575f5ffd5b843561395e816135df565b935060208501359250604085013567ffffffffffffffff811115613980575f5ffd5b61398c8782880161387c565b95989497509550505050565b5f5f5f5f608085870312156139ab575f5ffd5b8435935060208501356139bd816135df565b925060408501356139cd816135df565b9150606085013567ffffffffffffffff8111156139e8575f5ffd5b6139f487828801613669565b91505092959194509250565b5f67ffffffffffffffff821115613a1957613a19613534565b50601f01601f191660200190565b5f82601f830112613a36575f5ffd5b8151613a4461361382613a00565b818152846020838601011115613a58575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215613a85575f5ffd5b8251602084015190925067ffffffffffffffff811115613aa3575f5ffd5b613aaf85828601613a27565b9150509250929050565b8051613ac4816135df565b919050565b5f82601f830112613ad8575f5ffd5b8151613ae6613613826135bc565b8082825260208201915060208360051b860101925085831115613b07575f5ffd5b602085015b8381101561365f578051835260209283019201613b0c565b5f60208284031215613b34575f5ffd5b815167ffffffffffffffff811115613b4a575f5ffd5b82016101408185031215613b5c575f5ffd5b613b64613561565b613b6d82613ab9565b8152613b7b60208301613ab9565b6020820152613b8c60408301613ab9565b6040820152613b9d60608301613ab9565b6060820152613bae60808301613ab9565b608082015260a082015167ffffffffffffffff811115613bcc575f5ffd5b613bd886828501613a27565b60a08301525060c082015167ffffffffffffffff811115613bf7575f5ffd5b613c0386828501613a27565b60c08301525060e082015167ffffffffffffffff811115613c22575f5ffd5b613c2e86828501613ac9565b60e08301525061010082015167ffffffffffffffff811115613c4e575f5ffd5b613c5a86828501613ac9565b6101008301525061012091820151918101919091529392505050565b5f60208284031215613c86575f5ffd5b5051919050565b61ffff83168152604060208201525f611da260408301846138f9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7f80000000000000000000000000000000000000000000000000000000000000008203613d0657613d06613ca9565b505f0390565b5f5f5f5f5f5f60c08789031215613d21575f5ffd5b8651613d2c816135df565b6020880151909650613d3d816135df565b6040880151909550613d4e816135df565b6060880151909450613d5f816135df565b608088015190935067ffffffffffffffff811115613d7b575f5ffd5b613d8789828a01613ac9565b92505060a087015167ffffffffffffffff811115613da3575f5ffd5b613daf89828a01613a27565b9150509295509295509295565b5f5f5f5f5f60a08688031215613dd0575f5ffd5b8551613ddb816135df565b6020870151909550613dec816135df565b6040870151909450613dfd816135df565b6060870151909350613e0e816135df565b608087015190925067ffffffffffffffff811115613e2a575f5ffd5b613e3688828901613a27565b9150509295509295909350565b5f5f5f5f5f5f60c08789031215613e58575f5ffd5b8651613e63816135df565b6020880151909650613e74816135df565b6040880151909550613e85816135df565b6060880151909450613e96816135df565b608088015190935067ffffffffffffffff811115613eb2575f5ffd5b613d8789828a01613a27565b5f60208284031215613ece575f5ffd5b8151613939816135df565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f39575f5ffd5b83018035915067ffffffffffffffff821115613f53575f5ffd5b602001915036819003821315613705575f5ffd5b5f8151808452602084019350602083015f5b82811015613f97578151865260209586019590910190600101613f79565b5093949350505050565b60208152613fbb6020820183516001600160a01b03169052565b5f6020830151613fd660408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a083015161014060c08401526140316101608401826138f9565b905060c0840151601f198483030160e085015261404e82826138f9565b91505060e0840151601f198483030161010085015261406d8282613f67565b915050610100840151601f198483030161012085015261408d8282613f67565b9150506101208401516101408401528091505092915050565b60ff83168152604060208201525f611da260408301846138f9565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b5f60c082016001600160a01b038a1683526001600160a01b03891660208401526001600160a01b03881660408401526001600160a01b038716606084015260c0608084015280865180835260e0850191506020880192505f5b81811015614161578351835260209384019390920191600101614143565b505083810360a08501526141768186886140c1565b9b9a5050505050505050505050565b6001600160a01b03871681526001600160a01b03861660208201526001600160a01b03851660408201526001600160a01b038416606082015260a060808201525f612c3260a0830184866140c1565b6001600160a01b03891681526001600160a01b03881660208201526001600160a01b03871660408201526001600160a01b038616606082015260c060808201525f61422360c0830186886140c1565b82810360a08401526141768185876140c1565b5f82601f830112614245575f5ffd5b813561425361361382613a00565b818152846020838601011115614267575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215614295575f5ffd5b83359250602084013567ffffffffffffffff8111156142b2575f5ffd5b6142be86828701614236565b925050604084013567ffffffffffffffff8111156142da575f5ffd5b6142e686828701614236565b9150509250925092565b818382375f9101908152919050565b805162ffffff81168114613ac4575f5ffd5b8051600281900b8114613ac4575f5ffd5b5f60a0828403128015614333575f5ffd5b5060405160a0810167ffffffffffffffff8111828210171561435757614357613534565b6040528251614365816135df565b81526020830151614375816135df565b6020820152614386604084016142ff565b604082015261439760608401614311565b606082015260808301516143aa816135df565b60808201529392505050565b602081526143d06020820183516001600160a01b03169052565b5f60208301516143eb60408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b038116608084015250608083015162ffffff811660a08401525060a083015161443b60c084018260020b9052565b5060c08301516001600160a01b03811660e08401525060e08301518015156101008401525061010083015161012083015261012083015161014080840152611da26101608401826138f9565b60ff84168152606060208201525f6144a260608301856138f9565b82810360408401526144b481856138f9565b9695505050505050565b5f602082840312156144ce575f5ffd5b815167ffffffffffffffff8111156144e4575f5ffd5b611da284828501613a27565b8481528360208201526001600160a01b0383166040820152608060608201525f6144b460808301846138f9565b6001600160a01b038616815284151560208201528360408201526001600160a01b038316606082015260a060808201525f61344e60a08301846138f9565b5f5f6040838503121561456c575f5ffd5b505080516020909101519092909150565b80518015158114613ac4575f5ffd5b5f6020828403121561459c575f5ffd5b815167ffffffffffffffff8111156145b2575f5ffd5b820161014081850312156145c4575f5ffd5b6145cc613561565b6145d582613ab9565b81526145e360208301613ab9565b60208201526145f460408301613ab9565b604082015261460560608301613ab9565b6060820152614616608083016142ff565b608082015261462760a08301614311565b60a082015261463860c08301613ab9565b60c082015261464960e0830161457d565b60e0820152610100828101519082015261012082015167ffffffffffffffff811115614673575f5ffd5b61467f86828501613a27565b61012083015250949350505050565b6001600160a01b038281168282160390811115612c4e57612c4e613ca9565b6001600160a01b038181168382160190811115612c4e57612c4e613ca9565b6001600160a01b0384511681526001600160a01b03602085015116602082015262ffffff6040850151166040820152606084015160020b60608201526001600160a01b03608085015116608082015261474760a0820184805115158252602080820151908301526040908101516001600160a01b0316910152565b6101206101008201525f611d9f6101208301846138f9565b5f82614792577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f602082840312156147a7575f5ffd5b6139398261457d565b8082028115828204841417612c4e57612c4e613ca9565b80820180821115612c4e57612c4e613ca9565b5f82518060208501845e5f92019182525091905056fea164736f6c634300081b000a