0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c806395d89b41116100ee578063d35827a611610097578063dd524f8811610071578063dd524f88146103b7578063e985e9c5146103ca578063ebf0c717146103f8578063f2fde38b1461040157600080fd5b8063d35827a614610376578063d35a780d14610389578063d547cfb7146103af57600080fd5b8063b88d4fde116100c8578063b88d4fde1461033d578063c87b56dd14610350578063d301ef731461036357600080fd5b806395d89b4114610314578063a22cb4651461031c578063b45a3c0e1461032a57600080fd5b806342966c681161015b57806370a082311161013557806370a08231146102ba578063715018a6146102db5780637cb64759146102e35780638da5cb5b146102f657600080fd5b806342966c681461028157806355f804b3146102945780636352211e146102a757600080fd5b8063095ea7b31161018c578063095ea7b31461024b57806323b872dd1461026057806342842e0e1461026e57600080fd5b806301ffc9a7146101b357806306fdde03146101db578063081812fc146101f0575b600080fd5b6101c66101c13660046116a0565b610414565b60405190151581526020015b60405180910390f35b6101e3610545565b6040516101d291906116e1565b6102266101fe366004611732565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61025e61025936600461176f565b6105d3565b005b61025e610259366004611799565b61025e61027c366004611799565b61063a565b61025e61028f366004611732565b6107a4565b61025e6102a236600461181e565b6107b8565b6102266102b5366004611732565b61080b565b6102cd6102c8366004611860565b61089c565b6040519081526020016101d2565b61025e610944565b61025e6102f1366004611732565b610958565b60065473ffffffffffffffffffffffffffffffffffffffff16610226565b6101e361099b565b61025e61025936600461187b565b6101c6610338366004611732565b6109a8565b61025e61034b3660046118b7565b6109bc565b6101e361035e366004611732565b610b16565b61025e61037136600461196b565b610b54565b61025e610384366004611a26565b610c7d565b61039c610397366004611732565b610d36565b60405161ffff90911681526020016101d2565b6101e3610d49565b61039c6103c5366004611732565b610d56565b6101c66103d8366004611a8b565b600560209081526000928352604080842090915290825290205460ff1681565b6102cd60085481565b61025e61040f366004611860565b610d69565b60007fb45a3c0e000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806104a757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806104f357507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061053f57507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000805461055290611abe565b80601f016020809104026020016040519081016040528092919081815260200182805461057e90611abe565b80156105cb5780601f106105a0576101008083540402835291602001916105cb565b820191906000526020600020905b8154815290600101906020018083116105ae57829003601f168201915b505050505081565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e4f4e5f5452414e5346455241424c450000000000000000000000000000000060448201526064015b60405180910390fd5b6106458383836105d3565b73ffffffffffffffffffffffffffffffffffffffff82163b158061073957506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af11580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107159190611b11565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b61079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610631565b505050565b6107ac610e1d565b6107b581610e9e565b50565b6107c0610e1d565b60076107cd828483611bab565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f682826040516107ff929190611d0e565b60405180910390a15050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610631565b919050565b600073ffffffffffffffffffffffffffffffffffffffff821661091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610631565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b61094c610e1d565b6109566000610fe8565b565b610960610e1d565b60088190556040518181527f42cbc405e4dbf1b691e85b9a34b08ecfcf7a9ad9078bf4d645ccfa1fac11c10b9060200160405180910390a150565b6001805461055290611abe565b60006109b38261080b565b50600192915050565b6109c78585856105d3565b73ffffffffffffffffffffffffffffffffffffffff84163b1580610aa957506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a0290610a429033908a90899089908990600401611d2a565b6020604051808303816000875af1158015610a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a859190611b11565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610631565b5050505050565b6060610b218261080b565b506007610b2d8361105f565b604051602001610b3e929190611d75565b6040516020818303038152906040529050919050565b610b5c610e1d565b848015801590610b6b57508084145b8015610b7657508082145b610bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e434f4e53495354454e545f4c454e475448000000000000000000000000006044820152606401610631565b60005b81811015610c73576000888883818110610bfb57610bfb611e42565b9050602002016020810190610c109190611860565b9050610c6a81888885818110610c2857610c28611e42565b9050602002016020810190610c3d9190611e71565b878786818110610c4f57610c4f611e42565b9050602002016020810190610c649190611e8c565b8461111d565b50600101610bdf565b5050505050505050565b610cc4610c8b3386866111b4565b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506111ea92505050565b610d2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f50524f4f46000000000000000000000000000000000000006044820152606401610631565b610b0f3385858861111d565b6000610d418261080b565b505060ff1690565b6007805461055290611abe565b6000610d618261080b565b505060081c90565b610d71610e1d565b73ffffffffffffffffffffffffffffffffffffffff8116610e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610631565b6107b581610fe8565b60065473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610631565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610631565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558583526002825280832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6006805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060600061106c83611200565b600101905060008167ffffffffffffffff81111561108c5761108c611b2e565b6040519080825280601f01601f1916602001820160405280156110b6576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846110c057509392505050565b600082600381111561113157611131611ea7565b60ff1661116462ffff00600887901b1676ffffffffffffffffffffffffffffffffffffffff000000601889901b16611f05565b61116e9190611f05565b905061117a82826112e2565b6040518181527f032bc66be43dbccb7487781d168eb7bda224628a3b2c3388bdf69b532a3a16119060200160405180910390a15050505050565b60008383836040516020016111cb93929190611f18565b6040516020818303038152906040528051906020012090509392505050565b60006111f98260085485611447565b9392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611249577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611275576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061129357662386f26fc10000830492506010015b6305f5e10083106112ab576305f5e100830492506008015b61271083106112bf57612710830492506004015b606483106112d1576064830492506002015b600a831061053f5760010192915050565b6112ec828261145d565b73ffffffffffffffffffffffffffffffffffffffff82163b15806113dd57506040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af1158015611395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b99190611b11565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610631565b5050565b60008261145485846115f6565b14949350505050565b73ffffffffffffffffffffffffffffffffffffffff82166114da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610631565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610631565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600081815b845181101561163b576116278286838151811061161a5761161a611e42565b6020026020010151611643565b91508061163381611fb9565b9150506115fb565b509392505050565b600081831061165f5760008281526020849052604090206111f9565b60008381526020839052604090206111f9565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146107b557600080fd5b6000602082840312156116b257600080fd5b81356111f981611672565b60005b838110156116d85781810151838201526020016116c0565b50506000910152565b60208152600082518060208401526117008160408501602087016116bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561174457600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461089757600080fd5b6000806040838503121561178257600080fd5b61178b8361174b565b946020939093013593505050565b6000806000606084860312156117ae57600080fd5b6117b78461174b565b92506117c56020850161174b565b9150604084013590509250925092565b60008083601f8401126117e757600080fd5b50813567ffffffffffffffff8111156117ff57600080fd5b60208301915083602082850101111561181757600080fd5b9250929050565b6000806020838503121561183157600080fd5b823567ffffffffffffffff81111561184857600080fd5b611854858286016117d5565b90969095509350505050565b60006020828403121561187257600080fd5b6111f98261174b565b6000806040838503121561188e57600080fd5b6118978361174b565b9150602083013580151581146118ac57600080fd5b809150509250929050565b6000806000806000608086880312156118cf57600080fd5b6118d88661174b565b94506118e66020870161174b565b935060408601359250606086013567ffffffffffffffff81111561190957600080fd5b611915888289016117d5565b969995985093965092949392505050565b60008083601f84011261193857600080fd5b50813567ffffffffffffffff81111561195057600080fd5b6020830191508360208260051b850101111561181757600080fd5b6000806000806000806060878903121561198457600080fd5b863567ffffffffffffffff8082111561199c57600080fd5b6119a88a838b01611926565b909850965060208901359150808211156119c157600080fd5b6119cd8a838b01611926565b909650945060408901359150808211156119e657600080fd5b506119f389828a01611926565b979a9699509497509295939492505050565b803561ffff8116811461089757600080fd5b80356004811061089757600080fd5b600080600080600060808688031215611a3e57600080fd5b611a478661174b565b9450611a5560208701611a05565b9350611a6360408701611a17565b9250606086013567ffffffffffffffff811115611a7f57600080fd5b61191588828901611926565b60008060408385031215611a9e57600080fd5b611aa78361174b565b9150611ab56020840161174b565b90509250929050565b600181811c90821680611ad257607f821691505b602082108103611b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215611b2357600080fd5b81516111f981611672565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561079f57600081815260208120601f850160051c81016020861015611b845750805b601f850160051c820191505b81811015611ba357828155600101611b90565b505050505050565b67ffffffffffffffff831115611bc357611bc3611b2e565b611bd783611bd18354611abe565b83611b5d565b6000601f841160018114611c295760008515611bf35750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610b0f565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015611c785786850135825560209485019460019092019101611c58565b5086821015611cb3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611d22602083018486611cc5565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152611d6a608083018486611cc5565b979650505050505050565b6000808454611d8381611abe565b60018281168015611d9b5760018114611dce57611dfd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450611dfd565b8860005260208060002060005b85811015611df45781548a820152908401908201611ddb565b50505082870194505b505050508351611e118183602088016116bd565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611e8357600080fd5b6111f982611a05565b600060208284031215611e9e57600080fd5b6111f982611a17565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561053f5761053f611ed6565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b1681527fffff0000000000000000000000000000000000000000000000000000000000008360f01b166014820152600060048310611fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b5060f89190911b601682015260170192915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fea57611fea611ed6565b506001019056fea26469706673582212202ffcc9d2fec2e8fdb9f674b3009022ca16631da930006e9951b435ff047e457464736f6c63430008110033
0x60806040523480156200001157600080fd5b5060405162002586380380620025868339810160408190526200003491620002e9565b6040518060400160405280601e81526020017f4d6163726f20477261647561746520536f756c626f756e6420546f6b656e0000815250604051806040016040528060058152602001641351d4d09560da1b81525081600090816200009991906200044e565b506001620000a882826200044e565b505050620000c5620000bf6200015960201b60201c565b6200015d565b6007620000d384826200044e565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f6836040516200010591906200051a565b60405180910390a160088290556040518281527f42cbc405e4dbf1b691e85b9a34b08ecfcf7a9ad9078bf4d645ccfa1fac11c10b9060200160405180910390a16200015081620001af565b5050506200054f565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001b962000232565b6001600160a01b038116620002245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200022f816200015d565b50565b6006546001600160a01b031633146200028e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200021b565b565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002c3578181015183820152602001620002a9565b50506000910152565b80516001600160a01b0381168114620002e457600080fd5b919050565b600080600060608486031215620002ff57600080fd5b83516001600160401b03808211156200031757600080fd5b818601915086601f8301126200032c57600080fd5b81518181111562000341576200034162000290565b604051601f8201601f19908116603f011681019083821181831017156200036c576200036c62000290565b816040528281528960208487010111156200038657600080fd5b62000399836020830160208801620002a6565b809750505050505060208401519150620003b660408501620002cc565b90509250925092565b600181811c90821680620003d457607f821691505b602082108103620003f557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200044957600081815260208120601f850160051c81016020861015620004245750805b601f850160051c820191505b81811015620004455782815560010162000430565b5050505b505050565b81516001600160401b038111156200046a576200046a62000290565b62000482816200047b8454620003bf565b84620003fb565b602080601f831160018114620004ba5760008415620004a15750858301515b600019600386901b1c1916600185901b17855562000445565b600085815260208120601f198616915b82811015620004eb57888601518255948401946001909101908401620004ca565b50858210156200050a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200053b816040850160208701620002a6565b601f01601f19169190910160400192915050565b612027806200055f6000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806395d89b41116100ee578063d35827a611610097578063dd524f8811610071578063dd524f88146103b7578063e985e9c5146103ca578063ebf0c717146103f8578063f2fde38b1461040157600080fd5b8063d35827a614610376578063d35a780d14610389578063d547cfb7146103af57600080fd5b8063b88d4fde116100c8578063b88d4fde1461033d578063c87b56dd14610350578063d301ef731461036357600080fd5b806395d89b4114610314578063a22cb4651461031c578063b45a3c0e1461032a57600080fd5b806342966c681161015b57806370a082311161013557806370a08231146102ba578063715018a6146102db5780637cb64759146102e35780638da5cb5b146102f657600080fd5b806342966c681461028157806355f804b3146102945780636352211e146102a757600080fd5b8063095ea7b31161018c578063095ea7b31461024b57806323b872dd1461026057806342842e0e1461026e57600080fd5b806301ffc9a7146101b357806306fdde03146101db578063081812fc146101f0575b600080fd5b6101c66101c13660046116a0565b610414565b60405190151581526020015b60405180910390f35b6101e3610545565b6040516101d291906116e1565b6102266101fe366004611732565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61025e61025936600461176f565b6105d3565b005b61025e610259366004611799565b61025e61027c366004611799565b61063a565b61025e61028f366004611732565b6107a4565b61025e6102a236600461181e565b6107b8565b6102266102b5366004611732565b61080b565b6102cd6102c8366004611860565b61089c565b6040519081526020016101d2565b61025e610944565b61025e6102f1366004611732565b610958565b60065473ffffffffffffffffffffffffffffffffffffffff16610226565b6101e361099b565b61025e61025936600461187b565b6101c6610338366004611732565b6109a8565b61025e61034b3660046118b7565b6109bc565b6101e361035e366004611732565b610b16565b61025e61037136600461196b565b610b54565b61025e610384366004611a26565b610c7d565b61039c610397366004611732565b610d36565b60405161ffff90911681526020016101d2565b6101e3610d49565b61039c6103c5366004611732565b610d56565b6101c66103d8366004611a8b565b600560209081526000928352604080842090915290825290205460ff1681565b6102cd60085481565b61025e61040f366004611860565b610d69565b60007fb45a3c0e000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806104a757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806104f357507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061053f57507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000805461055290611abe565b80601f016020809104026020016040519081016040528092919081815260200182805461057e90611abe565b80156105cb5780601f106105a0576101008083540402835291602001916105cb565b820191906000526020600020905b8154815290600101906020018083116105ae57829003601f168201915b505050505081565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e4f4e5f5452414e5346455241424c450000000000000000000000000000000060448201526064015b60405180910390fd5b6106458383836105d3565b73ffffffffffffffffffffffffffffffffffffffff82163b158061073957506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af11580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107159190611b11565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b61079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610631565b505050565b6107ac610e1d565b6107b581610e9e565b50565b6107c0610e1d565b60076107cd828483611bab565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f682826040516107ff929190611d0e565b60405180910390a15050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610631565b919050565b600073ffffffffffffffffffffffffffffffffffffffff821661091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610631565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b61094c610e1d565b6109566000610fe8565b565b610960610e1d565b60088190556040518181527f42cbc405e4dbf1b691e85b9a34b08ecfcf7a9ad9078bf4d645ccfa1fac11c10b9060200160405180910390a150565b6001805461055290611abe565b60006109b38261080b565b50600192915050565b6109c78585856105d3565b73ffffffffffffffffffffffffffffffffffffffff84163b1580610aa957506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a0290610a429033908a90899089908990600401611d2a565b6020604051808303816000875af1158015610a61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a859190611b11565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610631565b5050505050565b6060610b218261080b565b506007610b2d8361105f565b604051602001610b3e929190611d75565b6040516020818303038152906040529050919050565b610b5c610e1d565b848015801590610b6b57508084145b8015610b7657508082145b610bdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e434f4e53495354454e545f4c454e475448000000000000000000000000006044820152606401610631565b60005b81811015610c73576000888883818110610bfb57610bfb611e42565b9050602002016020810190610c109190611860565b9050610c6a81888885818110610c2857610c28611e42565b9050602002016020810190610c3d9190611e71565b878786818110610c4f57610c4f611e42565b9050602002016020810190610c649190611e8c565b8461111d565b50600101610bdf565b5050505050505050565b610cc4610c8b3386866111b4565b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506111ea92505050565b610d2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f50524f4f46000000000000000000000000000000000000006044820152606401610631565b610b0f3385858861111d565b6000610d418261080b565b505060ff1690565b6007805461055290611abe565b6000610d618261080b565b505060081c90565b610d71610e1d565b73ffffffffffffffffffffffffffffffffffffffff8116610e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610631565b6107b581610fe8565b60065473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610631565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610631565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558583526002825280832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6006805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060600061106c83611200565b600101905060008167ffffffffffffffff81111561108c5761108c611b2e565b6040519080825280601f01601f1916602001820160405280156110b6576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846110c057509392505050565b600082600381111561113157611131611ea7565b60ff1661116462ffff00600887901b1676ffffffffffffffffffffffffffffffffffffffff000000601889901b16611f05565b61116e9190611f05565b905061117a82826112e2565b6040518181527f032bc66be43dbccb7487781d168eb7bda224628a3b2c3388bdf69b532a3a16119060200160405180910390a15050505050565b60008383836040516020016111cb93929190611f18565b6040516020818303038152906040528051906020012090509392505050565b60006111f98260085485611447565b9392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611249577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611275576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061129357662386f26fc10000830492506010015b6305f5e10083106112ab576305f5e100830492506008015b61271083106112bf57612710830492506004015b606483106112d1576064830492506002015b600a831061053f5760010192915050565b6112ec828261145d565b73ffffffffffffffffffffffffffffffffffffffff82163b15806113dd57506040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af1158015611395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b99190611b11565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610631565b5050565b60008261145485846115f6565b14949350505050565b73ffffffffffffffffffffffffffffffffffffffff82166114da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610631565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610631565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600081815b845181101561163b576116278286838151811061161a5761161a611e42565b6020026020010151611643565b91508061163381611fb9565b9150506115fb565b509392505050565b600081831061165f5760008281526020849052604090206111f9565b60008381526020839052604090206111f9565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146107b557600080fd5b6000602082840312156116b257600080fd5b81356111f981611672565b60005b838110156116d85781810151838201526020016116c0565b50506000910152565b60208152600082518060208401526117008160408501602087016116bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561174457600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461089757600080fd5b6000806040838503121561178257600080fd5b61178b8361174b565b946020939093013593505050565b6000806000606084860312156117ae57600080fd5b6117b78461174b565b92506117c56020850161174b565b9150604084013590509250925092565b60008083601f8401126117e757600080fd5b50813567ffffffffffffffff8111156117ff57600080fd5b60208301915083602082850101111561181757600080fd5b9250929050565b6000806020838503121561183157600080fd5b823567ffffffffffffffff81111561184857600080fd5b611854858286016117d5565b90969095509350505050565b60006020828403121561187257600080fd5b6111f98261174b565b6000806040838503121561188e57600080fd5b6118978361174b565b9150602083013580151581146118ac57600080fd5b809150509250929050565b6000806000806000608086880312156118cf57600080fd5b6118d88661174b565b94506118e66020870161174b565b935060408601359250606086013567ffffffffffffffff81111561190957600080fd5b611915888289016117d5565b969995985093965092949392505050565b60008083601f84011261193857600080fd5b50813567ffffffffffffffff81111561195057600080fd5b6020830191508360208260051b850101111561181757600080fd5b6000806000806000806060878903121561198457600080fd5b863567ffffffffffffffff8082111561199c57600080fd5b6119a88a838b01611926565b909850965060208901359150808211156119c157600080fd5b6119cd8a838b01611926565b909650945060408901359150808211156119e657600080fd5b506119f389828a01611926565b979a9699509497509295939492505050565b803561ffff8116811461089757600080fd5b80356004811061089757600080fd5b600080600080600060808688031215611a3e57600080fd5b611a478661174b565b9450611a5560208701611a05565b9350611a6360408701611a17565b9250606086013567ffffffffffffffff811115611a7f57600080fd5b61191588828901611926565b60008060408385031215611a9e57600080fd5b611aa78361174b565b9150611ab56020840161174b565b90509250929050565b600181811c90821680611ad257607f821691505b602082108103611b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215611b2357600080fd5b81516111f981611672565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561079f57600081815260208120601f850160051c81016020861015611b845750805b601f850160051c820191505b81811015611ba357828155600101611b90565b505050505050565b67ffffffffffffffff831115611bc357611bc3611b2e565b611bd783611bd18354611abe565b83611b5d565b6000601f841160018114611c295760008515611bf35750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610b0f565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015611c785786850135825560209485019460019092019101611c58565b5086821015611cb3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611d22602083018486611cc5565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152611d6a608083018486611cc5565b979650505050505050565b6000808454611d8381611abe565b60018281168015611d9b5760018114611dce57611dfd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450611dfd565b8860005260208060002060005b85811015611df45781548a820152908401908201611ddb565b50505082870194505b505050508351611e118183602088016116bd565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611e8357600080fd5b6111f982611a05565b600060208284031215611e9e57600080fd5b6111f982611a17565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561053f5761053f611ed6565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b1681527fffff0000000000000000000000000000000000000000000000000000000000008360f01b166014820152600060048310611fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b5060f89190911b601682015260170192915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fea57611fea611ed6565b506001019056fea26469706673582212202ffcc9d2fec2e8fdb9f674b3009022ca16631da930006e9951b435ff047e457464736f6c634300081100330000000000000000000000000000000000000000000000000000000000000060e9679d5ce0229d69318f8aef5bb33997a7d33c7b78ebb7fab2cee7b856e78fc2000000000000000000000000ed03eb80f1e8d5cacbe80b8d1d4db599f32c41a20000000000000000000000000000000000000000000000000000000000000043697066733a2f2f626166796265696574657537716c766b77366b717372676b6737663473616d3774717978793266647471646f34326f6c62737969687232366769652f0000000000000000000000000000000000000000000000000000000000