608060405234801561000f575f80fd5b5060405161358638038061358683398181016040528101906100319190610be0565b6040518060600160405280602c815260200161355a602c91396100598161016f60201b60201c565b506040518060400160405280601581526020017f446567656e2054697020566f75636865722023313500000000000000000000008152506003908161009e9190610e34565b506040518060400160405280600681526020017f5469704431350000000000000000000000000000000000000000000000000000815250600490816100e39190610e34565b506101053360018060405180602001604052805f81525061018260201b60201c565b5f5b8151811015610168575f82828151811061012457610123610f03565b5b602002602001015190505f600190505f6001905061015883828460405180602001604052805f81525061018260201b60201c565b5050508080600101915050610107565b50506112bb565b806002908161017e9190610e34565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036101f2575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016101e99190610f3f565b60405180910390fd5b5f80610204858561022360201b60201c565b9150915061021b5f8784848761025360201b60201c565b505050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b6102658585858561031760201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610310575f6102a76106ad60201b60201c565b905060018451036102f9575f6102c65f866106b460201b90919060201c565b90505f6102dc5f866106b460201b90919060201c565b90506102f28389898585896106c760201b60201c565b505061030e565b61030d81878787878761087660201b60201c565b5b505b5050505050565b805182511461036157815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610358929190610f67565b60405180910390fd5b5f6103706106ad60201b60201c565b90505f5b835181101561056c575f61039182866106b460201b90919060201c565b90505f6103a783866106b460201b90919060201c565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146104ca575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561047657888183856040517f03dee4c500000000000000000000000000000000000000000000000000000000815260040161046d9493929190610f8e565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461055f57805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105579190610ffe565b925050819055505b5050806001019050610374565b506001835103610627575f61058a5f856106b460201b90919060201c565b90505f6105a05f856106b460201b90919060201c565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051610618929190610f67565b60405180910390a450506106a6565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161069d9291906110e8565b60405180910390a45b5050505050565b5f33905090565b5f60208202602084010151905092915050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561086e578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161072795949392919061117d565b6020604051808303815f875af192505050801561076257506040513d601f19601f8201168201806040525081019061075f919061122a565b60015b6107e3573d805f8114610790576040519150601f19603f3d011682016040523d82523d5f602084013e610795565b606091505b505f8151036107db57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016107d29190610f3f565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461086c57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016108639190610f3f565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115610a1d578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016108d6959493929190611255565b6020604051808303815f875af192505050801561091157506040513d601f19601f8201168201806040525081019061090e919061122a565b60015b610992573d805f811461093f576040519150601f19603f3d011682016040523d82523d5f602084013e610944565b606091505b505f81510361098a57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016109819190610f3f565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610a1b57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610a129190610f3f565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610a8082610a3a565b810181811067ffffffffffffffff82111715610a9f57610a9e610a4a565b5b80604052505050565b5f610ab1610a25565b9050610abd8282610a77565b919050565b5f67ffffffffffffffff821115610adc57610adb610a4a565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b1a82610af1565b9050919050565b610b2a81610b10565b8114610b34575f80fd5b50565b5f81519050610b4581610b21565b92915050565b5f610b5d610b5884610ac2565b610aa8565b90508083825260208201905060208402830185811115610b8057610b7f610aed565b5b835b81811015610ba95780610b958882610b37565b845260208401935050602081019050610b82565b5050509392505050565b5f82601f830112610bc757610bc6610a36565b5b8151610bd7848260208601610b4b565b91505092915050565b5f60208284031215610bf557610bf4610a2e565b5b5f82015167ffffffffffffffff811115610c1257610c11610a32565b5b610c1e84828501610bb3565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c7557607f821691505b602082108103610c8857610c87610c31565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610cea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610caf565b610cf48683610caf565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d38610d33610d2e84610d0c565b610d15565b610d0c565b9050919050565b5f819050919050565b610d5183610d1e565b610d65610d5d82610d3f565b848454610cbb565b825550505050565b5f90565b610d79610d6d565b610d84818484610d48565b505050565b5b81811015610da757610d9c5f82610d71565b600181019050610d8a565b5050565b601f821115610dec57610dbd81610c8e565b610dc684610ca0565b81016020851015610dd5578190505b610de9610de185610ca0565b830182610d89565b50505b505050565b5f82821c905092915050565b5f610e0c5f1984600802610df1565b1980831691505092915050565b5f610e248383610dfd565b9150826002028217905092915050565b610e3d82610c27565b67ffffffffffffffff811115610e5657610e55610a4a565b5b610e608254610c5e565b610e6b828285610dab565b5f60209050601f831160018114610e9c575f8415610e8a578287015190505b610e948582610e19565b865550610efb565b601f198416610eaa86610c8e565b5f5b82811015610ed157848901518255600182019150602085019450602081019050610eac565b86831015610eee5784890151610eea601f891682610dfd565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610f3981610b10565b82525050565b5f602082019050610f525f830184610f30565b92915050565b610f6181610d0c565b82525050565b5f604082019050610f7a5f830185610f58565b610f876020830184610f58565b9392505050565b5f608082019050610fa15f830187610f30565b610fae6020830186610f58565b610fbb6040830185610f58565b610fc86060830184610f58565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61100882610d0c565b915061101383610d0c565b925082820190508082111561102b5761102a610fd1565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61106381610d0c565b82525050565b5f611074838361105a565b60208301905092915050565b5f602082019050919050565b5f61109682611031565b6110a0818561103b565b93506110ab8361104b565b805f5b838110156110db5781516110c28882611069565b97506110cd83611080565b9250506001810190506110ae565b5085935050505092915050565b5f6040820190508181035f830152611100818561108c565b90508181036020830152611114818461108c565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61114f8261111d565b6111598185611127565b9350611169818560208601611137565b61117281610a3a565b840191505092915050565b5f60a0820190506111905f830188610f30565b61119d6020830187610f30565b6111aa6040830186610f58565b6111b76060830185610f58565b81810360808301526111c98184611145565b90509695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611209816111d5565b8114611213575f80fd5b50565b5f8151905061122481611200565b92915050565b5f6020828403121561123f5761123e610a2e565b5b5f61124c84828501611216565b91505092915050565b5f60a0820190506112685f830188610f30565b6112756020830187610f30565b8181036040830152611287818661108c565b9050818103606083015261129b818561108c565b905081810360808301526112af8184611145565b90509695505050505050565b612292806112c85f395ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c80634e1273f4116100645780634e1273f41461016957806395d89b4114610199578063a22cb465146101b7578063e985e9c5146101d3578063f242432a146102035761009b565b8062fdd58e1461009f57806301ffc9a7146100cf57806306fdde03146100ff5780630e89341c1461011d5780632eb2c2d61461014d575b5f80fd5b6100b960048036038101906100b49190611613565b61021f565b6040516100c69190611660565b60405180910390f35b6100e960048036038101906100e491906116ce565b610274565b6040516100f69190611713565b60405180910390f35b610107610355565b604051610114919061179c565b60405180910390f35b610137600480360381019061013291906117bc565b6103e1565b604051610144919061179c565b60405180910390f35b610167600480360381019061016291906119d7565b610412565b005b610183600480360381019061017e9190611b62565b6104b9565b6040516101909190611c8f565b60405180910390f35b6101a16105c0565b6040516101ae919061179c565b60405180910390f35b6101d160048036038101906101cc9190611cd9565b61064c565b005b6101ed60048036038101906101e89190611d17565b610662565b6040516101fa9190611713565b60405180910390f35b61021d60048036038101906102189190611d55565b6106f0565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061033e57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061034e575061034d82610797565b5b9050919050565b6003805461036290611e15565b80601f016020809104026020016040519081016040528092919081815260200182805461038e90611e15565b80156103d95780601f106103b0576101008083540402835291602001916103d9565b820191905f5260205f20905b8154815290600101906020018083116103bc57829003601f168201915b505050505081565b60606103ec82610800565b6040516020016103fc9190611f39565b6040516020818303038152906040529050919050565b5f61041b6108ca565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610460575061045e8682610662565b155b156104a45780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161049b929190611f74565b60405180910390fd5b6104b186868686866108d1565b505050505050565b6060815183511461050557815183516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016104fc929190611f9b565b60405180910390fd5b5f835167ffffffffffffffff811115610521576105206117eb565b5b60405190808252806020026020018201604052801561054f5781602001602082028036833780820191505090505b5090505f5b84518110156105b55761058b61057382876109c590919063ffffffff16565b61058683876109d890919063ffffffff16565b61021f565b82828151811061059e5761059d611fc2565b5b602002602001018181525050806001019050610554565b508091505092915050565b600480546105cd90611e15565b80601f01602080910402602001604051908101604052809291908181526020018280546105f990611e15565b80156106445780601f1061061b57610100808354040283529160200191610644565b820191905f5260205f20905b81548152906001019060200180831161062757829003601f168201915b505050505081565b61065e6106576108ca565b83836109eb565b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f6106f96108ca565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561073e575061073c8682610662565b155b156107825780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610779929190611f74565b60405180910390fd5b61078f8686868686610b54565b505050505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60605f600161080e84610c5a565b0190505f8167ffffffffffffffff81111561082c5761082b6117eb565b5b6040519080825280601f01601f19166020018201604052801561085e5781602001600182028036833780820191505090505b5090505f82602001820190505b6001156108bf578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816108b4576108b3611fef565b5b0494505f850361086b575b819350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610941575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610938919061201c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036109b1575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016109a8919061201c565b60405180910390fd5b6109be8585858585610dab565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a5b575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401610a52919061201c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610b479190611713565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610bc4575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610bbb919061201c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610c34575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610c2b919061201c565b60405180910390fd5b5f80610c408585610e57565b91509150610c518787848487610dab565b50505050505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610cb6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381610cac57610cab611fef565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310610cf3576d04ee2d6d415b85acef81000000008381610ce957610ce8611fef565b5b0492506020810190505b662386f26fc100008310610d2257662386f26fc100008381610d1857610d17611fef565b5b0492506010810190505b6305f5e1008310610d4b576305f5e1008381610d4157610d40611fef565b5b0492506008810190505b6127108310610d70576127108381610d6657610d65611fef565b5b0492506004810190505b60648310610d935760648381610d8957610d88611fef565b5b0492506002810190505b600a8310610da2576001810190505b80915050919050565b610db785858585610e87565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610e50575f610df36108ca565b90506001845103610e3f575f610e125f866109d890919063ffffffff16565b90505f610e285f866109d890919063ffffffff16565b9050610e38838989858589611217565b5050610e4e565b610e4d8187878787876113c6565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b8051825114610ed157815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610ec8929190611f9b565b60405180910390fd5b5f610eda6108ca565b90505f5b83518110156110d6575f610efb82866109d890919063ffffffff16565b90505f610f1183866109d890919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611034575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610fe057888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401610fd79493929190612035565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146110c957805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110c191906120a5565b925050819055505b5050806001019050610ede565b506001835103611191575f6110f45f856109d890919063ffffffff16565b90505f61110a5f856109d890919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611182929190611f9b565b60405180910390a45050611210565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516112079291906120d8565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156113be578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161127795949392919061215f565b6020604051808303815f875af19250505080156112b257506040513d601f19601f820116820180604052508101906112af91906121cb565b60015b611333573d805f81146112e0576040519150601f19603f3d011682016040523d82523d5f602084013e6112e5565b606091505b505f81510361132b57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611322919061201c565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113bc57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016113b3919061201c565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561156d578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016114269594939291906121f6565b6020604051808303815f875af192505050801561146157506040513d601f19601f8201168201806040525081019061145e91906121cb565b60015b6114e2573d805f811461148f576040519150601f19603f3d011682016040523d82523d5f602084013e611494565b606091505b505f8151036114da57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114d1919061201c565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461156b57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611562919061201c565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115af82611586565b9050919050565b6115bf816115a5565b81146115c9575f80fd5b50565b5f813590506115da816115b6565b92915050565b5f819050919050565b6115f2816115e0565b81146115fc575f80fd5b50565b5f8135905061160d816115e9565b92915050565b5f80604083850312156116295761162861157e565b5b5f611636858286016115cc565b9250506020611647858286016115ff565b9150509250929050565b61165a816115e0565b82525050565b5f6020820190506116735f830184611651565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6116ad81611679565b81146116b7575f80fd5b50565b5f813590506116c8816116a4565b92915050565b5f602082840312156116e3576116e261157e565b5b5f6116f0848285016116ba565b91505092915050565b5f8115159050919050565b61170d816116f9565b82525050565b5f6020820190506117265f830184611704565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176e8261172c565b6117788185611736565b9350611788818560208601611746565b61179181611754565b840191505092915050565b5f6020820190508181035f8301526117b48184611764565b905092915050565b5f602082840312156117d1576117d061157e565b5b5f6117de848285016115ff565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61182182611754565b810181811067ffffffffffffffff821117156118405761183f6117eb565b5b80604052505050565b5f611852611575565b905061185e8282611818565b919050565b5f67ffffffffffffffff82111561187d5761187c6117eb565b5b602082029050602081019050919050565b5f80fd5b5f6118a461189f84611863565b611849565b905080838252602082019050602084028301858111156118c7576118c661188e565b5b835b818110156118f057806118dc88826115ff565b8452602084019350506020810190506118c9565b5050509392505050565b5f82601f83011261190e5761190d6117e7565b5b813561191e848260208601611892565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115611945576119446117eb565b5b61194e82611754565b9050602081019050919050565b828183375f83830152505050565b5f61197b6119768461192b565b611849565b90508281526020810184848401111561199757611996611927565b5b6119a284828561195b565b509392505050565b5f82601f8301126119be576119bd6117e7565b5b81356119ce848260208601611969565b91505092915050565b5f805f805f60a086880312156119f0576119ef61157e565b5b5f6119fd888289016115cc565b9550506020611a0e888289016115cc565b945050604086013567ffffffffffffffff811115611a2f57611a2e611582565b5b611a3b888289016118fa565b935050606086013567ffffffffffffffff811115611a5c57611a5b611582565b5b611a68888289016118fa565b925050608086013567ffffffffffffffff811115611a8957611a88611582565b5b611a95888289016119aa565b9150509295509295909350565b5f67ffffffffffffffff821115611abc57611abb6117eb565b5b602082029050602081019050919050565b5f611adf611ada84611aa2565b611849565b90508083825260208201905060208402830185811115611b0257611b0161188e565b5b835b81811015611b2b5780611b1788826115cc565b845260208401935050602081019050611b04565b5050509392505050565b5f82601f830112611b4957611b486117e7565b5b8135611b59848260208601611acd565b91505092915050565b5f8060408385031215611b7857611b7761157e565b5b5f83013567ffffffffffffffff811115611b9557611b94611582565b5b611ba185828601611b35565b925050602083013567ffffffffffffffff811115611bc257611bc1611582565b5b611bce858286016118fa565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611c0a816115e0565b82525050565b5f611c1b8383611c01565b60208301905092915050565b5f602082019050919050565b5f611c3d82611bd8565b611c478185611be2565b9350611c5283611bf2565b805f5b83811015611c82578151611c698882611c10565b9750611c7483611c27565b925050600181019050611c55565b5085935050505092915050565b5f6020820190508181035f830152611ca78184611c33565b905092915050565b611cb8816116f9565b8114611cc2575f80fd5b50565b5f81359050611cd381611caf565b92915050565b5f8060408385031215611cef57611cee61157e565b5b5f611cfc858286016115cc565b9250506020611d0d85828601611cc5565b9150509250929050565b5f8060408385031215611d2d57611d2c61157e565b5b5f611d3a858286016115cc565b9250506020611d4b858286016115cc565b9150509250929050565b5f805f805f60a08688031215611d6e57611d6d61157e565b5b5f611d7b888289016115cc565b9550506020611d8c888289016115cc565b9450506040611d9d888289016115ff565b9350506060611dae888289016115ff565b925050608086013567ffffffffffffffff811115611dcf57611dce611582565b5b611ddb888289016119aa565b9150509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611e2c57607f821691505b602082108103611e3f57611e3e611de8565b5b50919050565b5f81905092915050565b7f68747470733a2f2f69706673646174612e6e65742f646567656e323032342f645f8201527f31352f0000000000000000000000000000000000000000000000000000000000602082015250565b5f611ea9602383611e45565b9150611eb482611e4f565b602382019050919050565b5f611ec98261172c565b611ed38185611e45565b9350611ee3818560208601611746565b80840191505092915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f611f23600583611e45565b9150611f2e82611eef565b600582019050919050565b5f611f4382611e9d565b9150611f4f8284611ebf565b9150611f5a82611f17565b915081905092915050565b611f6e816115a5565b82525050565b5f604082019050611f875f830185611f65565b611f946020830184611f65565b9392505050565b5f604082019050611fae5f830185611651565b611fbb6020830184611651565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f60208201905061202f5f830184611f65565b92915050565b5f6080820190506120485f830187611f65565b6120556020830186611651565b6120626040830185611651565b61206f6060830184611651565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af826115e0565b91506120ba836115e0565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f6040820190508181035f8301526120f08185611c33565b905081810360208301526121048184611c33565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6121318261210d565b61213b8185612117565b935061214b818560208601611746565b61215481611754565b840191505092915050565b5f60a0820190506121725f830188611f65565b61217f6020830187611f65565b61218c6040830186611651565b6121996060830185611651565b81810360808301526121ab8184612127565b90509695505050505050565b5f815190506121c5816116a4565b92915050565b5f602082840312156121e0576121df61157e565b5b5f6121ed848285016121b7565b91505092915050565b5f60a0820190506122095f830188611f65565b6122166020830187611f65565b81810360408301526122288186611c33565b9050818103606083015261223c8185611c33565b905081810360808301526122508184612127565b9050969550505050505056fea2646970667358221220ce90f3f76abaf98832ccd8d225e435b0a303fc522f06f3a60b31d21dc9b63b3364736f6c6343000819003368747470733a2f2f69706673646174612e6e65742f646567656e323032342f6431352f7b69647d2e6a736f6e000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000b1000000000000000000000000f8a3a22ea8152a4d3d5a9acc33bc0c88639ff4010000000000000000000000004dba9bfdaaa1c8cf628420d2c52415bcde1772fb000000000000000000000000b262f75dbbff55f14e2a50e2d9d751e213c81ed00000000000000000000000005261f3f067c32e3fad5890d3d74dc7b2c09243fb000000000000000000000000481fc551df1d62024ca2a96ba46f716ed092db9f0000000000000000000000003e6c22b6460d121d52d9bc1d827460d0285cc67b000000000000000000000000b6c1b32be6e6c2b9f3d52415b5dd6c474b4978e9000000000000000000000000aafb148d98b9bfdb8b503c8a069c1cc6906253da000000000000000000000000be4999cd7337d4eca4c12d5d8cdb9ebc7a0d596e0000000000000000000000001602e644d80036ee566e7893bce6009fe63db47a000000000000000000000000e751399cc8a8f953a4d21b449934bbd0d158ccd700000000000000000000000029d8081ccad54454f0ae501ef9c3e05049e3f5a100000000000000000000000064bd75f534a0dba0f441590476a91a4237f06506000000000000000000000000f6f85d9b96a43c87fd29e2facbf644df6bb029b000000000000000000000000079a96ff2b32ee691876697e49b26d0d8d3a6b186000000000000000000000000b4194afee57aeb3d26704a5276182882d152628b000000000000000000000000db7af01beac525a1844cc719371676fc1a9e9fc6000000000000000000000000882f039bdee934dac8d391472f9fd279f9192904000000000000000000000000a9a23441ca25e070be55963d75b20a60a5e399c1000000000000000000000000a1c0c0ff6eaa63e7b0c7bf441fc146afdb08fc7b000000000000000000000000eed7e1c7c9c68611584e8f6230178ce0a48eef7f000000000000000000000000e05adcb63a66e6e590961133694a382936c85d9d000000000000000000000000d8c04694b62da5259a512e95370e6f6ad6a62fe1000000000000000000000000aac8ae92fe2778f6783c141f0c72dabb9378ed36000000000000000000000000a45df3b180ab8843fdf4b3c6573e74fdb397894f0000000000000000000000009f0684ff6a8c91a1d64bd0cc5524ed4065ac22f800000000000000000000000073a73f3f6998db0b7c8ff91eab2a3f6684f3597c0000000000000000000000006e97da38a05b56efeda2e860a54f3c386232a90e00000000000000000000000063b7e3ac2e78a2f14c3f63515c0efb7aa8e017be00000000000000000000000043cffb5b8feaa1aacd460516aa19bbdd3787c4580000000000000000000000003570cc0d3ad24f12abf17cece05b583e598b75e800000000000000000000000017fdda3e0bfa2fecd80addd50e305084df24fda60000000000000000000000001129b11809c6a3f727ee19785d342d5afe30604b000000000000000000000000245d893db5791fe95750514f56e85c87c2e1efdd000000000000000000000000edb75bb786f148db10df45b6390a11f18177ae5a00000000000000000000000087e6fb357f66d51cf618b64478f2a5fed2b7680300000000000000000000000097751be8bacc0182e6817bf8090e2d660fc100c9000000000000000000000000d43e59b6d28f132c28188d7cffbc8b441c3a04eb0000000000000000000000007bab5e07b4c5819b460766ca100a9a978a366b380000000000000000000000004f122d085abe517fcb0d6b08d20d76cc1c39fd670000000000000000000000008036bb84031e60a1bac93078c0e59bbd5e485db900000000000000000000000081ea73acd662e34268e2ed1be7127d2203db54c9000000000000000000000000da62095b85950e6e44b374c27e88c527ed71260e00000000000000000000000027a939ab2d0e15b7444b08f98e73df6a1b5831fa0000000000000000000000003491694c39202b54c21edd136112da37d62a64d300000000000000000000000042444e604a7b78fcf89bf0a16931fb979a4135350000000000000000000000008b3ce91d46829076fc9a6dc4799743f845c50b060000000000000000000000000b608d5a434c274438d59e99580a664e725b3a6f0000000000000000000000008b6b50ba94357eb3dc5f306ad691006220c316fd0000000000000000000000006fafd991989f2256a4b0932bb9f683173dca451b00000000000000000000000025a6cda4f9a971d4d1ebbeb09e1ff695ab5eba590000000000000000000000001eda9140db22ad385f6bd59cb298bf83b0a004a4000000000000000000000000c4f67dea55e19155774dd2c9611738677a687d9a000000000000000000000000a1d092838e037466958bf45ca7f58c13ca90bc17000000000000000000000000e60e899cd48f30e4543648d493b4574cb661fb4b000000000000000000000000168bd8dd4cd3809c0f93192b3f719e1ae5e5c52100000000000000000000000069ac12cb68489a808aa15a822e95f91ff7730664000000000000000000000000f2cffd686079d86885671aa04be712d2fae75f9b000000000000000000000000139777d0a240baffb8fe3ddf972181cbac231a70000000000000000000000000ec4a27e7c5eee76a314d1efbfb2e9f13421d12b50000000000000000000000009a2407b10c213eed3ddd04fb03b96c6d8ebd806b000000000000000000000000f7f7c3e434b40479d0c2b925282e8681e4b602590000000000000000000000002bbd6b29d3909f2f6363cb231c9fb9c1aab3a7620000000000000000000000003ef368a1238ce19b263ed005dbc08318c0f1ecfd000000000000000000000000a2fa6a7ad372012b860a67e94478705b2de81d02000000000000000000000000765f7a83f1051184b09bab01f72d9c1b95e9d6e2000000000000000000000000ec32e732775cc4e38da82f603d859ad1bed2063a00000000000000000000000025659eefd7cae21566a257420bbcb0c8317ef94f00000000000000000000000047bbf62c4326eff3353022e7dd1d9caa5bc978410000000000000000000000005ea72d622c706baa248314a9555c1e1a7c017df500000000000000000000000010d251115ebf955b583adae1b32811816dbd6565000000000000000000000000d66c3603aaeae3d03bc521434aff992a8af6af17000000000000000000000000865be70f4d60b9a23eeaebab449a3dda5b3ba69b00000000000000000000000021bacbefae26ce58118c8a6061adf170c33d5cda000000000000000000000000d668191323dac8bda3d11c13f3dbd4479a3641f5000000000000000000000000d0322d6b09cf71035148b088b00b3a6007c7f5360000000000000000000000002a4b5f63f7c6aa78f5add6dc0e2c1aeb9b3aff44000000000000000000000000dd19fb26d05f27509e27b776c86cc4a35d381d5e00000000000000000000000044d525840117021b870fd55dc0c0c987274fcef50000000000000000000000008be74a1fa04f840a94b17d9887363d863d448a77000000000000000000000000a943b81b4c6ef291c9432b1db8c8f0d21ca98a56000000000000000000000000c3d2a46894cbab35b8fc2c1613f91cc76fdd3419000000000000000000000000ff51cc1519c7a61144d3ff6f883122f150752445000000000000000000000000a233ebb66f6dab52a395c3083037ebe845794ea3000000000000000000000000967cb845f3699e00e49f361e26420f1d7a549d910000000000000000000000006cc19f20350470c66d228f7e9316b7327c3b8da9000000000000000000000000d2d273e1d0417dc02a76484e8196f629d0bf256b00000000000000000000000007a9d9a743eee7792ba89f75576fe3689a6d819e000000000000000000000000ca82f83f5cd30b2caefc21e928e892d1ff1d85ad0000000000000000000000006e947ba373a53bd41139d68e8dfb4fb0472767b6000000000000000000000000acdfde28fda5d02fc2fa3790c92fd69defc36d4a000000000000000000000000ec125008897eb009f55cd2525d3efc4fc9603ae10000000000000000000000008425cb9db22f88bb38f6c64b39c4712e4ca8aa11000000000000000000000000e79190f7f4080e648922f0b09daab6810639cc750000000000000000000000008cecf20682e64a5728fd5e8589e63a986f99ee05000000000000000000000000ccac2098755d8919a4a245cb93c28fd4803d6170000000000000000000000000dc250b829478a9905c2eac34f8dcb0e8b3133cd8000000000000000000000000f5d8cdf77f54cb1adc9bcc70f2c5777f8473b27e0000000000000000000000000afb51f268532abdc517a6c206036ace2d60c0fc000000000000000000000000d404b645c7fef0bc3c8f4fff73fcc61bac5296cf000000000000000000000000a1027632c4dbc44aa37a15f2ec76fe688e7fd83f0000000000000000000000003f8e216c4c4a3abe72654e291240bb7a5c3e0dc80000000000000000000000004e9ad77c37d2adc6be18a1b7d42a07b4fa9a35e500000000000000000000000026fcf07c53d2588bb89e4f0647871b6432a12ea5000000000000000000000000af6c1f709e11473428eed9082caa76673af9aadb000000000000000000000000819e8ca8c93c557184b850e601d89ffd1616da03000000000000000000000000bae0e805b61aadcdbed3e3846792557f075605ee000000000000000000000000fff5086e00bc92ee04826b0f5398ebbdb8ea40000000000000000000000000002e39d8a8744703f18c2e3e6c443bd588fb2e1c94000000000000000000000000767a3604750858fd489a50085d441d2d0d44984d000000000000000000000000fb5beb0145528408d9460888ff075f92f3fe9c0b0000000000000000000000001d4c8282a408d8fe92496cccd1eaa4ff0fdd3b97000000000000000000000000ec1414892f7e424fe135a9aaff8aa6606c1da60c000000000000000000000000c2bfba092ee953317473099a8a3e0e4c70c10b7d0000000000000000000000007c6168f0b879b298f645be9f4fdf84187c1af0b7000000000000000000000000d614d8cf042b745b6976785de4cecde4fc80dd89000000000000000000000000e5c1e81d06084f278f61a77a168b4eca9f4bb2e40000000000000000000000001fa57f49fab6f8139cfc104d2689561b297958c4000000000000000000000000830ee32418ec55eb8821b4d36bd1d57f924f7f970000000000000000000000003ab3efc758bfa9625a35bea168a892bdadaf029700000000000000000000000035b9571ef5eaa24ec626acddde3b02b595a5eb0b00000000000000000000000046e886f3fcb527679abaca2e49272fe92a62348e0000000000000000000000000a5c33a2e22036afdca21c8d7df3252fa7c39e1b00000000000000000000000061c3ffd7d1a8f1d51774a32c100e080c99760a63000000000000000000000000f3782547dea7fb7e3c198d6d90c8c98de2d7022a000000000000000000000000b2eca685836330080e672e87802a7c63f0bc16b50000000000000000000000004b1a08616f29e448eeed30575c5bf0e08d8bac2c0000000000000000000000003330777cc5270db65e7df1d738e989dc16dd49f200000000000000000000000085d63a66098852b35ed5df060a7174a2cc3a6d8a0000000000000000000000007185cb341c39154d16195e22f24dcd971f20878c000000000000000000000000c9a16fb4d7be04e47f237c09d5517a61384e1f6a0000000000000000000000005577a77f7295427ee74dd693ecfb9f62e8f95f2c0000000000000000000000006a3cdbf203fa42616ee22c7d930c2d8f848d094100000000000000000000000024ad49c2ba6f3491dc0c8b421f0487a364c112390000000000000000000000005c543ffecc4f9c1695fb7c854a8403cf797750d1000000000000000000000000f01f5afbc6096dbf31ad6c01dead9670d4bb5cbf00000000000000000000000026de224cbe06fd4321ce5747a176cbbd24773beb000000000000000000000000e2909e43d016a71785e51de11f37658bfaaf7c0f00000000000000000000000065623dcd535b865a94863b6d2443b626deb865920000000000000000000000009cfaa8d5aac08f929138767db6d4a4f3eb415d6f0000000000000000000000006ae5107e26548d58c321f4bf2f77740d53f797fc000000000000000000000000b92eccb3aad420237e2db6768554569a58c566e200000000000000000000000042b3fc1e3e9766f719344a79349b1aec05cc129d0000000000000000000000005cf7f7650b9050c8de30f1df74d7b7026cb19dda00000000000000000000000012f8026072fa10a5796deffe7d54b9ea42ff9ccd000000000000000000000000782bb1c3962cc5c2efde489eb56b1d359ac91be90000000000000000000000008958eabac7e042425dd18459f6ff72864d224dd80000000000000000000000007fd7af9c3936705e1e2f7c80cb2d9b88c6f012ef000000000000000000000000f216dc0588b26b074063f934587afe876546c92b0000000000000000000000000e0e2b8791304f290ee96dff1396905dd16e8c68000000000000000000000000e51c597afd98d11afdfd7dedf82ccd6c05fce238000000000000000000000000dd32b431432b097bf126faeb6cf9148e091e6f8d000000000000000000000000adab14af301b68e72287a3d27ce53bcb31c2810300000000000000000000000084d71b85434911f90804941d13d71e587d83f540000000000000000000000000cc19709175f4fb235ee8cba68eb2798d7aee7ee20000000000000000000000000f74fa649a61e3c21073fb0e7f773e181538c27c00000000000000000000000019b1e26c6845a237304156ad2e128589b04ffcff0000000000000000000000005a95dd4c4e88a803fa12054d1a876b26b994dd09000000000000000000000000a485d642b97b6ec47d1058950a42cd97c00f36c8000000000000000000000000b89ef8a2d6a4945322c7ba697aafe9f6d8b8a6c40000000000000000000000003f21def91eaae16c7ca5b04e846cdeaa23ae971a00000000000000000000000044a72f8f4690fa07e668f18b67bbb1aea4740bc0000000000000000000000000407f020e8c87e6d9d4366fd484fcf573e01bbb3600000000000000000000000037a6156e4a6e8b60b2415af040546cf5e91699bd000000000000000000000000c86f7ccee8aad2efc0b25759aa153d5220d341ec0000000000000000000000003fbed3b403a680ce42b2d24d0ad54be7d718058f000000000000000000000000a95984e62da049cd67cf2bb8568b4dcc36ce4e27000000000000000000000000165754554dbc59a953fc3307513f9dc334ddce530000000000000000000000007e799c969ea204a8b5f4d938407d9dc64dcc09e5000000000000000000000000080f315004782bd0103678c0791a6866903fb8be0000000000000000000000008fa46b1b1f9dfe3edea9e41bc7be5a27defd775d000000000000000000000000a36da89068a55db12d63678ed9b48b7a7410a28d000000000000000000000000c3b52d51b493b5da4d51627929f4fc38fd51eaba000000000000000000000000ead6dddc311b812402aa49ac290ea5e5329365b80000000000000000000000005b1430e8483a836d38c5ec5230234c5d7595190b000000000000000000000000ce0a0aecd148ea38023e9b275e5bcf20dd19f96e0000000000000000000000000cdaff901d6d0cc94cdad141996b6b0bc8b89bc0