60c060405234801562000010575f80fd5b506040516200455238038062004552833981810160405281019062000036919062000448565b6040518060400160405280600781526020017f506570656d6f6e000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f504550454d4f4e00000000000000000000000000000000000000000000000000815250848688805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000119575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001109190620004dd565b60405180910390fd5b6200012a816200027760201b60201c565b5084600290816200013c919062000753565b5083600390816200014e919062000753565b508260ff1660808160ff1681525050608051600a6200016e9190620009b4565b826200017b919062000a04565b60a0818152505050505050505f600d5f6101000a81548160ff0219169083151502179055506001600e8190555082600a620001b79190620009b4565b84620001c4919062000a04565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555082600a620002149190620009b4565b8262000221919062000a04565b60108190555082600a620002369190620009b4565b8162000243919062000a04565b60118190555082600a620002589190620009b4565b600a62000266919062000a04565b601281905550505050505062000a4e565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620002ac81620002af60201b60201c565b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200039f8262000374565b9050919050565b620003b18162000393565b8114620003bc575f80fd5b50565b5f81519050620003cf81620003a6565b92915050565b5f819050919050565b620003e981620003d5565b8114620003f4575f80fd5b50565b5f815190506200040781620003de565b92915050565b5f60ff82169050919050565b62000424816200040d565b81146200042f575f80fd5b50565b5f81519050620004428162000419565b92915050565b5f805f805f60a0868803121562000464576200046362000370565b5b5f6200047388828901620003bf565b95505060206200048688828901620003f7565b9450506040620004998882890162000432565b9350506060620004ac88828901620003f7565b9250506080620004bf88828901620003f7565b9150509295509295909350565b620004d78162000393565b82525050565b5f602082019050620004f25f830184620004cc565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200057457607f821691505b6020821081036200058a57620005896200052f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005b1565b620005fa8683620005b1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200063b620006356200062f84620003d5565b62000612565b620003d5565b9050919050565b5f819050919050565b62000656836200061b565b6200066e620006658262000642565b848454620005bd565b825550505050565b5f90565b6200068462000676565b620006918184846200064b565b505050565b5b81811015620006b857620006ac5f826200067a565b60018101905062000697565b5050565b601f8211156200070757620006d18162000590565b620006dc84620005a2565b81016020851015620006ec578190505b62000704620006fb85620005a2565b83018262000696565b50505b505050565b5f82821c905092915050565b5f620007295f19846008026200070c565b1980831691505092915050565b5f62000743838362000718565b9150826002028217905092915050565b6200075e82620004f8565b67ffffffffffffffff8111156200077a576200077962000502565b5b6200078682546200055c565b62000793828285620006bc565b5f60209050601f831160018114620007c9575f8415620007b4578287015190505b620007c0858262000736565b8655506200082f565b601f198416620007d98662000590565b5f5b828110156200080257848901518255600182019150602085019450602081019050620007db565b868310156200082257848901516200081e601f89168262000718565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008c15780860481111562000899576200089862000837565b5b6001851615620008a95780820291505b8081029050620008b98562000864565b945062000879565b94509492505050565b5f82620008db5760019050620009ad565b81620008ea575f9050620009ad565b81600181146200090357600281146200090e5762000944565b6001915050620009ad565b60ff84111562000923576200092262000837565b5b8360020a9150848211156200093d576200093c62000837565b5b50620009ad565b5060208310610133831016604e8410600b84101617156200097e5782820a90508381111562000978576200097762000837565b5b620009ad565b6200098d848484600162000870565b92509050818404811115620009a757620009a662000837565b5b81810290505b9392505050565b5f620009c082620003d5565b9150620009cd836200040d565b9250620009fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008ca565b905092915050565b5f62000a1082620003d5565b915062000a1d83620003d5565b925082820262000a2d81620003d5565b9150828204841483151762000a475762000a4662000837565b5b5092915050565b60805160a051613adb62000a775f395f610a8801525f81816112cf0152611c460152613adb5ff3fe608060405234801561000f575f80fd5b5060043610610225575f3560e01c8063715018a61161012e578063c87b56dd116100b6578063e30c39781161007a578063e30c39781461063f578063e985e9c51461065d578063f0306ea41461068d578063f2fde38b14610697578063f349b173146106b357610225565b8063c87b56dd14610575578063d547cfb7146105a5578063dd62ed3e146105c3578063e0df5b6f146105f3578063e2d6f33a1461060f57610225565b80639b19251a116100fd5780639b19251a146104d3578063a22cb46514610503578063a9059cbb1461051f578063b88d4fde1461054f578063c6a6035a1461056b57610225565b8063715018a61461048357806379ba50971461048d5780638da5cb5b1461049757806395d89b41146104b557610225565b80634f02c420116101b1578063589210d911610180578063589210d9146103c95780635c975abb146103e75780636352211e146104055780636caae8321461043557806370a082311461045357610225565b80634f02c420146103555780634f91e48c14610373578063504334c21461039157806353d6fd59146103ad57610225565b80631e70b6df116101f85780631e70b6df146102c5578063207add91146102e357806323b872dd146102ff578063313ce5671461031b57806342842e0e1461033957610225565b806306fdde0314610229578063081812fc14610247578063095ea7b31461027757806318160ddd146102a7575b5f80fd5b6102316106e3565b60405161023e9190612b55565b60405180910390f35b610261600480360381019061025c9190612bb9565b61076f565b60405161026e9190612c23565b60405180910390f35b610291600480360381019061028c9190612c66565b61079f565b60405161029e9190612cbe565b60405180910390f35b6102af610a86565b6040516102bc9190612ce6565b60405180910390f35b6102cd610aaa565b6040516102da9190612cbe565b60405180910390f35b6102fd60048036038101906102f89190612cff565b610abc565b005b61031960048036038101906103149190612d3d565b610ad6565b005b6103236112cd565b6040516103309190612da8565b60405180910390f35b610353600480360381019061034e9190612d3d565b6112f1565b005b61035d611420565b60405161036a9190612ce6565b60405180910390f35b61037b611426565b6040516103889190612ce6565b60405180910390f35b6103ab60048036038101906103a69190612eed565b61142c565b005b6103c760048036038101906103c29190612f8d565b611442565b005b6103d16114a2565b6040516103de9190612ce6565b60405180910390f35b6103ef6114a8565b6040516103fc9190612cbe565b60405180910390f35b61041f600480360381019061041a9190612bb9565b6114bd565b60405161042c9190612c23565b60405180910390f35b61043d61155b565b60405161044a9190612ce6565b60405180910390f35b61046d60048036038101906104689190612fcb565b611561565b60405161047a9190612ce6565b60405180910390f35b61048b611576565b005b610495611589565b005b61049f611617565b6040516104ac9190612c23565b60405180910390f35b6104bd61163e565b6040516104ca9190612b55565b60405180910390f35b6104ed60048036038101906104e89190612fcb565b6116ca565b6040516104fa9190612cbe565b60405180910390f35b61051d60048036038101906105189190612f8d565b6116e7565b005b61053960048036038101906105349190612c66565b6117df565b6040516105469190612cbe565b60405180910390f35b61056960048036038101906105649190613053565b6117f3565b005b610573611928565b005b61058f600480360381019061058a9190612bb9565b61194c565b60405161059c9190612b55565b60405180910390f35b6105ad6119aa565b6040516105ba9190612b55565b60405180910390f35b6105dd60048036038101906105d891906130d7565b611a36565b6040516105ea9190612ce6565b60405180910390f35b61060d60048036038101906106089190613115565b611a56565b005b61062960048036038101906106249190612fcb565b611a71565b6040516106369190612ce6565b60405180910390f35b610647611a86565b6040516106549190612c23565b60405180910390f35b610677600480360381019061067291906130d7565b611aae565b6040516106849190612cbe565b60405180910390f35b610695611ad8565b005b6106b160048036038101906106ac9190612fcb565b611afb565b005b6106cd60048036038101906106c89190612fcb565b611ba7565b6040516106da9190612ce6565b60405180910390f35b600280546106f090613189565b80601f016020809104026020016040519081016040528092919081815260200182805461071c90613189565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b505050505081565b6007602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60045482111580156107b157505f82115b15610999575f60095f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156108a8575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156108df576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360075f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161098b9190612ce6565b60405180910390a350610a7c565b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a739190612ce6565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60155f9054906101000a900460ff1681565b610ac4611bbc565b81601081905550806011819055505050565b600454811161118e5760095f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b74576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bd9576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610c97575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610cff575060075f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610d36576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d3e611c43565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d8991906131e6565b92505081905550610d98611c43565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610eee91906131e6565b81548110610eff57610efe613219565b5b905f5260205f200154905080600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600b5f8581526020019081526020015f205481548110610f6b57610f6a613219565b5b905f5260205f200181905550600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610fc457610fc3613246565b5b600190038181905f5260205f20015f90559055600b5f8381526020019081526020015f2054600b5f8381526020019081526020015f2081905550600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506110ac91906131e6565b600b5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487611173611c43565b6040516111809190612ce6565b60405180910390a3506112c8565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112ba57818161123d91906131e6565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6112c5848484611c76565b50505b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6112fc838383610ad6565b5f8273ffffffffffffffffffffffffffffffffffffffff163b141580156113e4575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401611382939291906132a6565b6020604051808303815f875af115801561139e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c29190613343565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b1561141b576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60045481565b60115481565b611434611bbc565b61143e8282611f34565b5050565b61144a611bbc565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60105481565b5f600d5f9054906101000a900460ff16905090565b5f60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611556576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60125481565b6005602052805f5260405f205f915090505481565b61157e611bbc565b6115875f611f58565b565b5f611592611f88565b90508073ffffffffffffffffffffffffffffffffffffffff166115b3611a86565b73ffffffffffffffffffffffffffffffffffffffff161461160b57806040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116029190612c23565b60405180910390fd5b61161481611f58565b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003805461164b90613189565b80601f016020809104026020016040519081016040528092919081815260200182805461167790613189565b80156116c25780601f10611699576101008083540402835291602001916116c2565b820191905f5260205f20905b8154815290600101906020018083116116a557829003601f168201915b505050505081565b600c602052805f5260405f205f915054906101000a900460ff1681565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117d39190612cbe565b60405180910390a35050565b5f6117eb338484611c76565b905092915050565b6117fe858585610ad6565b5f8473ffffffffffffffffffffffffffffffffffffffff163b141580156118ea575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b815260040161188895949392919061339a565b6020604051808303815f875af11580156118a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c89190613343565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611921576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b611930611bbc565b600160155f6101000a81548160ff021916908315150217905550565b60605f600f805461195c90613189565b9050116119775760405180602001604052805f8152506119a3565b600f61198283611f8f565b6040516020016119939291906134d8565b6040516020818303038152906040525b9050919050565b600f80546119b790613189565b80601f01602080910402602001604051908101604052809291908181526020018280546119e390613189565b8015611a2e5780601f10611a0557610100808354040283529160200191611a2e565b820191905f5260205f20905b815481529060010190602001808311611a1157829003601f168201915b505050505081565b6006602052815f5260405f20602052805f5260405f205f91509150505481565b611a5e611bbc565b80600f9081611a6d9190613695565b5050565b6013602052805f5260405f205f915090505481565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b611ae0611bbc565b5f60155f6101000a81548160ff021916908315150217905550565b611b03611bbc565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611b62611617565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6014602052805f5260405f205f915090505481565b611bc4611f88565b73ffffffffffffffffffffffffffffffffffffffff16611be2611617565b73ffffffffffffffffffffffffffffffffffffffff1614611c4157611c05611f88565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611c389190612c23565b60405180910390fd5b565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a611c719190613893565b905090565b5f611c7f612059565b60155f9054906101000a900460ff1615611cd8576012548210611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce90613927565b60405180910390fd5b5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611dfc578160145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611d729190613945565b9250508190555060115460145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df2906139c2565b60405180910390fd5b5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611f20578160135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611e969190613945565b9250508190555060105460135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1690613a2a565b60405180910390fd5b5b611f2b84848461209a565b90509392505050565b8160029081611f439190613695565b508060039081611f539190613695565b505050565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611f85816123de565b50565b5f33905090565b60605f6001611f9d8461249f565b0190505f8167ffffffffffffffff811115611fbb57611fba612dc9565b5b6040519080825280601f01601f191660200182016040528015611fed5781602001600182028036833780820191505090505b5090505f82602001820190505b60011561204e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161204357612042613a48565b5b0494505f8503611ffa575b819350505050919050565b6120616114a8565b15612098576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f806120a4611c43565b90505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461217491906131e6565b925050819055508460055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612298575f8360055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225d9190613a75565b84846122699190613a75565b61227391906131e6565b90505f5b8181101561229557612288896125f0565b8080600101915050612277565b50505b600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661236b575f83826122f39190613a75565b8460055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233c9190613a75565b61234691906131e6565b90505f5b818110156123685761235b88612835565b808060010191505061234a565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487876040516123c89190612ce6565b60405180910390a3600193505050509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106124fb577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816124f1576124f0613a48565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612538576d04ee2d6d415b85acef8100000000838161252e5761252d613a48565b5b0492506020810190505b662386f26fc10000831061256757662386f26fc10000838161255d5761255c613a48565b5b0492506010810190505b6305f5e1008310612590576305f5e100838161258657612585613a48565b5b0492506008810190505b61271083106125b55761271083816125ab576125aa613a48565b5b0492506004810190505b606483106125d857606483816125ce576125cd613a48565b5b0492506002810190505b600a83106125e7576001810190505b80915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612655576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506126e091906131e6565b815481106126f1576126f0613219565b5b905f5260205f2001549050600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061274957612748613246565b5b600190038181905f5260205f20015f90559055600b5f8281526020019081526020015f205f905560095f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b61283d612059565b61284681612849565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128ae576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045f81548092919060010191905055505f60045490505f73ffffffffffffffffffffffffffffffffffffffff1660095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461295a576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050612a5791906131e6565b600b5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b02578082015181840152602081019050612ae7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b2782612acb565b612b318185612ad5565b9350612b41818560208601612ae5565b612b4a81612b0d565b840191505092915050565b5f6020820190508181035f830152612b6d8184612b1d565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612b9881612b86565b8114612ba2575f80fd5b50565b5f81359050612bb381612b8f565b92915050565b5f60208284031215612bce57612bcd612b7e565b5b5f612bdb84828501612ba5565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c0d82612be4565b9050919050565b612c1d81612c03565b82525050565b5f602082019050612c365f830184612c14565b92915050565b612c4581612c03565b8114612c4f575f80fd5b50565b5f81359050612c6081612c3c565b92915050565b5f8060408385031215612c7c57612c7b612b7e565b5b5f612c8985828601612c52565b9250506020612c9a85828601612ba5565b9150509250929050565b5f8115159050919050565b612cb881612ca4565b82525050565b5f602082019050612cd15f830184612caf565b92915050565b612ce081612b86565b82525050565b5f602082019050612cf95f830184612cd7565b92915050565b5f8060408385031215612d1557612d14612b7e565b5b5f612d2285828601612ba5565b9250506020612d3385828601612ba5565b9150509250929050565b5f805f60608486031215612d5457612d53612b7e565b5b5f612d6186828701612c52565b9350506020612d7286828701612c52565b9250506040612d8386828701612ba5565b9150509250925092565b5f60ff82169050919050565b612da281612d8d565b82525050565b5f602082019050612dbb5f830184612d99565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612dff82612b0d565b810181811067ffffffffffffffff82111715612e1e57612e1d612dc9565b5b80604052505050565b5f612e30612b75565b9050612e3c8282612df6565b919050565b5f67ffffffffffffffff821115612e5b57612e5a612dc9565b5b612e6482612b0d565b9050602081019050919050565b828183375f83830152505050565b5f612e91612e8c84612e41565b612e27565b905082815260208101848484011115612ead57612eac612dc5565b5b612eb8848285612e71565b509392505050565b5f82601f830112612ed457612ed3612dc1565b5b8135612ee4848260208601612e7f565b91505092915050565b5f8060408385031215612f0357612f02612b7e565b5b5f83013567ffffffffffffffff811115612f2057612f1f612b82565b5b612f2c85828601612ec0565b925050602083013567ffffffffffffffff811115612f4d57612f4c612b82565b5b612f5985828601612ec0565b9150509250929050565b612f6c81612ca4565b8114612f76575f80fd5b50565b5f81359050612f8781612f63565b92915050565b5f8060408385031215612fa357612fa2612b7e565b5b5f612fb085828601612c52565b9250506020612fc185828601612f79565b9150509250929050565b5f60208284031215612fe057612fdf612b7e565b5b5f612fed84828501612c52565b91505092915050565b5f80fd5b5f80fd5b5f8083601f84011261301357613012612dc1565b5b8235905067ffffffffffffffff8111156130305761302f612ff6565b5b60208301915083600182028301111561304c5761304b612ffa565b5b9250929050565b5f805f805f6080868803121561306c5761306b612b7e565b5b5f61307988828901612c52565b955050602061308a88828901612c52565b945050604061309b88828901612ba5565b935050606086013567ffffffffffffffff8111156130bc576130bb612b82565b5b6130c888828901612ffe565b92509250509295509295909350565b5f80604083850312156130ed576130ec612b7e565b5b5f6130fa85828601612c52565b925050602061310b85828601612c52565b9150509250929050565b5f6020828403121561312a57613129612b7e565b5b5f82013567ffffffffffffffff81111561314757613146612b82565b5b61315384828501612ec0565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806131a057607f821691505b6020821081036131b3576131b261315c565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131f082612b86565b91506131fb83612b86565b9250828203905081811115613213576132126131b9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f6132915f83613273565b915061329c82613283565b5f82019050919050565b5f6080820190506132b95f830186612c14565b6132c66020830185612c14565b6132d36040830184612cd7565b81810360608301526132e481613286565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613322816132ee565b811461332c575f80fd5b50565b5f8151905061333d81613319565b92915050565b5f6020828403121561335857613357612b7e565b5b5f6133658482850161332f565b91505092915050565b5f6133798385613273565b9350613386838584612e71565b61338f83612b0d565b840190509392505050565b5f6080820190506133ad5f830188612c14565b6133ba6020830187612c14565b6133c76040830186612cd7565b81810360608301526133da81848661336e565b90509695505050505050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461340e81613189565b61341881866133e6565b9450600182165f8114613432576001811461344757613479565b60ff1983168652811515820286019350613479565b613450856133f0565b5f5b8381101561347157815481890152600182019150602081019050613452565b838801955050505b50505092915050565b5f61348c82612acb565b61349681856133e6565b93506134a6818560208601612ae5565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000815250565b5f6134e38285613402565b91506134ef8284613482565b91506134fa826134b2565b6005820191508190509392505050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026135547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613519565b61355e8683613519565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61359961359461358f84612b86565b613576565b612b86565b9050919050565b5f819050919050565b6135b28361357f565b6135c66135be826135a0565b848454613525565b825550505050565b5f90565b6135da6135ce565b6135e58184846135a9565b505050565b5b81811015613608576135fd5f826135d2565b6001810190506135eb565b5050565b601f82111561364d5761361e816133f0565b6136278461350a565b81016020851015613636578190505b61364a6136428561350a565b8301826135ea565b50505b505050565b5f82821c905092915050565b5f61366d5f1984600802613652565b1980831691505092915050565b5f613685838361365e565b9150826002028217905092915050565b61369e82612acb565b67ffffffffffffffff8111156136b7576136b6612dc9565b5b6136c18254613189565b6136cc82828561360c565b5f60209050601f8311600181146136fd575f84156136eb578287015190505b6136f5858261367a565b86555061375c565b601f19841661370b866133f0565b5f5b828110156137325784890151825560018201915060208501945060208101905061370d565b8683101561374f578489015161374b601f89168261365e565b8355505b6001600288020188555050505b505050505050565b5f8160011c9050919050565b5f808291508390505b60018511156137b957808604811115613795576137946131b9565b5b60018516156137a45780820291505b80810290506137b285613764565b9450613779565b94509492505050565b5f826137d1576001905061388c565b816137de575f905061388c565b81600181146137f457600281146137fe5761382d565b600191505061388c565b60ff8411156138105761380f6131b9565b5b8360020a915084821115613827576138266131b9565b5b5061388c565b5060208310610133831016604e8410600b84101617156138625782820a90508381111561385d5761385c6131b9565b5b61388c565b61386f8484846001613770565b92509050818404811115613886576138856131b9565b5b81810290505b9392505050565b5f61389d82612b86565b91506138a883612d8d565b92506138d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137c2565b905092915050565b7f657863656564207478206c696d697400000000000000000000000000000000005f82015250565b5f613911600f83612ad5565b915061391c826138dd565b602082019050919050565b5f6020820190508181035f83015261393e81613905565b9050919050565b5f61394f82612b86565b915061395a83612b86565b9250828201905080821115613972576139716131b9565b5b92915050565b7f6e6f7420616c6c6f77656420616e796d6f726520746f2073656c6c00000000005f82015250565b5f6139ac601b83612ad5565b91506139b782613978565b602082019050919050565b5f6020820190508181035f8301526139d9816139a0565b9050919050565b7f6e6f7420616c6c6f77656420616e796d6f726520746f206275790000000000005f82015250565b5f613a14601a83612ad5565b9150613a1f826139e0565b602082019050919050565b5f6020820190508181035f830152613a4181613a08565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a7f82612b86565b9150613a8a83612b86565b925082613a9a57613a99613a48565b5b82820490509291505056fea2646970667358221220405737b973eb5b84f6796ca1ae3fbce4db61d84e592bae7f870a0fac6cbf8d5f64736f6c63430008180033000000000000000000000000a9a6d58e2970bdfbf92693b739f9154f21385e0e0000000000000000000000000000000000000000000000000000000000003a98000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064