610160604052306080527ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc960c0527f5ebbf78043a2215b522b1366a193ec74dd1f54e441e841a87b9653246a9c49a660e0523480156200005e57600080fd5b506040516200555a3803806200555a8339810160408190526200008191620001b7565b600760a052600054610100900460ff16620000a35760005460ff1615620000ad565b620000ad62000171565b620001155760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff1615801562000138576000805461ffff19166101011790555b6001600160a01b038085166101405283811661010052821661012052801562000167576000805461ff00191690555b505050506200020b565b600062000189306200018f60201b62002da21760201c565b15905090565b6001600160a01b03163b151590565b6001600160a01b0381168114620001b457600080fd5b50565b600080600060608486031215620001cd57600080fd5b8351620001da816200019e565b6020850151909350620001ed816200019e565b604085015190925062000200816200019e565b809150509250925092565b60805160a05160c05160e0516101005161012051610140516152ae620002ac6000396000818161094e01526125030152600061347c01526000612453015260008181610a7801528181610e370152818161177d01526119ad015260008181610a2401528181611f8b01526122bd015260006108dd01526000818161153d015281816115d301528181611b5901528181611bef0152611ce601526152ae6000f3fe6080604052600436106103225760003560e01c80636352211e116101a5578063b8ae5a2c116100ec578063e58306f911610095578063ee37be391161006f578063ee37be3914610aef578063efef39a114610b0f578063faff3c7014610b22578063ffdb716314610b4257600080fd5b8063e58306f914610a9a578063e8a3d48514610aba578063e985e9c514610acf57600080fd5b8063d5391393116100c6578063d539139314610a12578063d547741f14610a46578063e26bd34314610a6657600080fd5b8063b8ae5a2c14610990578063c87b56dd146109b0578063d445b978146109d057600080fd5b806395d89b411161014e578063a22cb46511610128578063a22cb4651461091c578063b6eb9c861461093c578063b88d4fde1461097057600080fd5b806395d89b41146108b1578063a0a8e460146108c6578063a217fddf1461090757600080fd5b806379502c551161017f57806379502c55146107ce5780638da5cb5b1461085557806391d148541461086a57600080fd5b80636352211e1461076f578063703199701461078f57806370a08231146107ae57600080fd5b80632a55205a1161026957806341e96eb1116102125780634f1ef286116101ec5780634f1ef2861461071957806352d1902d1461072c57806361fea7681461074157600080fd5b806341e96eb1146106c457806342842e0e146106d957806342966c68146106f957600080fd5b806336568abe1161024357806336568abe1461066f5780633659cfe61461068f5780633ccfd60b146106af57600080fd5b80632a55205a146105ee5780632f2ff15d1461062d5780633474a4a61461064d57600080fd5b806318160ddd116102cb578063248a9ca3116102a5578063248a9ca31461058a57806324d7806c146105bb57806325024a2b146105db57600080fd5b806318160ddd146104545780631d2c0b381461047b57806323b872dd1461056a57600080fd5b8063095ea7b3116102fc578063095ea7b3146103f257806310a7eb5d1461041457806313af40351461043457600080fd5b806301ffc9a71461036357806306fdde0314610398578063081812fc146103ba57600080fd5b3661035e5760405134815233907f8e47b87b0ef542cdfa1659c551d88bad38aa7f452d2bbb349ab7530dfec8be8f9060200160405180910390a2005b600080fd5b34801561036f57600080fd5b5061038361037e36600461474e565b610b62565b60405190151581526020015b60405180910390f35b3480156103a457600080fd5b506103ad610c57565b60405161038f91906147c3565b3480156103c657600080fd5b506103da6103d53660046147d6565b610ce9565b6040516001600160a01b03909116815260200161038f565b3480156103fe57600080fd5b5061041261040d366004614814565b610d46565b005b34801561042057600080fd5b5061041261042f366004614840565b610e06565b34801561044057600080fd5b5061041261044f366004614840565b610f28565b34801561046057600080fd5b5060665460655403600019015b60405190815260200161038f565b34801561048757600080fd5b50610162546101635461016454610511926cffffffffffffffffffffffffff8116926d0100000000000000000000000000820463ffffffff16927101000000000000000000000000000000000090920467ffffffffffffffff9081169281831692680100000000000000008104831692700100000000000000000000000000000000909104169087565b604080516cffffffffffffffffffffffffff909816885263ffffffff909616602088015267ffffffffffffffff948516958701959095529183166060860152821660808501521660a083015260c082015260e00161038f565b34801561057657600080fd5b5061041261058536600461485d565b610f9c565b34801561059657600080fd5b5061046d6105a53660046147d6565b600090815261012d602052604090206001015490565b3480156105c757600080fd5b506103836105d6366004614840565b610fa7565b61046d6105e93660046148e3565b610fe7565b3480156105fa57600080fd5b5061060e610609366004614944565b6112c1565b604080516001600160a01b03909316835260208301919091520161038f565b34801561063957600080fd5b50610412610648366004614966565b611330565b34801561065957600080fd5b50610662611356565b60405161038f9190614996565b34801561067b57600080fd5b5061041261068a366004614966565b6114a6565b34801561069b57600080fd5b506104126106aa366004614840565b611532565b3480156106bb57600080fd5b506104126116cd565b3480156106d057600080fd5b5061041261197c565b3480156106e557600080fd5b506104126106f436600461485d565b611b28565b34801561070557600080fd5b506104126107143660046147d6565b611b43565b610412610727366004614b3f565b611b4e565b34801561073857600080fd5b5061046d611cd9565b34801561074d57600080fd5b5061046d61075c366004614840565b6101656020526000908152604090205481565b34801561077b57600080fd5b506103da61078a3660046147d6565b611d9e565b34801561079b57600080fd5b50610160546001600160a01b03166103da565b3480156107ba57600080fd5b5061046d6107c9366004614840565b611db0565b3480156107da57600080fd5b506101605461016154610815916001600160a01b0380821692600160a01b830467ffffffffffffffff1692600160e01b900461ffff16911684565b604080516001600160a01b03958616815267ffffffffffffffff909416602085015261ffff9092169183019190915291909116606082015260800161038f565b34801561086157600080fd5b506103da611e18565b34801561087657600080fd5b50610383610885366004614966565b600091825261012d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156108bd57600080fd5b506103ad611e32565b3480156108d257600080fd5b5060405163ffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161038f565b34801561091357600080fd5b5061046d600081565b34801561092857600080fd5b50610412610937366004614b9d565b611e41565b34801561094857600080fd5b506103da7f000000000000000000000000000000000000000000000000000000000000000081565b34801561097c57600080fd5b5061041261098b366004614bcb565b611ef0565b34801561099c57600080fd5b5061046d6109ab366004614c37565b611f5a565b3480156109bc57600080fd5b506103ad6109cb3660046147d6565b6120d8565b3480156109dc57600080fd5b506109f06109eb366004614840565b6121a4565b604080518251815260208084015190820152918101519082015260600161038f565b348015610a1e57600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b348015610a5257600080fd5b50610412610a61366004614966565b612266565b348015610a7257600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b348015610aa657600080fd5b5061046d610ab5366004614814565b61228c565b348015610ac657600080fd5b506103ad6123c3565b348015610adb57600080fd5b50610383610aea366004614c79565b61244f565b348015610afb57600080fd5b5061060e610b0a3660046147d6565b6124c4565b61046d610b1d3660046147d6565b612597565b348015610b2e57600080fd5b50610412610b3d366004614dae565b6127f8565b348015610b4e57600080fd5b50610412610b5d366004614e9d565b612bda565b6000610b6d82612db1565b80610bb957507f8da5cb5b000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b80610c0557507f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b80610c5157507fde8379b6000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060678054610c6690614f1c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9290614f1c565b8015610cdf5780601f10610cb457610100808354040283529160200191610cdf565b820191906000526020600020905b815481529060010190602001808311610cc257829003601f168201915b5050505050905090565b6000610cf482612e07565b610d2a576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000908152606b60205260409020546001600160a01b031690565b6000610d5182611d9e565b9050806001600160a01b0316836001600160a01b03161415610d9f576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03821614801590610dbf5750610dbd813361244f565b155b15610df6576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e01838383612e40565b505050565b3360009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a663960205260409020547f00000000000000000000000000000000000000000000000000000000000000009060ff16158015610e825750600081815261012d6020908152604080832033845290915290205460ff16155b15610ec1576040517fcee8157c000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b61016180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556040513391907f70a7ea5c664ab9c21baf3da59bb2f1e1ca33557b08a0031fab4f17076744995190600090a35050565b3360009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a6639602052604090205460ff16610f90576040517f02bd6bd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f9981612eb4565b50565b610e01838383612f2a565b6001600160a01b03811660009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a6639602052604081205460ff16610c51565b6000600260fb54141561103c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610eb8565b600260fb55610160548690600160a01b900467ffffffffffffffff166110656065546000190190565b61106f9083614f9f565b11156110a7576040517f717c513000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110af6131ac565b6110e5576040517f95ed3c1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111578484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505061016454604080513360208201529081018c9052606081018b90529092506080019050604051602081830303815290604052805190602001206131fd565b61118d576040517f85b70e5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111978786614fb7565b34146111dc576111a78786614fb7565b6040517f6a1c179e000000000000000000000000000000000000000000000000000000008152600401610eb891815260200190565b3360009081526101656020526040812080548992906111fc908490614f9f565b9091555050336000908152610165602052604090205486101561124b576040517fa7b32bb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112553388613213565b60008761126061324b565b61126a9190614fd6565b90508588336001600160a01b03167f4e26b0356a15833a75d497ecc40ebbb716b99466ed0dba9454f1fff451e25a90846040516112a991815260200190565b60405180910390a4600160fb55979650505050505050565b6101615460009081906001600160a01b03166112ed575050610161546001600160a01b03166000611329565b61016154610160546001600160a01b03909116906127109061131a90600160e01b900461ffff1686614fb7565b6113249190614fed565b915091505b9250929050565b600082815261012d602052604090206001015461134c8161325c565b610e018383613266565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526040518061016001604052806113c361330a565b151581526020016113d26131ac565b15158152610162546cffffffffffffffffffffffffff8116602083015267ffffffffffffffff710100000000000000000000000000000000008204811660408401526101635480821660608501526801000000000000000081048216608085015270010000000000000000000000000000000090041660a08301526101645460c083015263ffffffff6d01000000000000000000000000009091041660e0820152610100016114846065546000190190565b815261016054600160a01b900467ffffffffffffffff16602090910152919050565b6001600160a01b03811633146115245760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610eb8565b61152e8282613351565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156115d15760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610eb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661162c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146116a85760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610eb8565b6116b1816133d6565b60408051600080825260208201909252610f9991839190613528565b600260fb5414156117205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610eb8565b600260fb553347600080611733836124c4565b6001600160a01b03861660009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a66396020526040902054919350915060ff161580156117c557507f0000000000000000000000000000000000000000000000000000000000000000600090815261012d602090815260408083206001600160a01b038816845290915290205460ff16155b80156117e35750816001600160a01b0316846001600160a01b031614155b80156117fe5750610161546001600160a01b03858116911614155b15611835576040517f1dab829b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156118dc576000826001600160a01b0316826203345090604051600060405180830381858888f193505050503d806000811461188e576040519150601f19603f3d011682016040523d82523d6000602084013e611893565b606091505b50509050806118ce576040517f39debd5b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118d88285614fd6565b9350505b610161546040516000916001600160a01b0316906203345090869084818181858888f193505050503d8060008114611930576040519150601f19603f3d011682016040523d82523d6000602084013e611935565b606091505b5050905080611970576040517f39debd5b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050600160fb55505050565b3360009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a663960205260409020547f00000000000000000000000000000000000000000000000000000000000000009060ff161580156119f85750600081815261012d6020908152604080832033845290915290205460ff16155b15611a32576040517fcee8157c00000000000000000000000000000000000000000000000000000000815260048101829052602401610eb8565b61016054600160a01b900467ffffffffffffffff90811614611a80576040517fe742c08400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60655460001901610160805467ffffffffffffffff92909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055611ad03390565b61016054604051600160a01b90910467ffffffffffffffff1681526001600160a01b0391909116907fb6cc1e876b8d7479c8afe025a58658b0f3c3ec5bd0f28cb4261326b162069bf89060200160405180910390a250565b610e0183838360405180602001604052806000815250611ef0565b610f998160016136c8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415611bed5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610eb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c487f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614611cc45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610eb8565b611ccd826133d6565b61152e82826001613528565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d795760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610eb8565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6000611da98261391f565b5192915050565b60006001600160a01b038216611df2576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b03166000908152606a602052604090205467ffffffffffffffff1690565b6000611e2d61015f546001600160a01b031690565b905090565b606060688054610c6690614f1c565b6001600160a01b038216331415611e84576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152606c602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611efb848484612f2a565b6001600160a01b0383163b15158015611f1d5750611f1b84848484613a61565b155b15611f54576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b3360009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a663960205260408120547f00000000000000000000000000000000000000000000000000000000000000009060ff16158015611fd65750600081815261012d6020908152604080832033845290915290205460ff16155b15612010576040517fcee8157c00000000000000000000000000000000000000000000000000000000815260048101829052602401610eb8565b610160548390600160a01b900467ffffffffffffffff166120346065546000190190565b61203e9083614f9f565b1115612076576040517f717c513000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606554808581015b808310156120c4576120b9888884860381811061209d5761209d615028565b90506020020160208101906120b29190614840565b6001613213565b60019092019161207e565b506120cd61324b565b979650505050505050565b60606120e382612e07565b612119576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610160546040517fc87b56dd000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b039091169063c87b56dd90602401600060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c519190810190615057565b6121c860405180606001604052806000815260200160008152602001600081525090565b6040518060600160405280612209846001600160a01b03166000908152606a602052604090205467ffffffffffffffff680100000000000000009091041690565b81526001600160a01b03841660008181526101656020908152604080832054828601819052938352606a909152908190205492019168010000000000000000900467ffffffffffffffff1661225e9190614fd6565b905292915050565b600082815261012d60205260409020600101546122828161325c565b610e018383613351565b3360009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a663960205260408120547f00000000000000000000000000000000000000000000000000000000000000009060ff161580156123085750600081815261012d6020908152604080832033845290915290205460ff16155b15612342576040517fcee8157c00000000000000000000000000000000000000000000000000000000815260048101829052602401610eb8565b610160548390600160a01b900467ffffffffffffffff166123666065546000190190565b6123709083614f9f565b11156123a8576040517f717c513000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123b28585613213565b6123ba61324b565b95945050505050565b61016054604080517fe8a3d48500000000000000000000000000000000000000000000000000000000815290516060926001600160a01b03169163e8a3d4859160048083019260009291908290030181865afa158015612427573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e2d9190810190615057565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561249357506001610c51565b6001600160a01b038084166000908152606c602090815260408083209386168352929052205460ff165b9392505050565b6040517f2e0c16490000000000000000000000000000000000000000000000000000000081523060048201526000908190819081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e0c16499060240160408051808303816000875af115801561254b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256f91906150c5565b9092509050816127106125828388614fb7565b61258c9190614fed565b935093505050915091565b6000600260fb5414156125ec5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610eb8565b600260fb55610160548290600160a01b900467ffffffffffffffff166126156065546000190190565b61261f9083614f9f565b1115612657576040517f717c513000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61265f61330a565b612695576040517ff12dcc7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610162546cffffffffffffffffffffffffff166126b28482614fb7565b34146126c2576111a78482614fb7565b610162546d0100000000000000000000000000900463ffffffff161580159061274e5750610162543360009081526101656020908152604080832054606a909252909120546d010000000000000000000000000090920463ffffffff1691869068010000000000000000900467ffffffffffffffff166127429190614f9f565b61274c9190614fd6565b115b15612785576040517f220ae94c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61278f3385613213565b60008461279a61324b565b6127a49190614fd6565b90508185336001600160a01b03167f4e26b0356a15833a75d497ecc40ebbb716b99466ed0dba9454f1fff451e25a90846040516127e391815260200190565b60405180910390a4600160fb55949350505050565b600054610100900460ff166128135760005460ff1615612817565b303b155b6128895760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610eb8565b600054610100900460ff161580156128c857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6128d28a8a613bac565b6128da613c33565b6128e2613cb2565b6128ed600089613d37565b6128f688612eb4565b61016054611388600160e01b90910461ffff161115612945576040517f6680e9820000000000000000000000000000000000000000000000000000000081526113886004820152602401610eb8565b8351610162805460208701516040808901516cffffffffffffffffffffffffff9095167fffffffffffffffffffffffffffffff0000000000000000000000000000000000909316929092176d010000000000000000000000000063ffffffff90921691909102177fffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff167101000000000000000000000000000000000067ffffffffffffffff948516021790915560608601516101638054608089015160a08a01519386167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216919091176801000000000000000091861691909102177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009285169290920291909117905560c08601516101645561016080546001600160a01b038781167fffff000000000000000000000000000000000000000000000000000000000000909216600160a01b958c16959095027fffff0000ffffffffffffffff000000000000000000000000000000000000000016949094178117600160e01b61ffff8b16021790915561016180547fffffffffffffffffffffffff000000000000000000000000000000000000000016938b1693909317909255517f856a7ffa00000000000000000000000000000000000000000000000000000000815263856a7ffa90612b6d9085906004016147c3565b600060405180830381600087803b158015612b8757600080fd5b505af1158015612b9b573d6000803e3d6000fd5b505050508015612bce57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50505050505050505050565b3360009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a6639602052604090205460ff16612c42576040517f02bd6bd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016280546cffffffffffffffffffffffffff89167fffffffffffffffffffffffffffffff0000000000000000000000000000000000909116176d010000000000000000000000000063ffffffff891602177fffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff167101000000000000000000000000000000000067ffffffffffffffff888116919091029190911790915561016380548683167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000086841602177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000092851692909202919091179055610164819055336001600160a01b03167fc1ff5e4744ac8dd2b8027a10e3723b165975297501c71c4e7dcb8796d96375db60405160405180910390a250505050505050565b6001600160a01b03163b151590565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610c515750610c5182613d41565b600081600111158015612e1b575060655482105b8015610c51575050600090815260696020526040902054600160e01b900460ff161590565b6000828152606b602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61015f546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a361015f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000612f358261391f565b9050836001600160a01b031681600001516001600160a01b031614612f86576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000336001600160a01b0386161480612fa45750612fa4853361244f565b80612fbf575033612fb484610ce9565b6001600160a01b0316145b905080612ff8576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416613038576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61304460008487612e40565b6001600160a01b038581166000908152606a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000080821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652606990945282852080547fffffffff0000000000000000000000000000000000000000000000000000000016909417600160a01b42909216919091021783558701808452922080549193909116613161576065548214613161578054602086015167ffffffffffffffff16600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b61016354600090426801000000000000000090910467ffffffffffffffff1611801590611e2d575050610163544270010000000000000000000000000000000090910467ffffffffffffffff161190565b60008261320a8584613e24565b14949350505050565b6000600882116132235781613226565b60085b90506132328382613e98565b61323c8183614fd6565b91505060008111613213575050565b60006001606554611e2d9190614fd6565b610f99813361403a565b600082815261012d602090815260408083206001600160a01b038516845290915290205460ff1661152e57600082815261012d602090815260408083206001600160a01b03851684529091529020805460ff191660011790556132c63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61016254600090427101000000000000000000000000000000000090910467ffffffffffffffff1611801590611e2d575050610163544267ffffffffffffffff9091161190565b600082815261012d602090815260408083206001600160a01b038516845290915290205460ff161561152e57600082815261012d602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b3360009081527fa581b17bfc4d6578e300cafbf34fd2dc1fef0270d8c73f88a99dcde2859a6639602052604090205460ff1661343e576040517f02bd6bd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f739958330000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301523060248301527f00000000000000000000000000000000000000000000000000000000000000001690637399583390604401602060405180830381865afa1580156134c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e791906150f3565b610f99576040517fef2bf7d40000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610eb8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561355b57610e01836140bb565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156135b5575060408051601f3d908101601f191682019092526135b291810190615110565b60015b6136275760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610eb8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146136bc5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610eb8565b50610e01838383614191565b60006136d38361391f565b80519091508215613752576000336001600160a01b03831614806136fc57506136fc823361244f565b8061371757503361370c86610ce9565b6001600160a01b0316145b905080613750576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b61375e60008583612e40565b6001600160a01b038082166000818152606a60209081526040808320805470010000000000000000000000000000000060001967ffffffffffffffff8084169190910181167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000841681178390048216600190810183169093027fffffffffffffffff0000000000000000ffffffffffffffff0000000000000000909416179290921783558b8652606990945282852080547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff42909316600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009091169097179690961716600160e01b1785559189018084529220805491949091166138d45760655482146138d4578054602087015167ffffffffffffffff16600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009091166001600160a01b038716171781555b5050604051869250600091506001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a450506066805460010190555050565b6040805160608101825260008082526020820181905291810191909152818060011115801561394f575060655481105b15613a2f57600081815260696020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff16151591810182905290613a2d5780516001600160a01b0316156139c3579392505050565b5060001901600081815260696020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff1615159281019290925215613a28579392505050565b6139c3565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f150b7a020000000000000000000000000000000000000000000000000000000081526000906001600160a01b0385169063150b7a0290613aaf903390899088908890600401615129565b6020604051808303816000875af1925050508015613aea575060408051601f3d908101601f19168201909252613ae791810190615165565b60015b613b5e573d808015613b18576040519150601f19603f3d011682016040523d82523d6000602084013e613b1d565b606091505b508051613b56576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b600054610100900460ff16613c295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610eb8565b61152e82826141b6565b600054610100900460ff16613cb05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610eb8565b565b600054610100900460ff16613d2f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610eb8565b613cb0614264565b61152e8282613266565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480613dd457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610c5157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610c51565b600081815b8451811015613e90576000858281518110613e4657613e46615028565b60200260200101519050808311613e6c5760008381526020829052604090209250613e7d565b600081815260208490526040902092505b5080613e8881615182565b915050613e29565b509392505050565b6065546001600160a01b038316613edb576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81613f12576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166000818152606a6020908152604080832080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811667ffffffffffffffff8083168a018116918217680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941690921783900481168a01811690920217909155858452606990925290912080547fffffffff0000000000000000000000000000000000000000000000000000000016909217600160a01b4290921691909102179055808083015b6040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a480821415613fed5750606555505050565b600082815261012d602090815260408083206001600160a01b038516845290915290205460ff1661152e57614079816001600160a01b031660146142e8565b6140848360206142e8565b60405160200161409592919061519d565b60408051601f198184030181529082905262461bcd60e51b8252610eb8916004016147c3565b6001600160a01b0381163b6141385760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610eb8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61419a83614511565b6000825111806141a75750805b15610e0157611f548383614551565b600054610100900460ff166142335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610eb8565b8151614246906067906020850190614687565b50805161425a906068906020840190614687565b5060016065555050565b600054610100900460ff166142e15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610eb8565b600160fb55565b606060006142f7836002614fb7565b614302906002614f9f565b67ffffffffffffffff81111561431a5761431a614a61565b6040519080825280601f01601f191660200182016040528015614344576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061437b5761437b615028565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106143de576143de615028565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061441a846002614fb7565b614425906001614f9f565b90505b60018111156144c2577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061446657614466615028565b1a60f81b82828151811061447c5761447c615028565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936144bb8161521e565b9050614428565b5083156124bd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610eb8565b61451a816140bb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6145d05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610eb8565b600080846001600160a01b0316846040516145eb9190615235565b600060405180830381855af49150503d8060008114614626576040519150601f19603f3d011682016040523d82523d6000602084013e61462b565b606091505b50915091506123ba8282604051806060016040528060278152602001615252602791396060831561465d5750816124bd565b82511561466d5782518084602001fd5b8160405162461bcd60e51b8152600401610eb891906147c3565b82805461469390614f1c565b90600052602060002090601f0160209004810192826146b557600085556146fb565b82601f106146ce57805160ff19168380011785556146fb565b828001600101855582156146fb579182015b828111156146fb5782518255916020019190600101906146e0565b5061470792915061470b565b5090565b5b80821115614707576000815560010161470c565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610f9957600080fd5b60006020828403121561476057600080fd5b81356124bd81614720565b60005b8381101561478657818101518382015260200161476e565b83811115611f545750506000910152565b600081518084526147af81602086016020860161476b565b601f01601f19169290920160200192915050565b6020815260006124bd6020830184614797565b6000602082840312156147e857600080fd5b5035919050565b6001600160a01b0381168114610f9957600080fd5b803561480f816147ef565b919050565b6000806040838503121561482757600080fd5b8235614832816147ef565b946020939093013593505050565b60006020828403121561485257600080fd5b81356124bd816147ef565b60008060006060848603121561487257600080fd5b833561487d816147ef565b9250602084013561488d816147ef565b929592945050506040919091013590565b60008083601f8401126148b057600080fd5b50813567ffffffffffffffff8111156148c857600080fd5b6020830191508360208260051b850101111561132957600080fd5b6000806000806000608086880312156148fb57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561492757600080fd5b6149338882890161489e565b969995985093965092949392505050565b6000806040838503121561495757600080fd5b50508035926020909101359150565b6000806040838503121561497957600080fd5b82359150602083013561498b816147ef565b809150509250929050565b815115158152610160810160208301516149b4602084018215159052565b506040830151604083015260608301516149da606084018267ffffffffffffffff169052565b5060808301516149f6608084018267ffffffffffffffff169052565b5060a0830151614a1260a084018267ffffffffffffffff169052565b5060c0830151614a2e60c084018267ffffffffffffffff169052565b5060e083810151908301526101008084015190830152610120808401519083015261014092830151929091019190915290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614ab957614ab9614a61565b604052919050565b600067ffffffffffffffff821115614adb57614adb614a61565b50601f01601f191660200190565b600082601f830112614afa57600080fd5b8135614b0d614b0882614ac1565b614a90565b818152846020838601011115614b2257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614b5257600080fd5b8235614b5d816147ef565b9150602083013567ffffffffffffffff811115614b7957600080fd5b614b8585828601614ae9565b9150509250929050565b8015158114610f9957600080fd5b60008060408385031215614bb057600080fd5b8235614bbb816147ef565b9150602083013561498b81614b8f565b60008060008060808587031215614be157600080fd5b8435614bec816147ef565b93506020850135614bfc816147ef565b925060408501359150606085013567ffffffffffffffff811115614c1f57600080fd5b614c2b87828801614ae9565b91505092959194509250565b60008060208385031215614c4a57600080fd5b823567ffffffffffffffff811115614c6157600080fd5b614c6d8582860161489e565b90969095509350505050565b60008060408385031215614c8c57600080fd5b8235614c97816147ef565b9150602083013561498b816147ef565b803567ffffffffffffffff8116811461480f57600080fd5b803561ffff8116811461480f57600080fd5b80356cffffffffffffffffffffffffff8116811461480f57600080fd5b803563ffffffff8116811461480f57600080fd5b600060e08284031215614d1457600080fd5b60405160e0810181811067ffffffffffffffff82111715614d3757614d37614a61565b604052905080614d4683614cd1565b8152614d5460208401614cee565b6020820152614d6560408401614ca7565b6040820152614d7660608401614ca7565b6060820152614d8760808401614ca7565b6080820152614d9860a08401614ca7565b60a082015260c083013560c08201525092915050565b60008060008060008060008060006101e08a8c031215614dcd57600080fd5b893567ffffffffffffffff80821115614de557600080fd5b614df18d838e01614ae9565b9a5060208c0135915080821115614e0757600080fd5b614e138d838e01614ae9565b9950614e2160408d01614804565b9850614e2f60608d01614804565b9750614e3d60808d01614ca7565b9650614e4b60a08d01614cbf565b9550614e5a8d60c08e01614d02565b9450614e696101a08d01614804565b93506101c08c0135915080821115614e8057600080fd5b50614e8d8c828d01614ae9565b9150509295985092959850929598565b600080600080600080600060e0888a031215614eb857600080fd5b614ec188614cd1565b9650614ecf60208901614cee565b9550614edd60408901614ca7565b9450614eeb60608901614ca7565b9350614ef960808901614ca7565b9250614f0760a08901614ca7565b915060c0880135905092959891949750929550565b600181811c90821680614f3057607f821691505b60208210811415614f6a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614fb257614fb2614f70565b500190565b6000816000190483118215151615614fd157614fd1614f70565b500290565b600082821015614fe857614fe8614f70565b500390565b600082615023577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561506957600080fd5b815167ffffffffffffffff81111561508057600080fd5b8201601f8101841361509157600080fd5b805161509f614b0882614ac1565b8181528560208385010111156150b457600080fd5b6123ba82602083016020860161476b565b600080604083850312156150d857600080fd5b82516150e3816147ef565b6020939093015192949293505050565b60006020828403121561510557600080fd5b81516124bd81614b8f565b60006020828403121561512257600080fd5b5051919050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261515b6080830184614797565b9695505050505050565b60006020828403121561517757600080fd5b81516124bd81614720565b600060001982141561519657615196614f70565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516151d581601785016020880161476b565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161521281602884016020880161476b565b01602801949350505050565b60008161522d5761522d614f70565b506000190190565b6000825161524781846020870161476b565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f0fc69c41631e1537e28f8bea1f7e2ddba5fbba6d8a3e572569490d1d6409e8764736f6c634300080a0033000000000000000000000000e666ca2f5ab01a5e8ca19e505b2de3475a39d7d2000000000000000000000000909e9efe4d87d1a6018c2065ae642b6d0447bc9100000000000000000000000097f589d427c4dfa48e3f3f50ff0c5b49334dde22