{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"confirmNewCallingContractAdmin","inputs":[{"name":"callingContractAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"confirmNewForeignCallAdmin","inputs":[{"name":"foreignCallContract","type":"address","internalType":"address"},{"name":"functionSignature","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"confirmNewPolicyAdmin","inputs":[{"name":"policyId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"generatePolicyAdminRole","inputs":[{"name":"policyId","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getRoleMember","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getRoleMemberCount","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleMembers","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"grantCallingContractRole","inputs":[{"name":"_callingContract","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"grantCallingContractRoleAccessControl","inputs":[{"name":"_callingContract","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"grantCallingContractRoleOwnable","inputs":[{"name":"_callingContract","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"grantForeignCallAdminRole","inputs":[{"name":"_foreignCallContract","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"},{"name":"_functionSignature","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isCallingContractAdmin","inputs":[{"name":"_callingContract","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isForeignCallAdmin","inputs":[{"name":"_foreignCallContract","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"},{"name":"_functionSignature","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPolicyAdmin","inputs":[{"name":"policyId","type":"uint256","internalType":"uint256"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proposeNewCallingContractAdmin","inputs":[{"name":"callingContractAddress","type":"address","internalType":"address"},{"name":"newCallingContractAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proposeNewForeignCallAdmin","inputs":[{"name":"foreignCallContract","type":"address","internalType":"address"},{"name":"newForeignCallContractAdmin","type":"address","internalType":"address"},{"name":"functionSignature","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proposeNewPolicyAdmin","inputs":[{"name":"newPolicyAdmin","type":"address","internalType":"address"},{"name":"policyId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceCallingContractAdminRole","inputs":[{"name":"callingContract","type":"address","internalType":"address"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceForeignCallAdminRole","inputs":[{"name":"_foreignCallContract","type":"address","internalType":"address"},{"name":"_functionSignature","type":"bytes4","internalType":"bytes4"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renouncePolicyAdminRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"},{"name":"policyId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"},{"name":"policyId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"CallingContractAdminRoleConfirmed","inputs":[{"name":"callingContract","type":"address","indexed":true,"internalType":"address"},{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CallingContractAdminRoleGranted","inputs":[{"name":"callingContract","type":"address","indexed":true,"internalType":"address"},{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CallingContractAdminRoleProposed","inputs":[{"name":"callingContract","type":"address","indexed":true,"internalType":"address"},{"name":"proposedAdminAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CallingContractAdminRoleRenounced","inputs":[{"name":"callingContract","type":"address","indexed":true,"internalType":"address"},{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ForeignCallAdminRoleConfirmed","inputs":[{"name":"foreignCallContract","type":"address","indexed":true,"internalType":"address"},{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ForeignCallAdminRoleGranted","inputs":[{"name":"foreignCallContract","type":"address","indexed":true,"internalType":"address"},{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ForeignCallAdminRoleProposed","inputs":[{"name":"foreignCallContract","type":"address","indexed":true,"internalType":"address"},{"name":"proposedAdminAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ForeignCallPermissionsRenounced","inputs":[{"name":"foreignCallContract","type":"address","indexed":true,"internalType":"address"},{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"PolicyAdminRoleConfirmed","inputs":[{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"},{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PolicyAdminRoleGranted","inputs":[{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"},{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PolicyAdminRoleProposed","inputs":[{"name":"proposedAdminAddress","type":"address","indexed":true,"internalType":"address"},{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PolicyAdminRoleRenounced","inputs":[{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"},{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PolicyAdminRoleRevoked","inputs":[{"name":"adminAddress","type":"address","indexed":true,"internalType":"address"},{"name":"policyId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f5ffd5b5060016002556130af806100215f395ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c8063804ba97d116100f3578063c976afd611610093578063d547741f1161006e578063d547741f14610250578063d92f90fc146103fe578063dda335ae14610411578063e605bd7c14610424575f5ffd5b8063c976afd6146103c5578063ca15c873146103d8578063d27efca5146103eb575f5ffd5b806391d14854116100ce57806391d1485414610348578063a217fddf1461038b578063a3246ad314610392578063a8c014f4146103b2575f5ffd5b8063804ba97d146102ea5780639010d07c146102fd578063901cee1114610335575f5ffd5b80633262d3d21161015e57806341a2b7ae1161013957806341a2b7ae1461029e5780635f9a9c2b146102b15780636e9ad756146102c457806370aca092146102d7575f5ffd5b80633262d3d21461027857806336568abe14610250578063393093df1461028b575f5ffd5b8063261b024511610199578063261b02451461022a5780632f16a3581461023d5780632f2ff15d146102505780632f46a2e714610265575f5ffd5b806301ffc9a7146101bf5780631929cb64146101e7578063248a9ca314610208575b5f5ffd5b6101d26101cd366004612b11565b610437565b60405190151581526020015b60405180910390f35b6101fa6101f5366004612b4b565b610492565b6040519081526020016101de565b6101fa610216366004612b79565b5f9081526020819052604090206001015490565b6101fa610238366004612b90565b61057c565b6101fa61024b366004612b90565b61069d565b61026361025e366004612b4b565b610791565b005b610263610273366004612bbc565b6107f6565b610263610286366004612bf1565b6108cd565b610263610299366004612c37565b61097c565b6101d26102ac366004612c6a565b610d89565b6102636102bf366004612cae565b610df5565b6102636102d2366004612c6a565b610fb4565b6101d26102e5366004612b90565b61113c565b6101fa6102f8366004612b90565b61119d565b61031061030b366004612cc9565b61120f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b6101d2610343366004612b4b565b611226565b6101d2610356366004612b4b565b5f9182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101fa5f81565b6103a56103a0366004612b79565b611254565b6040516101de9190612ce9565b6102636103c0366004612b90565b61126d565b6102636103d3366004612b79565b6113f2565b6101fa6103e6366004612b79565b6115cc565b6102636103f9366004612bbc565b6115e2565b61026361040c366004612d41565b6116b4565b6101fa61041f366004612c6a565b61181b565b610263610432366004612b90565b611e07565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061048c575061048c82611eaf565b92915050565b5f61049b611f45565b3330146104f757604051806060016040528060228152602001612fa3602291396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b60405180910390fd5b5f610522847f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b905061052e8184612060565b604051849073ffffffffffffffffffffffffffffffffffffffff8516907f5d8751116265daef12864a389d3a862fedd252ff2c64f06702579fbd7813e579905f90a3905061048c6001600255565b5f610585611f45565b6040517f91d148540000000000000000000000000000000000000000000000000000000081527f43616c6c696e675f436f6e74726163745f41646d696e00000000000000000000600482015233602482015273ffffffffffffffffffffffffffffffffffffffff8416906391d1485490604401602060405180830381865afa158015610613573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106379190612dbe565b610687576040518060600160405280603d815260200161303d603d91396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b6106918383612184565b905061048c6001600255565b5f6106a6611f45565b8273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107139190612ddd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610687576040518060600160405280603d815260200161303d603d91396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b604080518082018252601181527f46756e6374696f6e2064697361626c6564000000000000000000000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6107fe611f45565b6108088183611226565b1561087257604080518082018252601981527f42656c6f77204d696e2041646d696e205468726573686f6c6400000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b61087c8383612391565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fa18e7770c8bee6a49fd728f59c26eb9a0293f6ab4195bb3672cc26ea098644ba905f90a36108c86001600255565b505050565b6108d5611f45565b5f61090184847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b905061090d8183612391565b6040517fffffffff0000000000000000000000000000000000000000000000000000000084169073ffffffffffffffffffffffffffffffffffffffff8616907f0d70a7b0df1e2f2bb2c5f5f88d18b819596a6b28cc7f884d61850ee7b4dba25e905f90a3506108c86001600255565b5f6109b16109ab84847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b5f61120f565b90506109fe6109e184847f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006123ea565b5f9081526020818152604080832033845290915290205460ff1690565b610a6757604080518082018252601f81527f4e6f742050726f706f73656420466f726569676e2043616c6c2041646d696e00602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b610a9b610a9584847f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006123ea565b3361252c565b50610ad0610aca84847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b8261252c565b50610b05610aff84847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b3361255f565b505f610b0f61258a565b90505f5b73ffffffffffffffffffffffffffffffffffffffff85165f90815260048301602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452909152902054811015610cc25773ffffffffffffffffffffffffffffffffffffffff8581165f90815260048401602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452909152902080549185169183908110610bd857610bd8612df8565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603610cb05773ffffffffffffffffffffffffffffffffffffffff85165f90815260048301602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684529091529020805433919083908110610c6657610c66612df8565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cc2565b80610cba81612e52565b915050610b13565b5073ffffffffffffffffffffffffffffffffffffffff8481165f81815260038401602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000891684528252808320948716835293905282812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811690915533808352848320805490921660011790915592517f764eabd7879cb970b88d2432503ac38461be469c819e1259fc013dc1094355d59190a350505050565b5f610deb610db885847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b5f9081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205460ff1690565b90505b9392505050565b5f610e236109ab837f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b9050610e526109e1837f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006125b7565b610ea257604051806060016040528060238152602001612f5a602391396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b610ecf610a95837f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006125b7565b50610efd610aca837f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b50610f2b610aff837f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b505f610f356125df565b73ffffffffffffffffffffffffffffffffffffffff84165f8181526020839052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091559051939450927ffa5350a8d644c6aa3e792a6a6b7976e28cf5ba5fec66f6eefc2829f0ca689c419190a3505050565b610fbf833383610d89565b61102857604080518082018252601681527f4e6f7420466f726569676e2043616c6c2041646d696e00000000000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b73ffffffffffffffffffffffffffffffffffffffff82166110a857604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6110dc6110d684837f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006123ea565b8361255f565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fcf8d4fff2a6296918742799a620a4a7a35bf58f7695a44eefb29a5bae57bc23f60405160405180910390a3505050565b5f610dee61116a847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b5f9081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205460ff1690565b5f6111a6611f45565b3373ffffffffffffffffffffffffffffffffffffffff84161461068757604051806060016040528060268152602001612f7d602691396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b5f828152600160205260408120610dee908361260c565b5f610dee61116a847f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b5f81815260016020526040902060609061048c90612617565b611277823361113c565b6112e057604080518082018252601a81527f4e6f742043616c6c696e6720436f6e74726163742041646d696e000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b73ffffffffffffffffffffffffffffffffffffffff811661136057604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b61139361138d837f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006125b7565b8261255f565b508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f7d2c38c3c31fae4a580fef38a6b852d68e5e78ecd34b57fce25d387127bc713d60405160405180910390a35050565b5f6114206109ab837f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b905061144f6109e1837f50726f706f7365645f506f6c6963795f41646d696e0000000000000000000000611f86565b6114b857604080518082018252601981527f4e6f742050726f706f73656420506f6c6963792041646d696e00000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6114e5610a95837f50726f706f7365645f506f6c6963795f41646d696e0000000000000000000000611f86565b50611513610aca837f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b50611541610aff837f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b503361154b612623565b5f848152602091909152604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94909416939093179092559051839133917f14ca48cb26e98f4c91402fa960abe9a5c1f5d5478f39a7e544901e6e48e108dd9190a35050565b5f81815260016020526040812061048c90612650565b6115ea611f45565b6115f48183611226565b1561165e57604080518082018252601981527f42656c6f77204d696e2041646d696e205468726573686f6c6400000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6116688383612659565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fcdee8d3f2327f159a26a6a91394457975866d642f5531884dd73711727595a12905f90a36108c86001600255565b6116be8133611226565b61172757604080518082018252601081527f4e6f7420506f6c6963792041646d696e00000000000000000000000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b73ffffffffffffffffffffffffffffffffffffffff82166117a757604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6117d46110d6827f50726f706f7365645f506f6c6963795f41646d696e0000000000000000000000611f86565b50604051819073ffffffffffffffffffffffffffffffffffffffff8416907f3b0f200412e09c80b1126912caf7c728d400faf0ec6786b54d60af413d377ead905f90a35050565b5f611824611f45565b73ffffffffffffffffffffffffffffffffffffffff83166118a457604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b3373ffffffffffffffffffffffffffffffffffffffff85161461190d57604051806060016040528060308152602001612fc5603091396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b8373ffffffffffffffffffffffffffffffffffffffff163b5f0361197757604051806060016040528060308152602001612fc5603091396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b7fffffffff000000000000000000000000000000000000000000000000000000008216611a0357604080518082018252601481527f466f726569676e2043616c6c204e6f7420536574000000000000000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b5f611a2f85847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b90505f611a3b826115cc565b1115611a8d57604051806060016040528060228152602001612ff5602291396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b611a97818561255f565b505f611aa161258a565b73ffffffffffffffffffffffffffffffffffffffff87165f90815260028201602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055909150611b28612683565b9050805f0187908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060010185908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c0217905550816004015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f2086908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001826003015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f1fc1e76e7979d46f5dc34b12fc88668567593b51c7e2358d69d06394e4fe47a160405160405180910390a3505060016002559050610dee565b611e0f611f45565b5f611e3a837f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b9050611e468183612391565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc7e5c48bb5b72c9ee975727278b1b86f46ad719a177d1f3c090a3c987a3285e260405160405180910390a350611eab6001600255565b5050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061048c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461048c565b6002805403611f80576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b5f82604051602001611f9a91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252602083018590529101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261200d9291602001612ea0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052610dee90612eb4565b73ffffffffffffffffffffffffffffffffffffffff81166120e057604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561217a57604080518082018252601c81527f506f6c6963792041646d696e20416c7265616479204372656174656400000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6108c8828261255f565b5f73ffffffffffffffffffffffffffffffffffffffff821661220557604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b8273ffffffffffffffffffffffffffffffffffffffff163b5f0361226f57604051806060016040528060268152602001612f7d602691396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b5f61229a847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b90505f6122a6826115cc565b11156122f857604051806060016040528060268152602001613017602691396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b612302818461255f565b505f61230c6125df565b73ffffffffffffffffffffffffffffffffffffffff8681165f8181526020849052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948a16948517905551939450919290917f2b474bca23ad1f8b56bb31f8c22933f265e0e15bb4fcf8bb6c9c1de01f68eb6591a3509392505050565b73ffffffffffffffffffffffffffffffffffffffff811633146123e0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c8828261252c565b6040805173ffffffffffffffffffffffffffffffffffffffff851660208201525f9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282527fffffffff00000000000000000000000000000000000000000000000000000000861660208401529101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252602083018690529101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526124d9939291602001612ef9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052610deb90612eb4565b5f5f61253884846126b0565b90508015610dee575f8481526001602052604090206125579084612770565b509392505050565b5f5f61256b8484612791565b90508015610dee575f8481526001602052604090206125579084612883565b5f8061048c60017f1f3305601ed940efccf797d76856e5fe70659a8a6905d64c9f236321df91e718612f19565b6040805173ffffffffffffffffffffffffffffffffffffffff841660208201525f9101611f9a565b5f8061048c60017fb6ef102287fea9b8cf71b72ec7f262ba77464d93e50a2fb3b94afbb901484471612f19565b5f610dee83836128a4565b60605f610dee836128ca565b5f8061048c60017fcc82521cf89d97d40478640a045eb5c33e2eae5f4801e736d61315f69eb52d4e612f19565b5f61048c825490565b5f8281526020819052604090206001015461267381612923565b61267d838361252c565b50505050565b5f8061048c60017f3c401fd2932622880eb0dc8877cc070591b51eaaa3bb9dfbc1718d869b7a12b3612f19565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612769575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161048c565b505f61048c565b5f610dee8373ffffffffffffffffffffffffffffffffffffffff8416612930565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612769575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556128213390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161048c565b5f610dee8373ffffffffffffffffffffffffffffffffffffffff8416612a13565b5f825f0182815481106128b9576128b9612df8565b905f5260205f200154905092915050565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561291757602002820191905f5260205f20905b815481526020019060010190808311612903575b50505050509050919050565b61292d8133612a58565b50565b5f8181526001830160205260408120548015612a0a575f612952600183612f19565b85549091505f9061296590600190612f19565b90508082146129c4575f865f01828154811061298357612983612df8565b905f5260205f200154905080875f0184815481106129a3576129a3612df8565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806129d5576129d5612f2c565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061048c565b5f91505061048c565b5f81815260018301602052604081205461276957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561048c565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611eab576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016104ee565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b0c575f5ffd5b919050565b5f60208284031215612b21575f5ffd5b610dee82612add565b73ffffffffffffffffffffffffffffffffffffffff8116811461292d575f5ffd5b5f5f60408385031215612b5c575f5ffd5b823591506020830135612b6e81612b2a565b809150509250929050565b5f60208284031215612b89575f5ffd5b5035919050565b5f5f60408385031215612ba1575f5ffd5b8235612bac81612b2a565b91506020830135612b6e81612b2a565b5f5f5f60608486031215612bce575f5ffd5b833592506020840135612be081612b2a565b929592945050506040919091013590565b5f5f5f60608486031215612c03575f5ffd5b8335612c0e81612b2a565b9250612c1c60208501612add565b91506040840135612c2c81612b2a565b809150509250925092565b5f5f60408385031215612c48575f5ffd5b8235612c5381612b2a565b9150612c6160208401612add565b90509250929050565b5f5f5f60608486031215612c7c575f5ffd5b8335612c8781612b2a565b92506020840135612c9781612b2a565b9150612ca560408501612add565b90509250925092565b5f60208284031215612cbe575f5ffd5b8135610dee81612b2a565b5f5f60408385031215612cda575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612d3657835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612d02565b509095945050505050565b5f5f60408385031215612d52575f5ffd5b8235612d5d81612b2a565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215612dce575f5ffd5b81518015158114610dee575f5ffd5b5f60208284031215612ded575f5ffd5b8151610dee81612b2a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e8257612e82612e25565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f610deb612eae8386612e89565b84612e89565b80516020808301519190811015612ef3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f612f10612eae612f0a8488612e89565b86612e89565b95945050505050565b8181038181111561048c5761048c612e25565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe4e6f742050726f706f7365642043616c6c696e6720436f6e74726163742041646d696e4f6e6c792043616c6c696e6720436f6e74726163742043616e204372656174652041646d696e4f6e6c7952756c6573456e67696e6543616e43726561746541646d696e526f6c65734f6e6c7920466f726569676e2043616c6c20436f6e74726163742043616e204372656174652041646d696e20526f6c65466f726569676e2043616c6c2041646d696e20416c7265616479204772616e74656443616c6c696e6720436f6e74726163742041646d696e20416c7265616479204772616e74656443616c6c696e6720436f6e74726163742041646d696e20526f6c65204e6f74204772616e7465642046726f6d2043616c6c696e6720436f6e7472616374a2646970667358221220a85e941b826c863c3c040a0f672b13a07f29f4b771a099934193693b154690dc64736f6c634300081c0033","sourceMap":"1008:25253:91:-:0;;;;;;;;;;;;-1:-1:-1;1857:1:28;2061:7;:21;1008:25253:91;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c8063804ba97d116100f3578063c976afd611610093578063d547741f1161006e578063d547741f14610250578063d92f90fc146103fe578063dda335ae14610411578063e605bd7c14610424575f5ffd5b8063c976afd6146103c5578063ca15c873146103d8578063d27efca5146103eb575f5ffd5b806391d14854116100ce57806391d1485414610348578063a217fddf1461038b578063a3246ad314610392578063a8c014f4146103b2575f5ffd5b8063804ba97d146102ea5780639010d07c146102fd578063901cee1114610335575f5ffd5b80633262d3d21161015e57806341a2b7ae1161013957806341a2b7ae1461029e5780635f9a9c2b146102b15780636e9ad756146102c457806370aca092146102d7575f5ffd5b80633262d3d21461027857806336568abe14610250578063393093df1461028b575f5ffd5b8063261b024511610199578063261b02451461022a5780632f16a3581461023d5780632f2ff15d146102505780632f46a2e714610265575f5ffd5b806301ffc9a7146101bf5780631929cb64146101e7578063248a9ca314610208575b5f5ffd5b6101d26101cd366004612b11565b610437565b60405190151581526020015b60405180910390f35b6101fa6101f5366004612b4b565b610492565b6040519081526020016101de565b6101fa610216366004612b79565b5f9081526020819052604090206001015490565b6101fa610238366004612b90565b61057c565b6101fa61024b366004612b90565b61069d565b61026361025e366004612b4b565b610791565b005b610263610273366004612bbc565b6107f6565b610263610286366004612bf1565b6108cd565b610263610299366004612c37565b61097c565b6101d26102ac366004612c6a565b610d89565b6102636102bf366004612cae565b610df5565b6102636102d2366004612c6a565b610fb4565b6101d26102e5366004612b90565b61113c565b6101fa6102f8366004612b90565b61119d565b61031061030b366004612cc9565b61120f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b6101d2610343366004612b4b565b611226565b6101d2610356366004612b4b565b5f9182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101fa5f81565b6103a56103a0366004612b79565b611254565b6040516101de9190612ce9565b6102636103c0366004612b90565b61126d565b6102636103d3366004612b79565b6113f2565b6101fa6103e6366004612b79565b6115cc565b6102636103f9366004612bbc565b6115e2565b61026361040c366004612d41565b6116b4565b6101fa61041f366004612c6a565b61181b565b610263610432366004612b90565b611e07565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061048c575061048c82611eaf565b92915050565b5f61049b611f45565b3330146104f757604051806060016040528060228152602001612fa3602291396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b60405180910390fd5b5f610522847f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b905061052e8184612060565b604051849073ffffffffffffffffffffffffffffffffffffffff8516907f5d8751116265daef12864a389d3a862fedd252ff2c64f06702579fbd7813e579905f90a3905061048c6001600255565b5f610585611f45565b6040517f91d148540000000000000000000000000000000000000000000000000000000081527f43616c6c696e675f436f6e74726163745f41646d696e00000000000000000000600482015233602482015273ffffffffffffffffffffffffffffffffffffffff8416906391d1485490604401602060405180830381865afa158015610613573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106379190612dbe565b610687576040518060600160405280603d815260200161303d603d91396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b6106918383612184565b905061048c6001600255565b5f6106a6611f45565b8273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107139190612ddd565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610687576040518060600160405280603d815260200161303d603d91396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b604080518082018252601181527f46756e6374696f6e2064697361626c6564000000000000000000000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6107fe611f45565b6108088183611226565b1561087257604080518082018252601981527f42656c6f77204d696e2041646d696e205468726573686f6c6400000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b61087c8383612391565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fa18e7770c8bee6a49fd728f59c26eb9a0293f6ab4195bb3672cc26ea098644ba905f90a36108c86001600255565b505050565b6108d5611f45565b5f61090184847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b905061090d8183612391565b6040517fffffffff0000000000000000000000000000000000000000000000000000000084169073ffffffffffffffffffffffffffffffffffffffff8616907f0d70a7b0df1e2f2bb2c5f5f88d18b819596a6b28cc7f884d61850ee7b4dba25e905f90a3506108c86001600255565b5f6109b16109ab84847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b5f61120f565b90506109fe6109e184847f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006123ea565b5f9081526020818152604080832033845290915290205460ff1690565b610a6757604080518082018252601f81527f4e6f742050726f706f73656420466f726569676e2043616c6c2041646d696e00602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b610a9b610a9584847f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006123ea565b3361252c565b50610ad0610aca84847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b8261252c565b50610b05610aff84847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b3361255f565b505f610b0f61258a565b90505f5b73ffffffffffffffffffffffffffffffffffffffff85165f90815260048301602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452909152902054811015610cc25773ffffffffffffffffffffffffffffffffffffffff8581165f90815260048401602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452909152902080549185169183908110610bd857610bd8612df8565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603610cb05773ffffffffffffffffffffffffffffffffffffffff85165f90815260048301602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684529091529020805433919083908110610c6657610c66612df8565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cc2565b80610cba81612e52565b915050610b13565b5073ffffffffffffffffffffffffffffffffffffffff8481165f81815260038401602090815260408083207fffffffff00000000000000000000000000000000000000000000000000000000891684528252808320948716835293905282812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811690915533808352848320805490921660011790915592517f764eabd7879cb970b88d2432503ac38461be469c819e1259fc013dc1094355d59190a350505050565b5f610deb610db885847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b5f9081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205460ff1690565b90505b9392505050565b5f610e236109ab837f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b9050610e526109e1837f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006125b7565b610ea257604051806060016040528060238152602001612f5a602391396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b610ecf610a95837f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006125b7565b50610efd610aca837f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b50610f2b610aff837f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b505f610f356125df565b73ffffffffffffffffffffffffffffffffffffffff84165f8181526020839052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091559051939450927ffa5350a8d644c6aa3e792a6a6b7976e28cf5ba5fec66f6eefc2829f0ca689c419190a3505050565b610fbf833383610d89565b61102857604080518082018252601681527f4e6f7420466f726569676e2043616c6c2041646d696e00000000000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b73ffffffffffffffffffffffffffffffffffffffff82166110a857604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6110dc6110d684837f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006123ea565b8361255f565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fcf8d4fff2a6296918742799a620a4a7a35bf58f7695a44eefb29a5bae57bc23f60405160405180910390a3505050565b5f610dee61116a847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b5f9081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205460ff1690565b5f6111a6611f45565b3373ffffffffffffffffffffffffffffffffffffffff84161461068757604051806060016040528060268152602001612f7d602691396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b5f828152600160205260408120610dee908361260c565b5f610dee61116a847f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b5f81815260016020526040902060609061048c90612617565b611277823361113c565b6112e057604080518082018252601a81527f4e6f742043616c6c696e6720436f6e74726163742041646d696e000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b73ffffffffffffffffffffffffffffffffffffffff811661136057604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b61139361138d837f50726f706f7365645f43616c6c696e675f436f6e74726163745f41646d696e006125b7565b8261255f565b508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f7d2c38c3c31fae4a580fef38a6b852d68e5e78ecd34b57fce25d387127bc713d60405160405180910390a35050565b5f6114206109ab837f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b905061144f6109e1837f50726f706f7365645f506f6c6963795f41646d696e0000000000000000000000611f86565b6114b857604080518082018252601981527f4e6f742050726f706f73656420506f6c6963792041646d696e00000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6114e5610a95837f50726f706f7365645f506f6c6963795f41646d696e0000000000000000000000611f86565b50611513610aca837f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b50611541610aff837f506f6c6963795f41646d696e0000000000000000000000000000000000000000611f86565b503361154b612623565b5f848152602091909152604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94909416939093179092559051839133917f14ca48cb26e98f4c91402fa960abe9a5c1f5d5478f39a7e544901e6e48e108dd9190a35050565b5f81815260016020526040812061048c90612650565b6115ea611f45565b6115f48183611226565b1561165e57604080518082018252601981527f42656c6f77204d696e2041646d696e205468726573686f6c6400000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6116688383612659565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907fcdee8d3f2327f159a26a6a91394457975866d642f5531884dd73711727595a12905f90a36108c86001600255565b6116be8133611226565b61172757604080518082018252601081527f4e6f7420506f6c6963792041646d696e00000000000000000000000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b73ffffffffffffffffffffffffffffffffffffffff82166117a757604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6117d46110d6827f50726f706f7365645f506f6c6963795f41646d696e0000000000000000000000611f86565b50604051819073ffffffffffffffffffffffffffffffffffffffff8416907f3b0f200412e09c80b1126912caf7c728d400faf0ec6786b54d60af413d377ead905f90a35050565b5f611824611f45565b73ffffffffffffffffffffffffffffffffffffffff83166118a457604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b3373ffffffffffffffffffffffffffffffffffffffff85161461190d57604051806060016040528060308152602001612fc5603091396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b8373ffffffffffffffffffffffffffffffffffffffff163b5f0361197757604051806060016040528060308152602001612fc5603091396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b7fffffffff000000000000000000000000000000000000000000000000000000008216611a0357604080518082018252601481527f466f726569676e2043616c6c204e6f7420536574000000000000000000000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b5f611a2f85847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006123ea565b90505f611a3b826115cc565b1115611a8d57604051806060016040528060228152602001612ff5602291396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b611a97818561255f565b505f611aa161258a565b73ffffffffffffffffffffffffffffffffffffffff87165f90815260028201602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055909150611b28612683565b9050805f0187908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060010185908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c0217905550816004015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f2086908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001826003015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f1fc1e76e7979d46f5dc34b12fc88668567593b51c7e2358d69d06394e4fe47a160405160405180910390a3505060016002559050610dee565b611e0f611f45565b5f611e3a837f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b9050611e468183612391565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc7e5c48bb5b72c9ee975727278b1b86f46ad719a177d1f3c090a3c987a3285e260405160405180910390a350611eab6001600255565b5050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061048c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461048c565b6002805403611f80576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b5f82604051602001611f9a91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252602083018590529101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261200d9291602001612ea0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052610dee90612eb4565b73ffffffffffffffffffffffffffffffffffffffff81166120e057604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561217a57604080518082018252601c81527f506f6c6963792041646d696e20416c7265616479204372656174656400000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b6108c8828261255f565b5f73ffffffffffffffffffffffffffffffffffffffff821661220557604080518082018252601c81527f5a65726f20416464726573732043616e6e6f742042652041646d696e00000000602082015290517f08c379a00000000000000000000000000000000000000000000000000000000081526104ee9190600401612d6b565b8273ffffffffffffffffffffffffffffffffffffffff163b5f0361226f57604051806060016040528060268152602001612f7d602691396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b5f61229a847f43616c6c696e675f436f6e74726163745f41646d696e000000000000000000006125b7565b90505f6122a6826115cc565b11156122f857604051806060016040528060268152602001613017602691396040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ee9190612d6b565b612302818461255f565b505f61230c6125df565b73ffffffffffffffffffffffffffffffffffffffff8681165f8181526020849052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948a16948517905551939450919290917f2b474bca23ad1f8b56bb31f8c22933f265e0e15bb4fcf8bb6c9c1de01f68eb6591a3509392505050565b73ffffffffffffffffffffffffffffffffffffffff811633146123e0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108c8828261252c565b6040805173ffffffffffffffffffffffffffffffffffffffff851660208201525f9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282527fffffffff00000000000000000000000000000000000000000000000000000000861660208401529101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252602083018690529101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526124d9939291602001612ef9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052610deb90612eb4565b5f5f61253884846126b0565b90508015610dee575f8481526001602052604090206125579084612770565b509392505050565b5f5f61256b8484612791565b90508015610dee575f8481526001602052604090206125579084612883565b5f8061048c60017f1f3305601ed940efccf797d76856e5fe70659a8a6905d64c9f236321df91e718612f19565b6040805173ffffffffffffffffffffffffffffffffffffffff841660208201525f9101611f9a565b5f8061048c60017fb6ef102287fea9b8cf71b72ec7f262ba77464d93e50a2fb3b94afbb901484471612f19565b5f610dee83836128a4565b60605f610dee836128ca565b5f8061048c60017fcc82521cf89d97d40478640a045eb5c33e2eae5f4801e736d61315f69eb52d4e612f19565b5f61048c825490565b5f8281526020819052604090206001015461267381612923565b61267d838361252c565b50505050565b5f8061048c60017f3c401fd2932622880eb0dc8877cc070591b51eaaa3bb9dfbc1718d869b7a12b3612f19565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612769575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161048c565b505f61048c565b5f610dee8373ffffffffffffffffffffffffffffffffffffffff8416612930565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612769575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556128213390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161048c565b5f610dee8373ffffffffffffffffffffffffffffffffffffffff8416612a13565b5f825f0182815481106128b9576128b9612df8565b905f5260205f200154905092915050565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561291757602002820191905f5260205f20905b815481526020019060010190808311612903575b50505050509050919050565b61292d8133612a58565b50565b5f8181526001830160205260408120548015612a0a575f612952600183612f19565b85549091505f9061296590600190612f19565b90508082146129c4575f865f01828154811061298357612983612df8565b905f5260205f200154905080875f0184815481106129a3576129a3612df8565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806129d5576129d5612f2c565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061048c565b5f91505061048c565b5f81815260018301602052604081205461276957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561048c565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611eab576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016104ee565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b0c575f5ffd5b919050565b5f60208284031215612b21575f5ffd5b610dee82612add565b73ffffffffffffffffffffffffffffffffffffffff8116811461292d575f5ffd5b5f5f60408385031215612b5c575f5ffd5b823591506020830135612b6e81612b2a565b809150509250929050565b5f60208284031215612b89575f5ffd5b5035919050565b5f5f60408385031215612ba1575f5ffd5b8235612bac81612b2a565b91506020830135612b6e81612b2a565b5f5f5f60608486031215612bce575f5ffd5b833592506020840135612be081612b2a565b929592945050506040919091013590565b5f5f5f60608486031215612c03575f5ffd5b8335612c0e81612b2a565b9250612c1c60208501612add565b91506040840135612c2c81612b2a565b809150509250925092565b5f5f60408385031215612c48575f5ffd5b8235612c5381612b2a565b9150612c6160208401612add565b90509250929050565b5f5f5f60608486031215612c7c575f5ffd5b8335612c8781612b2a565b92506020840135612c9781612b2a565b9150612ca560408501612add565b90509250925092565b5f60208284031215612cbe575f5ffd5b8135610dee81612b2a565b5f5f60408385031215612cda575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015612d3657835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612d02565b509095945050505050565b5f5f60408385031215612d52575f5ffd5b8235612d5d81612b2a565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215612dce575f5ffd5b81518015158114610dee575f5ffd5b5f60208284031215612ded575f5ffd5b8151610dee81612b2a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e8257612e82612e25565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f610deb612eae8386612e89565b84612e89565b80516020808301519190811015612ef3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f612f10612eae612f0a8488612e89565b86612e89565b95945050505050565b8181038181111561048c5761048c612e25565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe4e6f742050726f706f7365642043616c6c696e6720436f6e74726163742041646d696e4f6e6c792043616c6c696e6720436f6e74726163742043616e204372656174652041646d696e4f6e6c7952756c6573456e67696e6543616e43726561746541646d696e526f6c65734f6e6c7920466f726569676e2043616c6c20436f6e74726163742043616e204372656174652041646d696e20526f6c65466f726569676e2043616c6c2041646d696e20416c7265616479204772616e74656443616c6c696e6720436f6e74726163742041646d696e20416c7265616479204772616e74656443616c6c696e6720436f6e74726163742041646d696e20526f6c65204e6f74204772616e7465642046726f6d2043616c6c696e6720436f6e7472616374a2646970667358221220a85e941b826c863c3c040a0f672b13a07f29f4b771a099934193693b154690dc64736f6c634300081c0033","sourceMap":"1008:25253:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;729:212:3;;;;;;:::i;:::-;;:::i;:::-;;;592:14:174;;585:22;567:41;;555:2;540:18;729:212:3;;;;;;;;2281:659:91;;;;;;:::i;:::-;;:::i;:::-;;;1296:25:174;;;1284:2;1269:18;2281:659:91;1150:177:174;3810:120:0;;;;;;:::i;:::-;3875:7;3901:12;;;;;;;;;;:22;;;;3810:120;10568:431:91;;;;;;:::i;:::-;;:::i;11539:394::-;;;;;;:::i;:::-;;:::i;25908:351::-;;;;;;:::i;:::-;;:::i;:::-;;4753:346;;;;;;:::i;:::-;;:::i;5954:412::-;;;;;;:::i;:::-;;:::i;21329:1793::-;;;;;;:::i;:::-;;:::i;17388:266::-;;;;;;:::i;:::-;;:::i;13124:1162::-;;;;;;:::i;:::-;;:::i;20515:666::-;;;;;;:::i;:::-;;:::i;9226:223::-;;;;;;:::i;:::-;;:::i;9831:274::-;;;;;;:::i;:::-;;:::i;1526:142:3:-;;;;;;:::i;:::-;;:::i;:::-;;;4853:42:174;4841:55;;;4823:74;;4811:2;4796:18;1526:142:3;4677:226:174;1738:177:91;;;;;;:::i;:::-;;:::i;2854:136:0:-;;;;;;:::i;:::-;2931:4;2954:12;;;;;;;;;;;:29;;;;;;;;;;;;;;;;2854:136;2187:49;;2232:4;2187:49;;2510:136:3;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12385:588:91:-;;;;;;:::i;:::-;;:::i;3728:707::-;;;;;;:::i;:::-;;:::i;1836:131:3:-;;;;;;:::i;:::-;;:::i;6707:514:91:-;;;;;;:::i;:::-;;:::i;3148:440::-;;;;;;:::i;:::-;;:::i;18024:2033::-;;;;;;:::i;:::-;;:::i;5325:353::-;;;;;;:::i;:::-;;:::i;729:212:3:-;814:4;837:57;;;852:42;837:57;;:97;;;898:36;922:11;898:23;:36::i;:::-;830:104;729:212;-1:-1:-1;;729:212:3:o;2281:659:91:-;2378:7;2500:21:28;:19;:21::i;:::-;2401:10:91::1;2423:4;2401:27;2397:58;;2437:17;;;;;;;;;;;;;;;;;2430:25;;;;;;;;;;;:::i;:::-;;;;;;;;2397:58;2612:19;2634:50;2661:8;2671:12;2634:26;:50::i;:::-;2612:72;;2806:43;2828:11;2841:7;2806:21;:43::i;:::-;2864:41;::::0;2896:8;;2864:41:::1;::::0;::::1;::::0;::::1;::::0;;;::::1;2922:11:::0;-1:-1:-1;2542:20:28;1857:1;3068:7;:21;2888:208;10568:431:91;10688:7;2500:21:28;:19;:21::i;:::-;10763:76:91::1;::::0;;;;10804:22:::1;10763:76;::::0;::::1;7014:25:174::0;10828:10:91::1;7055:18:174::0;;;7048:83;10763:40:91::1;::::0;::::1;::::0;::::1;::::0;6987:18:174;;10763:76:91::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10758:157;;10860:54;;;;;;;;;;;;;;;;;10853:62;;;;;;;;;;;:::i;10758:157::-;10933:59;10965:16;10983:8;10933:31;:59::i;:::-;10926:66;;2542:20:28::0;1857:1;3068:7;:21;2888:208;11539:394:91;11653:7;2500:21:28;:19;:21::i;:::-;11760:16:91::1;11752:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11738:47;;:10;:47;;;11734:115;;11794:54;;;;;;;;;;;;;;;;;11787:62;;;;;;;;;;;:::i;25908:351::-:0;26234:17;;;;;;;;;;;;;;;;26227:25;;;;;;;26234:17;26227:25;;;:::i;4753:346::-;2500:21:28;:19;:21::i;:::-;4920:32:91::1;4934:8;4944:7;4920:13;:32::i;:::-;4916:67;;;4961:21;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;4954:29;;::::1;::::0;;::::1;::::0;4961:21;4954:29:::1;;;:::i;4916:67::-;4993:41;5020:4;5026:7;4993:26;:41::i;:::-;5049:43;::::0;5083:8;;5049:43:::1;::::0;::::1;::::0;::::1;::::0;;;::::1;2542:20:28::0;1857:1;3068:7;:21;2888:208;2542:20;4753:346:91;;;:::o;5954:412::-;2500:21:28;:19;:21::i;:::-;6098:19:91::1;6120:93;6152:20;6174:18;6194;6120:31;:93::i;:::-;6098:115;;6223:48;6250:11;6263:7;6223:26;:48::i;:::-;6286:73;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;6088:278;2542:20:28::0;1857:1;3068:7;:21;2888:208;21329:1793:91;21437:27;21467:143;21494:91;21526:19;21547:17;21566:18;21494:31;:91::i;:::-;21599:1;21467:13;:143::i;:::-;21437:173;;21625:121;21633:100;21665:19;21686:17;21705:27;21633:31;:100::i;:::-;2931:4:0;2954:12;;;;;;;;;;;21735:10:91;2954:29:0;;;;;;;;;;;2854:136;21625:121:91;21620:179;;21767:31;;;;;;;;;;;;;;;;21760:39;;;;;;;21767:31;21760:39;;;:::i;21620:179::-;21809:125;21821:100;21853:19;21874:17;21893:27;21821:31;:100::i;:::-;21923:10;21809:11;:125::i;:::-;;21944;21956:91;21988:19;22009:17;22028:18;21956:31;:91::i;:::-;22049:19;21944:11;:125::i;:::-;;22079:115;22090:91;22122:19;22143:17;22162:18;22090:31;:91::i;:::-;22183:10;22079;:115::i;:::-;;22205:42;22250:28;:26;:28::i;:::-;22205:73;;22338:6;22333:426;22346:70;;;;;;;:49;;;:70;;;;;;;;:89;;;;;;;;;;:96;:100;-1:-1:-1;22333:426:91;;;22471:115;:70;;;;;;;:49;;;:70;;;;;;;;:89;;;;;;;;;;:92;;:115;;;;22561:1;;22471:92;;;;;;:::i;:::-;;;;;;;;;;;;;:115;22467:282;;22606:70;;;;;;;:49;;;:70;;;;;;;;:89;;;;;;;;;;:92;;22701:10;;22606:89;22696:1;;22606:92;;;;;;:::i;:::-;;;;;;;;;:105;;;;;;;;;;;;;;;;;;22729:5;;22467:282;22448:3;;;;:::i;:::-;;;;22333:426;;;-1:-1:-1;22809:66:91;;;;22918:5;22809:66;;;:45;;;:66;;;;;;;;:85;;;;;;;;;;:106;;;;;;;;;;;:114;;;;;;;;;23019:10;22933:97;;;;;;:104;;;;;-1:-1:-1;22933:104:91;;;;23053:62;;;;22918:5;23053:62;21427:1695;;21329:1793;;:::o;17388:266::-;17512:4;17535:112;17543:93;17575:20;17597:18;17617;17543:31;:93::i;:::-;2931:4:0;2954:12;;;;;;;;;;;:29;;;;;;;;;;;;;;2854:136;17535:112:91;17528:119;;17388:266;;;;;;:::o;13124:1162::-;13213:31;13247:135;13274:83;13310:22;13334;13274:35;:83::i;13247:135::-;13213:169;;13397:113;13405:92;13441:22;13465:31;13405:35;:92::i;13397:113::-;13392:175;;13531:35;;;;;;;;;;;;;;;;;13524:43;;;;;;;;;;;:::i;13392:175::-;13577:117;13589:92;13625:22;13649:31;13589:35;:92::i;13577:117::-;;13704:121;13716:83;13752:22;13776;13716:35;:83::i;13704:121::-;;13835:107;13846:83;13882:22;13906;13846:35;:83::i;13835:107::-;;14001:60;14064:37;:35;:37::i;:::-;14111:71;;;:47;:71;;;;;;;;;;;:84;;;;14185:10;14111:84;;;;;;14210:69;;14001:100;;-1:-1:-1;14185:10:91;14210:69;;14111:47;14210:69;13203:1083;;13124:1162;:::o;20515:666::-;20665:70;20684:19;20705:10;20717:17;20665:18;:70::i;:::-;20660:107;;20744:22;;;;;;;;;;;;;;;;20737:30;;;;;;;20744:22;20737:30;;;:::i;20660:107::-;20781:41;;;20777:67;;20831:12;;;;;;;;;;;;;;;;20824:20;;;;;;;20831:12;20824:20;;;:::i;20777:67::-;20906:175;20930:100;20962:19;20983:17;21002:27;20930:31;:100::i;:::-;21044:27;20906:10;:175::i;:::-;;21146:27;21096:78;;21125:19;21096:78;;;;;;;;;;;;20515:666;;;:::o;9226:223::-;9323:4;9346:96;9354:77;9390:16;9408:22;9354:35;:77::i;:::-;2931:4:0;2954:12;;;;;;;;;;;:29;;;;;;;;;;;;;;2854:136;9831:274:91;9938:7;2500:21:28;:19;:21::i;:::-;9961:10:91::1;:30;::::0;::::1;;9957:65;;10000:21;;;;;;;;;;;;;;;;;9993:29;;;;;;;;;;;:::i;1526:142:3:-:0;1607:7;1633:18;;;:12;:18;;;;;:28;;1655:5;1633:21;:28::i;1738:177:91:-;1817:4;1840:68;1848:50;1875:8;1885:12;1848:26;:50::i;2510:136:3:-;2612:18;;;;:12;:18;;;;;2577:16;;2612:27;;:25;:27::i;12385:588:91:-;12512:58;12535:22;12559:10;12512:22;:58::i;:::-;12507:99;;12579:26;;;;;;;;;;;;;;;;12572:34;;;;;;;12579:26;12572:34;;;:::i;12507:99::-;12620:37;;;12616:63;;12666:12;;;;;;;;;;;;;;;;12659:20;;;;;;;12666:12;12659:20;;;:::i;12616:63::-;12741:129;12752:92;12788:22;12812:31;12752:35;:92::i;:::-;12846:23;12741:10;:129::i;:::-;;12942:23;12885:81;;12918:22;12885:81;;;;;;;;;;;;12385:588;;:::o;3728:707::-;3794:22;3819:68;3833:50;3860:8;3870:12;3833:26;:50::i;3819:68::-;3794:93;;3902:80;3910:59;3937:8;3947:21;3910:26;:59::i;3902:80::-;3897:120;;3991:25;;;;;;;;;;;;;;;;3984:33;;;;;;;3991:25;3984:33;;;:::i;3897:120::-;4027:84;4039:59;4066:8;4076:21;4039:26;:59::i;4027:84::-;;4121:79;4133:50;4160:8;4170:12;4133:26;:50::i;4121:79::-;;4210:74;4221:50;4248:8;4258:12;4221:26;:50::i;4210:74::-;;4357:10;4294:28;:26;:28::i;:::-;:50;:60;;;;;;;;;;;;:73;;;;;;;;;;;;;;;;4382:46;;4294:60;;4407:10;;4382:46;;4294:50;4382:46;3784:651;3728:707;:::o;1836:131:3:-;1907:7;1933:18;;;:12;:18;;;;;:27;;:25;:27::i;6707:514:91:-;2500:21:28;:19;:21::i;:::-;6991:32:91::1;7005:8;7015:7;6991:13;:32::i;:::-;6987:67;;;7032:21;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;7025:29;;::::1;::::0;;::::1;::::0;7032:21;7025:29:::1;;;:::i;6987:67::-;7119:39;7144:4;7150:7;7119:24;:39::i;:::-;7173:41;::::0;7205:8;;7173:41:::1;::::0;::::1;::::0;::::1;::::0;;;::::1;2542:20:28::0;1857:1;3068:7;:21;2888:208;3148:440:91;3243:35;3257:8;3267:10;3243:13;:35::i;:::-;3238:66;;3287:16;;;;;;;;;;;;;;;;3280:24;;;;;;;3287:16;3280:24;;;:::i;3238:66::-;3318:28;;;3314:54;;3355:12;;;;;;;;;;;;;;;;3348:20;;;;;;;3355:12;3348:20;;;:::i;3314:54::-;3430:87;3441:59;3468:8;3478:21;3441:26;:59::i;3430:87::-;-1:-1:-1;3532:49:91;;3572:8;;3532:49;;;;;;;;;3148:440;;:::o;18024:2033::-;18193:7;2500:21:28;:19;:21::i;:::-;18216:22:91::1;::::0;::::1;18212:48;;18247:12;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;18240:20;;::::1;::::0;;::::1;::::0;18247:12;18240:20:::1;;;:::i;18212:48::-;18274:10;:34;::::0;::::1;;18270:74;;18317:26;;;;;;;;;;;;;;;;;18310:34;;;;;;;;;;;:::i;18270:74::-;18358:20;:32;;;18394:1;18358:37:::0;18354:77:::1;;18404:26;;;;;;;;;;;;;;;;;18397:34;;;;;;;;;;;:::i;18354:77::-;18445:31:::0;;::::1;18441:74;;18485:29;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;18478:37;;::::1;::::0;;::::1;::::0;18485:29;18478:37:::1;;;:::i;18441:74::-;18705:19;18727:93;18759:20;18781:18;18801;18727:31;:93::i;:::-;18705:115;;18868:1;18834:31;18853:11;18834:18;:31::i;:::-;:35;18830:83;;;18878:34;;;;;;;;;;;;;;;;;18871:42;;;;;;;;;;;:::i;18830:83::-;19035:33;19046:11;19059:8;19035:10;:33::i;:::-;;19174:42;19219:28;:26;:28::i;:::-;19257:63;::::0;::::1;;::::0;;;:41:::1;::::0;::::1;:63;::::0;;;;;;;:83;;::::1;::::0;;;;;;;:90;;;::::1;19343:4;19257:90;::::0;;19174:73;;-1:-1:-1;19427:40:91::1;:38;:40::i;:::-;19358:109;;19477:27;:60;;19543:20;19477:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19574:27;:61;;19641:18;19574:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19728:15;:49;;:71;19778:20;19728:71;;;;;;;;;;;;;;;:91;19800:18;19728:91;;;;;;;;;;;;;;;;;19825:8;19728:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19944:4;19844:15;:45;;:67;19890:20;19844:67;;;;;;;;;;;;;;;:87;19912:18;19844:87;;;;;;;;;;;;;;;;;:97;19932:8;19844:97;;;;;;;;;;;;;;;;:104;;;;;;;;;;;;;;;;;;20013:8;19963:59;;19991:20;19963:59;;;;;;;;;;;;-1:-1:-1::0;;1857:1:28;3068:7;:21;20039:11:91;-1:-1:-1;2542:20:28;2888:208;5325:353:91;2500:21:28;:19;:21::i;:::-;5441:19:91::1;5463:76;5499:15;5516:22;5463:35;:76::i;:::-;5441:98;;5549:48;5576:11;5589:7;5549:26;:48::i;:::-;5663:7;5612:59;;5646:15;5612:59;;;;;;;;;;;;5431:247;2542:20:28::0;1857:1;3068:7;:21;2888:208;2542:20;5325:353:91;;:::o;2565:202:0:-;2650:4;2673:47;;;2688:32;2673:47;;:87;;-1:-1:-1;877:25:32;862:40;;;;2724:36:0;763:146:32;2575:307:28;1899:1;2702:7;;:18;2698:86;;2743:30;;;;;;;;;;;;;;2698:86;1899:1;2858:17;;2575:307::o;8110:403:91:-;8208:7;8458:9;8447:21;;;;;;1296:25:174;;1284:2;1269:18;;1150:177;8447:21:91;;;;;;;;;;;;;;;8478:22;;1296:25:174;;;8447:21:91;1269:18:174;8478:22:91;;;;;;;;;;;;;;8426:76;;;8478:22;8426:76;;:::i;:::-;;;;;;;;;;;;;;8410:94;;8426:76;8410:94;;;;8393:112;;;8876:19:174;8911:12;8393:112:91;;;;;;;;;;;;8385:121;;;:::i;7469:388::-;7556:22;;;7552:48;;7587:12;;;;;;;;;;;;;;;;7580:20;;;;;;;7587:12;7580:20;;;:::i;7552:48::-;2931:4:0;2954:12;;;;;;;;;;;:29;;;;;;;;;;;;;7610:66:91;;;7647:28;;;;;;;;;;;;;;;;7640:36;;;;;;;7647:28;7640:36;;;:::i;7610:66::-;7823:27;7834:5;7841:8;7823:10;:27::i;14602:1204::-;14704:7;14727:22;;;14723:48;;14758:12;;;;;;;;;;;;;;;;14751:20;;;;;;;14758:12;14751:20;;;:::i;14723:48::-;14785:16;:28;;;14817:1;14785:33;14781:68;;14827:21;;;;;;;;;;;;;;;;;14820:29;;;;;;;;;;;:::i;14781:68::-;15038:19;15060:77;15096:16;15114:22;15060:35;:77::i;:::-;15038:99;;15240:1;15206:31;15225:11;15206:18;:31::i;:::-;:35;15202:92;;;15250:43;;;;;;;;;;;;;;;;;15243:51;;;;;;;;;;;:::i;15202:92::-;15417:33;15428:11;15441:8;15417:10;:33::i;:::-;;15510:60;15573:37;:35;:37::i;:::-;15620:65;;;;:47;:65;;;;;;;;;;;:76;;;;;;;;;;;;15712:59;15620:65;;-1:-1:-1;15620:76:91;;:65;;15712:59;;;-1:-1:-1;15788:11:91;14602:1204;-1:-1:-1;;;14602:1204:91:o;5328:245:0:-;5421:34;;;735:10:26;5421:34:0;5417:102;;5478:30;;;;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;23412:854:91:-;23980:32;;;4853:42:174;4841:55;;23980:32:91;;;4823:74:174;23583:7:91;;4796:18:174;23980:32:91;;;;;;;;;;;;;9470:66:174;9458:79;;23980:32:91;24054:30;;9440:98:174;23980:32:91;9413:18:174;24054:30:91;;;;;;;;;;;;;;24126:22;;1296:25:174;;;24054:30:91;1269:18:174;24126:22:91;;;;;;;;;;;;;;23926:253;;;;24126:22;23926:253;;:::i;:::-;;;;;;;;;;;;;;23856:371;;23926:253;23856:371;;;;23818:427;;;8876:19:174;8911:12;23818:427:91;;;;;;;;;;;;23793:466;;;:::i;3108:262:3:-;3195:4;3211:12;3226:32;3244:4;3250:7;3226:17;:32::i;:::-;3211:47;;3272:7;3268:72;;;3295:18;;;;:12;:18;;;;;:34;;3321:7;3295:25;:34::i;:::-;;3356:7;3108:262;-1:-1:-1;;;3108:262:3:o;2748:257::-;2834:4;2850:12;2865:31;2882:4;2888:7;2865:16;:31::i;:::-;2850:46;;2910:7;2906:69;;;2933:18;;;;:12;:18;;;;;:31;;2956:7;2933:22;:31::i;3215:208:85:-;3272:30;;1078:47;1124:1;1086:34;1078:47;:::i;16091:484:91:-;16489:28;;;4853:42:174;4841:55;;16489:28:91;;;4823:74:174;16205:7:91;;4796:18:174;16489:28:91;4677:226:174;8591:236:85;8657:39;;2394:57;2450:1;2402:44;2394:57;:::i;10987:156:37:-;11061:7;11111:22;11115:3;11127:5;11111:3;:22::i;11683:273::-;11746:16;11774:22;11799:19;11807:3;11799:7;:19::i;9050:208:85:-;9107:30;;2507:47;2553:1;2515:34;2507:47;:::i;10530:115:37:-;10593:7;10619:19;10627:3;5202:18;;5120:107;4642:138:0;3875:7;3901:12;;;;;;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;:::-;;4642:138:::0;;;:::o;3660:245:85:-;3729:42;;1194:60;1253:1;1202:47;1194:60;:::i;6732:317:0:-;6810:4;2954:12;;;;;;;;;;;:29;;;;;;;;;;;;;6826:217;;;6900:5;6868:12;;;;;;;;;;;:29;;;;;;;;;;;:37;;;;;;6924:40;735:10:26;;6868:12:0;;6924:40;;6900:5;6924:40;-1:-1:-1;6985:4:0;6978:11;;6826:217;-1:-1:-1;7027:5:0;7020:12;;9650:156:37;9723:4;9746:53;9754:3;9774:23;;;9746:7;:53::i;6179:316:0:-;6256:4;2954:12;;;;;;;;;;;:29;;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;:29;;;;;;;;;;:36;;;;6347:4;6315:36;;;6397:12;735:10:26;;656:96;6397:12:0;6370:40;;6388:7;6370:40;;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:0;6424:11;;9332:150:37;9402:4;9425:50;9430:3;9450:23;;;9425:4;:50::i;5569:118::-;5636:7;5662:3;:11;;5674:5;5662:18;;;;;;;;:::i;:::-;;;;;;;;;5655:25;;5569:118;;;;:::o;6227:109::-;6283:16;6318:3;:11;;6311:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6227:109;;;:::o;3199:103:0:-;3265:30;3276:4;735:10:26;3265::0;:30::i;:::-;3199:103;:::o;2910:1368:37:-;2976:4;3105:21;;;:14;;;:21;;;;;;3141:13;;3137:1135;;3508:18;3529:12;3540:1;3529:8;:12;:::i;:::-;3575:18;;3508:33;;-1:-1:-1;3555:17:37;;3575:22;;3596:1;;3575:22;:::i;:::-;3555:42;;3630:9;3616:10;:23;3612:378;;3659:17;3679:3;:11;;3691:9;3679:22;;;;;;;;:::i;:::-;;;;;;;;;3659:42;;3826:9;3800:3;:11;;3812:10;3800:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3939:25;;;:14;;;:25;;;;;:36;;;3612:378;4068:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4171:3;:14;;:21;4186:5;4171:21;;;;;;;;;;;4164:28;;;4214:4;4207:11;;;;;;;3137:1135;4256:5;4249:12;;;;;2336:406;2399:4;5006:21;;;:14;;;:21;;;;;;2415:321;;-1:-1:-1;2457:23:37;;;;;;;;:11;:23;;;;;;;;;;;;;2639:18;;2615:21;;;:14;;;:21;;;;;;:42;;;;2671:11;;3432:197:0;2931:4;2954:12;;;;;;;;;;;:29;;;;;;;;;;;;;3515:108;;3565:47;;;;;10422:42:174;10410:55;;3565:47:0;;;10392:74:174;10482:18;;;10475:34;;;10365:18;;3565:47:0;10218:297:174;14:219;81:20;;141:66;130:78;;120:89;;110:117;;223:1;220;213:12;110:117;14:219;;;:::o;238:184::-;296:6;349:2;337:9;328:7;324:23;320:32;317:52;;;365:1;362;355:12;317:52;388:28;406:9;388:28;:::i;619:154::-;705:42;698:5;694:54;687:5;684:65;674:93;;763:1;760;753:12;778:367;846:6;854;907:2;895:9;886:7;882:23;878:32;875:52;;;923:1;920;913:12;875:52;968:23;;;-1:-1:-1;1067:2:174;1052:18;;1039:32;1080:33;1039:32;1080:33;:::i;:::-;1132:7;1122:17;;;778:367;;;;;:::o;1332:226::-;1391:6;1444:2;1432:9;1423:7;1419:23;1415:32;1412:52;;;1460:1;1457;1450:12;1412:52;-1:-1:-1;1505:23:174;;1332:226;-1:-1:-1;1332:226:174:o;1563:388::-;1631:6;1639;1692:2;1680:9;1671:7;1667:23;1663:32;1660:52;;;1708:1;1705;1698:12;1660:52;1747:9;1734:23;1766:31;1791:5;1766:31;:::i;:::-;1816:5;-1:-1:-1;1873:2:174;1858:18;;1845:32;1886:33;1845:32;1886:33;:::i;2328:487::-;2405:6;2413;2421;2474:2;2462:9;2453:7;2449:23;2445:32;2442:52;;;2490:1;2487;2480:12;2442:52;2535:23;;;-1:-1:-1;2634:2:174;2619:18;;2606:32;2647:33;2606:32;2647:33;:::i;:::-;2328:487;;2699:7;;-1:-1:-1;;;2779:2:174;2764:18;;;;2751:32;;2328:487::o;2820:460::-;2896:6;2904;2912;2965:2;2953:9;2944:7;2940:23;2936:32;2933:52;;;2981:1;2978;2971:12;2933:52;3020:9;3007:23;3039:31;3064:5;3039:31;:::i;:::-;3089:5;-1:-1:-1;3113:37:174;3146:2;3131:18;;3113:37;:::i;:::-;3103:47;;3202:2;3191:9;3187:18;3174:32;3215:33;3240:7;3215:33;:::i;:::-;3267:7;3257:17;;;2820:460;;;;;:::o;3285:319::-;3352:6;3360;3413:2;3401:9;3392:7;3388:23;3384:32;3381:52;;;3429:1;3426;3419:12;3381:52;3468:9;3455:23;3487:31;3512:5;3487:31;:::i;:::-;3537:5;-1:-1:-1;3561:37:174;3594:2;3579:18;;3561:37;:::i;:::-;3551:47;;3285:319;;;;;:::o;3609:460::-;3685:6;3693;3701;3754:2;3742:9;3733:7;3729:23;3725:32;3722:52;;;3770:1;3767;3760:12;3722:52;3809:9;3796:23;3828:31;3853:5;3828:31;:::i;:::-;3878:5;-1:-1:-1;3935:2:174;3920:18;;3907:32;3948:33;3907:32;3948:33;:::i;:::-;4000:7;-1:-1:-1;4026:37:174;4059:2;4044:18;;4026:37;:::i;:::-;4016:47;;3609:460;;;;;:::o;4074:247::-;4133:6;4186:2;4174:9;4165:7;4161:23;4157:32;4154:52;;;4202:1;4199;4192:12;4154:52;4241:9;4228:23;4260:31;4285:5;4260:31;:::i;4326:346::-;4394:6;4402;4455:2;4443:9;4434:7;4430:23;4426:32;4423:52;;;4471:1;4468;4461:12;4423:52;-1:-1:-1;;4516:23:174;;;4636:2;4621:18;;;4608:32;;-1:-1:-1;4326:346:174:o;4908:660::-;5098:2;5110:21;;;5180:13;;5083:18;;;5202:22;;;5050:4;;5281:15;;;5255:2;5240:18;;;5050:4;5324:218;5338:6;5335:1;5332:13;5324:218;;;5403:13;;5418:42;5399:62;5387:75;;5491:2;5517:15;;;;5482:12;;;;5360:1;5353:9;5324:218;;;-1:-1:-1;5559:3:174;;4908:660;-1:-1:-1;;;;;4908:660:174:o;5986:367::-;6054:6;6062;6115:2;6103:9;6094:7;6090:23;6086:32;6083:52;;;6131:1;6128;6121:12;6083:52;6170:9;6157:23;6189:31;6214:5;6189:31;:::i;:::-;6239:5;6317:2;6302:18;;;;6289:32;;-1:-1:-1;;;5986:367:174:o;6358:477::-;6507:2;6496:9;6489:21;6470:4;6539:6;6533:13;6582:6;6577:2;6566:9;6562:18;6555:34;6641:6;6636:2;6628:6;6624:15;6619:2;6608:9;6604:18;6598:50;6697:1;6692:2;6683:6;6672:9;6668:22;6664:31;6657:42;6826:2;6756:66;6751:2;6743:6;6739:15;6735:88;6724:9;6720:104;6716:113;6708:121;;;6358:477;;;;:::o;7142:277::-;7209:6;7262:2;7250:9;7241:7;7237:23;7233:32;7230:52;;;7278:1;7275;7268:12;7230:52;7310:9;7304:16;7363:5;7356:13;7349:21;7342:5;7339:32;7329:60;;7385:1;7382;7375:12;7424:251;7494:6;7547:2;7535:9;7526:7;7522:23;7518:32;7515:52;;;7563:1;7560;7553:12;7515:52;7595:9;7589:16;7614:31;7639:5;7614:31;:::i;7680:184::-;7732:77;7729:1;7722:88;7829:4;7826:1;7819:15;7853:4;7850:1;7843:15;7869:184;7921:77;7918:1;7911:88;8018:4;8015:1;8008:15;8042:4;8039:1;8032:15;8058:195;8097:3;8128:66;8121:5;8118:77;8115:103;;8198:18;;:::i;:::-;-1:-1:-1;8245:1:174;8234:13;;8058:195::o;8258:212::-;8300:3;8338:5;8332:12;8382:6;8375:4;8368:5;8364:16;8359:3;8353:36;8444:1;8408:16;;8433:13;;;-1:-1:-1;8408:16:174;;8258:212;-1:-1:-1;8258:212:174:o;8475:267::-;8654:3;8679:57;8705:30;8731:3;8723:6;8705:30;:::i;:::-;8697:6;8679:57;:::i;8934:357::-;9052:12;;9099:4;9088:16;;;9082:23;;9052:12;9117:16;;9114:171;;;9207:66;9197:6;9191:4;9187:17;9184:1;9180:25;9176:98;9169:5;9165:110;9156:119;;9114:171;;8934:357;;;:::o;9549:342::-;9776:3;9801:84;9827:57;9853:30;9879:3;9871:6;9853:30;:::i;:::-;9845:6;9827:57;:::i;9801:84::-;9794:91;9549:342;-1:-1:-1;;;;;9549:342:174:o;9896:128::-;9963:9;;;9984:11;;;9981:37;;;9998:18;;:::i;10029:184::-;10081:77;10078:1;10071:88;10178:4;10175:1;10168:15;10202:4;10199:1;10192:15","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","confirmNewCallingContractAdmin(address)":"5f9a9c2b","confirmNewForeignCallAdmin(address,bytes4)":"393093df","confirmNewPolicyAdmin(uint256)":"c976afd6","generatePolicyAdminRole(uint256,address)":"1929cb64","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","getRoleMembers(bytes32)":"a3246ad3","grantCallingContractRole(address,address)":"804ba97d","grantCallingContractRoleAccessControl(address,address)":"261b0245","grantCallingContractRoleOwnable(address,address)":"2f16a358","grantForeignCallAdminRole(address,address,bytes4)":"dda335ae","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","isCallingContractAdmin(address,address)":"70aca092","isForeignCallAdmin(address,address,bytes4)":"41a2b7ae","isPolicyAdmin(uint256,address)":"901cee11","proposeNewCallingContractAdmin(address,address)":"a8c014f4","proposeNewForeignCallAdmin(address,address,bytes4)":"6e9ad756","proposeNewPolicyAdmin(address,uint256)":"d92f90fc","renounceCallingContractAdminRole(address,address)":"e605bd7c","renounceForeignCallAdminRole(address,bytes4,address)":"3262d3d2","renouncePolicyAdminRole(bytes32,address,uint256)":"2f46a2e7","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","revokeRole(bytes32,address,uint256)":"d27efca5","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"callingContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"}],\"name\":\"CallingContractAdminRoleConfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"callingContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"}],\"name\":\"CallingContractAdminRoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"callingContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposedAdminAddress\",\"type\":\"address\"}],\"name\":\"CallingContractAdminRoleProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"callingContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"}],\"name\":\"CallingContractAdminRoleRenounced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"foreignCallContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"}],\"name\":\"ForeignCallAdminRoleConfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"foreignCallContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"}],\"name\":\"ForeignCallAdminRoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"foreignCallContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposedAdminAddress\",\"type\":\"address\"}],\"name\":\"ForeignCallAdminRoleProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"foreignCallContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"ForeignCallPermissionsRenounced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"PolicyAdminRoleConfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"PolicyAdminRoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposedAdminAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"PolicyAdminRoleProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"PolicyAdminRoleRenounced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"PolicyAdminRoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callingContractAddress\",\"type\":\"address\"}],\"name\":\"confirmNewCallingContractAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"foreignCallContract\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"functionSignature\",\"type\":\"bytes4\"}],\"name\":\"confirmNewForeignCallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"confirmNewPolicyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"generatePolicyAdminRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_callingContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"grantCallingContractRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_callingContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"grantCallingContractRoleAccessControl\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_callingContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"grantCallingContractRoleOwnable\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_foreignCallContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_functionSignature\",\"type\":\"bytes4\"}],\"name\":\"grantForeignCallAdminRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_callingContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isCallingContractAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_foreignCallContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_functionSignature\",\"type\":\"bytes4\"}],\"name\":\"isForeignCallAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPolicyAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callingContractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newCallingContractAdmin\",\"type\":\"address\"}],\"name\":\"proposeNewCallingContractAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"foreignCallContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newForeignCallContractAdmin\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"functionSignature\",\"type\":\"bytes4\"}],\"name\":\"proposeNewForeignCallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPolicyAdmin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"proposeNewPolicyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callingContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceCallingContractAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_foreignCallContract\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_functionSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceForeignCallAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"renouncePolicyAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"policyId\",\"type\":\"uint256\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"@mpetersoCode55, @ShaneDuncan602, @TJ-Everett, @VoR0220\",\"details\":\"This contract serves as the primary Admin Roles facet for the Rules Engine. It is responsible for managing, mutating,      and granting all admin roles, including policy and calling contract admin roles. It enforces role-based access control      and ensures proper role assignment and revocation. The contract also provides mechanisms for proposing and confirming      new admin roles.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"confirmNewCallingContractAdmin(address)\":{\"details\":\"This function confirms the proposed admin role\",\"params\":{\"callingContractAddress\":\"address of the calling contract.\"}},\"confirmNewForeignCallAdmin(address,bytes4)\":{\"details\":\"This function confirms the proposed admin role\",\"params\":{\"foreignCallContract\":\"address of the calling contract.\"}},\"confirmNewPolicyAdmin(uint256)\":{\"params\":{\"policyId\":\"The ID of the policy.\"}},\"generatePolicyAdminRole(uint256,address)\":{\"details\":\"This function is called internally by the Rules Engine to assign the policy admin role.\",\"params\":{\"account\":\"The address to assign the policy admin role.\",\"policyId\":\"The ID of the policy.\"},\"returns\":{\"_0\":\"bytes32 The generated admin role identifier.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"grantCallingContractRole(address,address)\":{\"details\":\"Call this function from your contract to set the calling contract admin.\",\"params\":{\"_account\":\"The address to assign the calling contract admin role.\",\"_callingContract\":\"The address of the calling contract.\"},\"returns\":{\"_0\":\"bytes32 The generated admin role identifier.\"}},\"grantCallingContractRoleAccessControl(address,address)\":{\"details\":\"Function to grant calling contract admin roleCall this function when you are the calling contract admin of your contractThis method allows contracts that implement AccessControl to grant a calling contract admin role without inheriting the full RulesEngineClient contract\",\"params\":{\"_account\":\"address to assign admin role Id\",\"_callingContract\":\"policy Id\"},\"returns\":{\"_0\":\"bytes32 adminRoleId\"}},\"grantCallingContractRoleOwnable(address,address)\":{\"details\":\"Call this function from your contract to set the calling contract admin.This method allows contracts that implement Ownable to grant a calling contract admin role without inheriting the full RulesEngineClient contract\",\"params\":{\"_account\":\"The address to assign the calling contract admin role.\",\"_callingContract\":\"The address of the calling contract.\"},\"returns\":{\"_0\":\"bytes32 The generated admin role identifier.\"}},\"grantForeignCallAdminRole(address,address,bytes4)\":{\"details\":\"Call this function from your contract to set the foreign call admin.\",\"params\":{\"_account\":\"The address to assign the foreign call admin role.\",\"_foreignCallContract\":\"The address of the foreign call.\"},\"returns\":{\"_0\":\"bytes32 The generated admin role identifier.\"}},\"grantRole(bytes32,address)\":{\"details\":\"This function is intentionally disabled to enforce role granting through specific channels.\",\"params\":{\"account\":\"The address to grant the role to.\",\"role\":\"The role to grant.\"}},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isCallingContractAdmin(address,address)\":{\"params\":{\"_account\":\"The address to check for the calling contract admin role.\",\"_callingContract\":\"The address of the calling contract.\"},\"returns\":{\"_0\":\"bool True if the address has the calling contract admin role, false otherwise.\"}},\"isForeignCallAdmin(address,address,bytes4)\":{\"params\":{\"_account\":\"The address to check for the foreign call admin role.\",\"_foreignCallContract\":\"The address of the foreign call contract.\",\"_functionSignature\":\"The function signature for which the foreign call admin role is being checked.\"},\"returns\":{\"_0\":\"bool True if the address has the foreign admin role, false otherwise.\"}},\"isPolicyAdmin(uint256,address)\":{\"params\":{\"account\":\"The address to check for the policy admin role.\",\"policyId\":\"The ID of the policy.\"},\"returns\":{\"_0\":\"bool True if the address has the policy admin role, false otherwise.\"}},\"proposeNewCallingContractAdmin(address,address)\":{\"details\":\"This function grants the proposed admin role to the newPolicyAdmin addressCalling Contract Admin does not have a revoke or renounce function. Only Use Propose and Confirm to transfer Role.\",\"params\":{\"callingContractAddress\":\"address of the calling contract.\",\"newCallingContractAdmin\":\"address of new admin.\"}},\"proposeNewForeignCallAdmin(address,address,bytes4)\":{\"details\":\"This function grants the proposed admin role to the foreignCall Admin addressForeign Call Admin does not have a revoke or renounce function. Only Use Propose and Confirm to transfer Role.\",\"params\":{\"foreignCallContract\":\"address of the foreign call contract.\",\"newForeignCallContractAdmin\":\"address of new admin.\"}},\"proposeNewPolicyAdmin(address,uint256)\":{\"params\":{\"newPolicyAdmin\":\"The address of the proposed new policy admin.\",\"policyId\":\"The ID of the policy.\"}},\"renounceCallingContractAdminRole(address,address)\":{\"details\":\"This function is used to renounce Calling Contract Admin Role.\",\"params\":{\"account\":\"address renouncing to the role.\",\"callingContract\":\"the calling contract associated to the role.\"}},\"renounceForeignCallAdminRole(address,bytes4,address)\":{\"details\":\"This function is used to renounce Foreign Call Admin Role.\",\"params\":{\"_foreignCallContract\":\"the role to renounce.\",\"_functionSignature\":\"function signature of the foreign call\",\"account\":\"address renouncing to the role.\"}},\"renouncePolicyAdminRole(bytes32,address,uint256)\":{\"details\":\"This function is used to renounce Role. It is also preventing policyAdmins from renouncing ther role. They must set another policyAdmin through the function proposeNewPolicyAdmin().\",\"params\":{\"account\":\"address renouncing to the role.\",\"role\":\"the role to renounce.\"}},\"renounceRole(bytes32,address)\":{\"details\":\"This function is intentionally disabled to enforce role renouncing through specific channels.\",\"params\":{\"account\":\"The address renouncing the role.\",\"role\":\"The role to renounce.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"This function is intentionally disabled to enforce role revocation through specific channels.\",\"params\":{\"account\":\"The address of the revoked role.\",\"role\":\"The role to revoke.\"}},\"revokeRole(bytes32,address,uint256)\":{\"details\":\"This function overrides the parent's revokeRole function. Its purpose is to prevent Policy Admins from being revoked through this \\\"backdoor\\\" which would effectively leave the policy in a Policy Admin-orphan state.\",\"params\":{\"account\":\"address of revoked role.\",\"role\":\"the role to revoke.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"Rules Engine Admin Roles Facet\",\"version\":1},\"userdoc\":{\"events\":{\"PolicyAdminRoleGranted(address,uint256)\":{\"notice\":\"Admin Events\"}},\"kind\":\"user\",\"methods\":{\"confirmNewPolicyAdmin(uint256)\":{\"notice\":\"Confirms the proposed policy admin for a specific policy.\"},\"generatePolicyAdminRole(uint256,address)\":{\"notice\":\"Generates and assigns a policy admin role to an address.\"},\"grantCallingContractRole(address,address)\":{\"notice\":\"Grants the calling contract admin role to an address.\"},\"grantCallingContractRoleOwnable(address,address)\":{\"notice\":\"Grants the calling contract admin role to an address.\"},\"grantForeignCallAdminRole(address,address,bytes4)\":{\"notice\":\"Grants the foreign call admin role to an address.\"},\"grantRole(bytes32,address)\":{\"notice\":\"Overrides the parent's `grantRole` function to disable its public nature.\"},\"isCallingContractAdmin(address,address)\":{\"notice\":\"Checks if an address is the calling contract admin for a specific contract.\"},\"isForeignCallAdmin(address,address,bytes4)\":{\"notice\":\"Checks if an address is the foreign call admin for a specific contract.\"},\"isPolicyAdmin(uint256,address)\":{\"notice\":\"Checks if an address is the policy admin for a specific policy ID.\"},\"proposeNewCallingContractAdmin(address,address)\":{\"notice\":\"There can only ever be one Calling Contract Admin per calling contract\"},\"proposeNewForeignCallAdmin(address,address,bytes4)\":{\"notice\":\"There can only ever be one Foreign Call Admin per foriegn call contract\"},\"proposeNewPolicyAdmin(address,uint256)\":{\"notice\":\"Proposes a new policy admin for a specific policy.\"},\"renounceRole(bytes32,address)\":{\"notice\":\"Overrides the parent's `renounceRole` function to disable its public nature.\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Overrides the parent's `revokeRole` function to disable its public nature.\"}},\"notice\":\"This contract is a critical component of the Rules Engine, enabling secure and flexible role management.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/engine/facets/RulesEngineAdminRolesFacet.sol\":\"RulesEngineAdminRolesFacet\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000000000},\"remappings\":[\":@openzeppelin-contracts-5.3.0/=dependencies/@openzeppelin-contracts-5.3.0/\",\":@openzeppelin/=dependencies/@openzeppelin-contracts-5.3.0/\",\":diamond-std/=lib/diamond-std/\",\":forge-std-1.9.7/=dependencies/forge-std-1.9.7/src/\",\":forge-std/=dependencies/forge-std-1.9.7/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.3.0/access/AccessControl.sol\":{\"keccak256\":\"0xc1bebdee8943bd5e9ef1e0f2e63296aa1dd4171a66b9e74d0286220e891e1458\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://928cf2f0042c606f3dcb21bd8a272573f462a215cd65285d2d6b407f31e9bd67\",\"dweb:/ipfs/QmWGxjckno6sfjHPX5naPnsfsyisgy4PJDf46eLw9umfpx\"]},\"dependencies/@openzeppelin-contracts-5.3.0/access/IAccessControl.sol\":{\"keccak256\":\"0x4d9a2b261b56a1e4a37bb038151dec98b952fed16de2bdfdda27e38e2b12b530\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f724110f7aeb6151af800ab8c12e6060b29bda9e013f0ccb331eb754d6a7cbf0\",\"dweb:/ipfs/QmUcjzCZpxtUPdEThtAzE1f9LvuJiUGZxTdH9N6bHrb5Cf\"]},\"dependencies/@openzeppelin-contracts-5.3.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.3.0/access/extensions/AccessControlEnumerable.sol\":{\"keccak256\":\"0x9e4c7633cf75fad6f1719558c4031217bfc925cf62778eabb7c114cb9a2ac525\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f90d4223161ed133f2e64ca2f2abcaaa2b4624bc803bd676b3078744a509c322\",\"dweb:/ipfs/QmTzoz1b6UXpUWzF6Tsq7WL4QE7nPz4YgmFT9hK1qH575k\"]},\"dependencies/@openzeppelin-contracts-5.3.0/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xca774fbe0568762efdc1a7cba31f09549c7fa96dbe97410f4843fa2f0bc000a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0187ffdbf3d61b6d86cba4fcd9826e53d876987d620533ee84c681bdaf0f3ba3\",\"dweb:/ipfs/QmVJDqdJv6uzHY7ifncfv2QJep8XTzS3bGb4s5Exhuv86m\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/Arrays.sol\":{\"keccak256\":\"0x55a4fdb408e3db950b48f4a6131e538980be8c5f48ee59829d92d66477140cd6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3e1ad251e692822ce1494135a4ecb5b97c19b90aa82418fd2959ce32017953fd\",\"dweb:/ipfs/QmT6N7mf6heZYhY2BAQ5kwZp9o3SXzGVdkMqUszx67WRDN\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.3.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0xecd5f3c702f549fb88555e44e5f2415a4dfd6db09081aec7e98c26b6a3739c06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed40e907a6d80458a0556a609d0d3991d718c20f9f1f21475e5ec739af523231\",\"dweb:/ipfs/QmejkwADsZRxkusNU94sswMJfpLrbq8RkJTbNccUEQpc7Y\"]},\"lib/diamond-std/core/DiamondCut/FacetCut.sol\":{\"keccak256\":\"0x20816015bfdcd3885faafc4c1b90f96c614c3f21e02e1c6022069568aaf425d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d8f60b2f3f806e21b1f654af3179b9b9d1a1f9ca6b31da158e7daac7f61af8d\",\"dweb:/ipfs/QmWJDgFwrYKD6Fyer2tg9Q1vMhnS7acphoYd6daTch7Wae\"]},\"src/engine/AccessModifiers.sol\":{\"keccak256\":\"0x4ae72899683cda5a4411176e40560d4ea56e91cb86b91dd766a9d7833c0b3afb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1f343686051fb6eae3b1bcfed6515f2e1b732c1d60d9615cbbe9d9eb0c574da2\",\"dweb:/ipfs/QmfBXEAHYGuMnwdcQvvHvmb4MqoDxgK3ibMt9aYARvgRFt\"]},\"src/engine/RulesEngineDiamondLib.sol\":{\"keccak256\":\"0x55ff566e9f6d63770e8afe5f3ba9f7459f7344b2f27212fa0ef986b976813282\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2879ff9d8fc0f89e9927b5b96c3f011686bf4754a5c3c6c388a7c070a1787d53\",\"dweb:/ipfs/QmaH59QhdMYXy3MMa4S1VwSnfVpENTarvjyEz935qV715a\"]},\"src/engine/RulesEngineErrors.sol\":{\"keccak256\":\"0x30bc8e3b84570dcefb010f0b34937cf8f349a0b3b3233be8eb7cd252964c9302\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://917417130bdde3abe677e8addccd5dcb74f6a4ce32cb5277c4018f03fc587594\",\"dweb:/ipfs/QmTdpgdpJw3uq4nV991UssvuY4gjnRK939ikmaYaQ1pV5j\"]},\"src/engine/RulesEngineEvents.sol\":{\"keccak256\":\"0x92ff62f6eca05d71bdf6517eb22b54718489a3ff0687a1a26c55ed69e6fa2b0d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://831cda139b4bfe7adb65fd0890c4d9ec0a919439ad3b9799c29c4e3e4bd9a125\",\"dweb:/ipfs/QmYFr2LTCWjxPwJp2z3GwiR8732BTAnkYmtMk4j4k6YEu1\"]},\"src/engine/RulesEngineStoragePositionLib.sol\":{\"keccak256\":\"0xfacb01784b9ef05260fba07c7e338936b82860549a0b25d343eb30a7d824065f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d07dbf03b075e2c0a78d269da503b856b5da98a1cbc51a318196d168277042f8\",\"dweb:/ipfs/QmbNTAUoaeTQWAQxiM3t7ZHk1rFLN8ZEnr2eaTmFZztsR2\"]},\"src/engine/RulesEngineStorageStructure.sol\":{\"keccak256\":\"0x4024280353fda45187d8628e52eabba192c5e98a70532546f268bd742396a4ad\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://74f739f999210f4f4e9ce82ffc7e5d7b6e939fd0f2f663d1cf46a9e979694be6\",\"dweb:/ipfs/QmXnqdLv2TEFSmGdvPDEC116hxmXYS5aeDSDUgYhbTPg7Y\"]},\"src/engine/facets/AdminRoles.sol\":{\"keccak256\":\"0x15c94ccc7c6c7031f7252021d5de52f2bcb5a0c35ac1ec1d8320c20a2ebe2f67\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b33dc4bd9b22b31566b76f75952a151b6d6a36d2257f57761694c0befa03559c\",\"dweb:/ipfs/QmSSS7nmdBCWBvYuQGYrpmp5GTDupRys2gXKfYn9nysMSn\"]},\"src/engine/facets/FacetCommonImports.sol\":{\"keccak256\":\"0xa8e9922c767a09257097bf86723642ffed2a9210d65d1a77ce923b22bb969376\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17a043d8f4a10704011ae0d9385e69bc55b0159f961e08231cdd82b973c00b85\",\"dweb:/ipfs/QmNQdbYVQG7ad57ZTxLUqpm5As7PorfgeFcuGFUwVG7WZv\"]},\"src/engine/facets/FacetUtils.sol\":{\"keccak256\":\"0x856186c5851203d73ab9acbdff73f37c41b8cfc8129248eff6655970f7657f34\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c3570a59a5f4086b65de7963d344d5c0ffdfa512a3a23be1c29c9ada8c4ec068\",\"dweb:/ipfs/QmW6XFPQRiJxqMwpPdqX3ubKm61ZqHD5DicSyQXkzcGJfB\"]},\"src/engine/facets/RulesEngineAdminRolesFacet.sol\":{\"keccak256\":\"0xee2f41cb7759ee9988cbcc505ca67dcb9921070efd3b52f5b223ca02a24cc81d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a2898f6cb7b94dbe3e2735e32a2a7f1fb6aba3576a7655bedd599c4b30a3fb9f\",\"dweb:/ipfs/QmUvuw3QXH91SofMRrBnPoU2iMRKfxL8dD3bj68T4u5Uk5\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"callingContract","type":"address","indexed":true},{"internalType":"address","name":"adminAddress","type":"address","indexed":true}],"type":"event","name":"CallingContractAdminRoleConfirmed","anonymous":false},{"inputs":[{"internalType":"address","name":"callingContract","type":"address","indexed":true},{"internalType":"address","name":"adminAddress","type":"address","indexed":true}],"type":"event","name":"CallingContractAdminRoleGranted","anonymous":false},{"inputs":[{"internalType":"address","name":"callingContract","type":"address","indexed":true},{"internalType":"address","name":"proposedAdminAddress","type":"address","indexed":true}],"type":"event","name":"CallingContractAdminRoleProposed","anonymous":false},{"inputs":[{"internalType":"address","name":"callingContract","type":"address","indexed":true},{"internalType":"address","name":"adminAddress","type":"address","indexed":true}],"type":"event","name":"CallingContractAdminRoleRenounced","anonymous":false},{"inputs":[{"internalType":"address","name":"foreignCallContract","type":"address","indexed":true},{"internalType":"address","name":"adminAddress","type":"address","indexed":true}],"type":"event","name":"ForeignCallAdminRoleConfirmed","anonymous":false},{"inputs":[{"internalType":"address","name":"foreignCallContract","type":"address","indexed":true},{"internalType":"address","name":"adminAddress","type":"address","indexed":true}],"type":"event","name":"ForeignCallAdminRoleGranted","anonymous":false},{"inputs":[{"internalType":"address","name":"foreignCallContract","type":"address","indexed":true},{"internalType":"address","name":"proposedAdminAddress","type":"address","indexed":true}],"type":"event","name":"ForeignCallAdminRoleProposed","anonymous":false},{"inputs":[{"internalType":"address","name":"foreignCallContract","type":"address","indexed":true},{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"ForeignCallPermissionsRenounced","anonymous":false},{"inputs":[{"internalType":"address","name":"adminAddress","type":"address","indexed":true},{"internalType":"uint256","name":"policyId","type":"uint256","indexed":true}],"type":"event","name":"PolicyAdminRoleConfirmed","anonymous":false},{"inputs":[{"internalType":"address","name":"adminAddress","type":"address","indexed":true},{"internalType":"uint256","name":"policyId","type":"uint256","indexed":true}],"type":"event","name":"PolicyAdminRoleGranted","anonymous":false},{"inputs":[{"internalType":"address","name":"proposedAdminAddress","type":"address","indexed":true},{"internalType":"uint256","name":"policyId","type":"uint256","indexed":true}],"type":"event","name":"PolicyAdminRoleProposed","anonymous":false},{"inputs":[{"internalType":"address","name":"adminAddress","type":"address","indexed":true},{"internalType":"uint256","name":"policyId","type":"uint256","indexed":true}],"type":"event","name":"PolicyAdminRoleRenounced","anonymous":false},{"inputs":[{"internalType":"address","name":"adminAddress","type":"address","indexed":true},{"internalType":"uint256","name":"policyId","type":"uint256","indexed":true}],"type":"event","name":"PolicyAdminRoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"callingContractAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"confirmNewCallingContractAdmin"},{"inputs":[{"internalType":"address","name":"foreignCallContract","type":"address"},{"internalType":"bytes4","name":"functionSignature","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"confirmNewForeignCallAdmin"},{"inputs":[{"internalType":"uint256","name":"policyId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"confirmNewPolicyAdmin"},{"inputs":[{"internalType":"uint256","name":"policyId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"generatePolicyAdminRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleMembers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"_callingContract","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCallingContractRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_callingContract","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCallingContractRoleAccessControl","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_callingContract","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCallingContractRoleOwnable","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_foreignCallContract","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"bytes4","name":"_functionSignature","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"grantForeignCallAdminRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"pure","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_callingContract","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"isCallingContractAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_foreignCallContract","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"bytes4","name":"_functionSignature","type":"bytes4"}],"stateMutability":"view","type":"function","name":"isForeignCallAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"policyId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPolicyAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"callingContractAddress","type":"address"},{"internalType":"address","name":"newCallingContractAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"proposeNewCallingContractAdmin"},{"inputs":[{"internalType":"address","name":"foreignCallContract","type":"address"},{"internalType":"address","name":"newForeignCallContractAdmin","type":"address"},{"internalType":"bytes4","name":"functionSignature","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"proposeNewForeignCallAdmin"},{"inputs":[{"internalType":"address","name":"newPolicyAdmin","type":"address"},{"internalType":"uint256","name":"policyId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"proposeNewPolicyAdmin"},{"inputs":[{"internalType":"address","name":"callingContract","type":"address"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceCallingContractAdminRole"},{"inputs":[{"internalType":"address","name":"_foreignCallContract","type":"address"},{"internalType":"bytes4","name":"_functionSignature","type":"bytes4"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceForeignCallAdminRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"policyId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"renouncePolicyAdminRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"policyId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"confirmNewCallingContractAdmin(address)":{"details":"This function confirms the proposed admin role","params":{"callingContractAddress":"address of the calling contract."}},"confirmNewForeignCallAdmin(address,bytes4)":{"details":"This function confirms the proposed admin role","params":{"foreignCallContract":"address of the calling contract."}},"confirmNewPolicyAdmin(uint256)":{"params":{"policyId":"The ID of the policy."}},"generatePolicyAdminRole(uint256,address)":{"details":"This function is called internally by the Rules Engine to assign the policy admin role.","params":{"account":"The address to assign the policy admin role.","policyId":"The ID of the policy."},"returns":{"_0":"bytes32 The generated admin role identifier."}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getRoleMember(bytes32,uint256)":{"details":"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."},"getRoleMemberCount(bytes32)":{"details":"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."},"getRoleMembers(bytes32)":{"details":"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."},"grantCallingContractRole(address,address)":{"details":"Call this function from your contract to set the calling contract admin.","params":{"_account":"The address to assign the calling contract admin role.","_callingContract":"The address of the calling contract."},"returns":{"_0":"bytes32 The generated admin role identifier."}},"grantCallingContractRoleAccessControl(address,address)":{"details":"Function to grant calling contract admin roleCall this function when you are the calling contract admin of your contractThis method allows contracts that implement AccessControl to grant a calling contract admin role without inheriting the full RulesEngineClient contract","params":{"_account":"address to assign admin role Id","_callingContract":"policy Id"},"returns":{"_0":"bytes32 adminRoleId"}},"grantCallingContractRoleOwnable(address,address)":{"details":"Call this function from your contract to set the calling contract admin.This method allows contracts that implement Ownable to grant a calling contract admin role without inheriting the full RulesEngineClient contract","params":{"_account":"The address to assign the calling contract admin role.","_callingContract":"The address of the calling contract."},"returns":{"_0":"bytes32 The generated admin role identifier."}},"grantForeignCallAdminRole(address,address,bytes4)":{"details":"Call this function from your contract to set the foreign call admin.","params":{"_account":"The address to assign the foreign call admin role.","_foreignCallContract":"The address of the foreign call."},"returns":{"_0":"bytes32 The generated admin role identifier."}},"grantRole(bytes32,address)":{"details":"This function is intentionally disabled to enforce role granting through specific channels.","params":{"account":"The address to grant the role to.","role":"The role to grant."}},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"isCallingContractAdmin(address,address)":{"params":{"_account":"The address to check for the calling contract admin role.","_callingContract":"The address of the calling contract."},"returns":{"_0":"bool True if the address has the calling contract admin role, false otherwise."}},"isForeignCallAdmin(address,address,bytes4)":{"params":{"_account":"The address to check for the foreign call admin role.","_foreignCallContract":"The address of the foreign call contract.","_functionSignature":"The function signature for which the foreign call admin role is being checked."},"returns":{"_0":"bool True if the address has the foreign admin role, false otherwise."}},"isPolicyAdmin(uint256,address)":{"params":{"account":"The address to check for the policy admin role.","policyId":"The ID of the policy."},"returns":{"_0":"bool True if the address has the policy admin role, false otherwise."}},"proposeNewCallingContractAdmin(address,address)":{"details":"This function grants the proposed admin role to the newPolicyAdmin addressCalling Contract Admin does not have a revoke or renounce function. Only Use Propose and Confirm to transfer Role.","params":{"callingContractAddress":"address of the calling contract.","newCallingContractAdmin":"address of new admin."}},"proposeNewForeignCallAdmin(address,address,bytes4)":{"details":"This function grants the proposed admin role to the foreignCall Admin addressForeign Call Admin does not have a revoke or renounce function. Only Use Propose and Confirm to transfer Role.","params":{"foreignCallContract":"address of the foreign call contract.","newForeignCallContractAdmin":"address of new admin."}},"proposeNewPolicyAdmin(address,uint256)":{"params":{"newPolicyAdmin":"The address of the proposed new policy admin.","policyId":"The ID of the policy."}},"renounceCallingContractAdminRole(address,address)":{"details":"This function is used to renounce Calling Contract Admin Role.","params":{"account":"address renouncing to the role.","callingContract":"the calling contract associated to the role."}},"renounceForeignCallAdminRole(address,bytes4,address)":{"details":"This function is used to renounce Foreign Call Admin Role.","params":{"_foreignCallContract":"the role to renounce.","_functionSignature":"function signature of the foreign call","account":"address renouncing to the role."}},"renouncePolicyAdminRole(bytes32,address,uint256)":{"details":"This function is used to renounce Role. It is also preventing policyAdmins from renouncing ther role. They must set another policyAdmin through the function proposeNewPolicyAdmin().","params":{"account":"address renouncing to the role.","role":"the role to renounce."}},"renounceRole(bytes32,address)":{"details":"This function is intentionally disabled to enforce role renouncing through specific channels.","params":{"account":"The address renouncing the role.","role":"The role to renounce."}},"revokeRole(bytes32,address)":{"details":"This function is intentionally disabled to enforce role revocation through specific channels.","params":{"account":"The address of the revoked role.","role":"The role to revoke."}},"revokeRole(bytes32,address,uint256)":{"details":"This function overrides the parent's revokeRole function. Its purpose is to prevent Policy Admins from being revoked through this \"backdoor\" which would effectively leave the policy in a Policy Admin-orphan state.","params":{"account":"address of revoked role.","role":"the role to revoke."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"confirmNewPolicyAdmin(uint256)":{"notice":"Confirms the proposed policy admin for a specific policy."},"generatePolicyAdminRole(uint256,address)":{"notice":"Generates and assigns a policy admin role to an address."},"grantCallingContractRole(address,address)":{"notice":"Grants the calling contract admin role to an address."},"grantCallingContractRoleOwnable(address,address)":{"notice":"Grants the calling contract admin role to an address."},"grantForeignCallAdminRole(address,address,bytes4)":{"notice":"Grants the foreign call admin role to an address."},"grantRole(bytes32,address)":{"notice":"Overrides the parent's `grantRole` function to disable its public nature."},"isCallingContractAdmin(address,address)":{"notice":"Checks if an address is the calling contract admin for a specific contract."},"isForeignCallAdmin(address,address,bytes4)":{"notice":"Checks if an address is the foreign call admin for a specific contract."},"isPolicyAdmin(uint256,address)":{"notice":"Checks if an address is the policy admin for a specific policy ID."},"proposeNewCallingContractAdmin(address,address)":{"notice":"There can only ever be one Calling Contract Admin per calling contract"},"proposeNewForeignCallAdmin(address,address,bytes4)":{"notice":"There can only ever be one Foreign Call Admin per foriegn call contract"},"proposeNewPolicyAdmin(address,uint256)":{"notice":"Proposes a new policy admin for a specific policy."},"renounceRole(bytes32,address)":{"notice":"Overrides the parent's `renounceRole` function to disable its public nature."},"revokeRole(bytes32,address)":{"notice":"Overrides the parent's `revokeRole` function to disable its public nature."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.3.0/=dependencies/@openzeppelin-contracts-5.3.0/","@openzeppelin/=dependencies/@openzeppelin-contracts-5.3.0/","diamond-std/=lib/diamond-std/","forge-std-1.9.7/=dependencies/forge-std-1.9.7/src/","forge-std/=dependencies/forge-std-1.9.7/"],"optimizer":{"enabled":true,"runs":2000000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/engine/facets/RulesEngineAdminRolesFacet.sol":"RulesEngineAdminRolesFacet"},"evmVersion":"cancun","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.3.0/access/AccessControl.sol":{"keccak256":"0xc1bebdee8943bd5e9ef1e0f2e63296aa1dd4171a66b9e74d0286220e891e1458","urls":["bzz-raw://928cf2f0042c606f3dcb21bd8a272573f462a215cd65285d2d6b407f31e9bd67","dweb:/ipfs/QmWGxjckno6sfjHPX5naPnsfsyisgy4PJDf46eLw9umfpx"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/access/IAccessControl.sol":{"keccak256":"0x4d9a2b261b56a1e4a37bb038151dec98b952fed16de2bdfdda27e38e2b12b530","urls":["bzz-raw://f724110f7aeb6151af800ab8c12e6060b29bda9e013f0ccb331eb754d6a7cbf0","dweb:/ipfs/QmUcjzCZpxtUPdEThtAzE1f9LvuJiUGZxTdH9N6bHrb5Cf"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/access/extensions/AccessControlEnumerable.sol":{"keccak256":"0x9e4c7633cf75fad6f1719558c4031217bfc925cf62778eabb7c114cb9a2ac525","urls":["bzz-raw://f90d4223161ed133f2e64ca2f2abcaaa2b4624bc803bd676b3078744a509c322","dweb:/ipfs/QmTzoz1b6UXpUWzF6Tsq7WL4QE7nPz4YgmFT9hK1qH575k"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/access/extensions/IAccessControlEnumerable.sol":{"keccak256":"0xca774fbe0568762efdc1a7cba31f09549c7fa96dbe97410f4843fa2f0bc000a3","urls":["bzz-raw://0187ffdbf3d61b6d86cba4fcd9826e53d876987d620533ee84c681bdaf0f3ba3","dweb:/ipfs/QmVJDqdJv6uzHY7ifncfv2QJep8XTzS3bGb4s5Exhuv86m"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/Arrays.sol":{"keccak256":"0x55a4fdb408e3db950b48f4a6131e538980be8c5f48ee59829d92d66477140cd6","urls":["bzz-raw://3e1ad251e692822ce1494135a4ecb5b97c19b90aa82418fd2959ce32017953fd","dweb:/ipfs/QmT6N7mf6heZYhY2BAQ5kwZp9o3SXzGVdkMqUszx67WRDN"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/Comparators.sol":{"keccak256":"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58","urls":["bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd","dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/introspection/ERC165.sol":{"keccak256":"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa","urls":["bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287","dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.3.0/utils/structs/EnumerableSet.sol":{"keccak256":"0xecd5f3c702f549fb88555e44e5f2415a4dfd6db09081aec7e98c26b6a3739c06","urls":["bzz-raw://ed40e907a6d80458a0556a609d0d3991d718c20f9f1f21475e5ec739af523231","dweb:/ipfs/QmejkwADsZRxkusNU94sswMJfpLrbq8RkJTbNccUEQpc7Y"],"license":"MIT"},"lib/diamond-std/core/DiamondCut/FacetCut.sol":{"keccak256":"0x20816015bfdcd3885faafc4c1b90f96c614c3f21e02e1c6022069568aaf425d3","urls":["bzz-raw://5d8f60b2f3f806e21b1f654af3179b9b9d1a1f9ca6b31da158e7daac7f61af8d","dweb:/ipfs/QmWJDgFwrYKD6Fyer2tg9Q1vMhnS7acphoYd6daTch7Wae"],"license":"MIT"},"src/engine/AccessModifiers.sol":{"keccak256":"0x4ae72899683cda5a4411176e40560d4ea56e91cb86b91dd766a9d7833c0b3afb","urls":["bzz-raw://1f343686051fb6eae3b1bcfed6515f2e1b732c1d60d9615cbbe9d9eb0c574da2","dweb:/ipfs/QmfBXEAHYGuMnwdcQvvHvmb4MqoDxgK3ibMt9aYARvgRFt"],"license":"BUSL-1.1"},"src/engine/RulesEngineDiamondLib.sol":{"keccak256":"0x55ff566e9f6d63770e8afe5f3ba9f7459f7344b2f27212fa0ef986b976813282","urls":["bzz-raw://2879ff9d8fc0f89e9927b5b96c3f011686bf4754a5c3c6c388a7c070a1787d53","dweb:/ipfs/QmaH59QhdMYXy3MMa4S1VwSnfVpENTarvjyEz935qV715a"],"license":"BUSL-1.1"},"src/engine/RulesEngineErrors.sol":{"keccak256":"0x30bc8e3b84570dcefb010f0b34937cf8f349a0b3b3233be8eb7cd252964c9302","urls":["bzz-raw://917417130bdde3abe677e8addccd5dcb74f6a4ce32cb5277c4018f03fc587594","dweb:/ipfs/QmTdpgdpJw3uq4nV991UssvuY4gjnRK939ikmaYaQ1pV5j"],"license":"BUSL-1.1"},"src/engine/RulesEngineEvents.sol":{"keccak256":"0x92ff62f6eca05d71bdf6517eb22b54718489a3ff0687a1a26c55ed69e6fa2b0d","urls":["bzz-raw://831cda139b4bfe7adb65fd0890c4d9ec0a919439ad3b9799c29c4e3e4bd9a125","dweb:/ipfs/QmYFr2LTCWjxPwJp2z3GwiR8732BTAnkYmtMk4j4k6YEu1"],"license":"BUSL-1.1"},"src/engine/RulesEngineStoragePositionLib.sol":{"keccak256":"0xfacb01784b9ef05260fba07c7e338936b82860549a0b25d343eb30a7d824065f","urls":["bzz-raw://d07dbf03b075e2c0a78d269da503b856b5da98a1cbc51a318196d168277042f8","dweb:/ipfs/QmbNTAUoaeTQWAQxiM3t7ZHk1rFLN8ZEnr2eaTmFZztsR2"],"license":"BUSL-1.1"},"src/engine/RulesEngineStorageStructure.sol":{"keccak256":"0x4024280353fda45187d8628e52eabba192c5e98a70532546f268bd742396a4ad","urls":["bzz-raw://74f739f999210f4f4e9ce82ffc7e5d7b6e939fd0f2f663d1cf46a9e979694be6","dweb:/ipfs/QmXnqdLv2TEFSmGdvPDEC116hxmXYS5aeDSDUgYhbTPg7Y"],"license":"BUSL-1.1"},"src/engine/facets/AdminRoles.sol":{"keccak256":"0x15c94ccc7c6c7031f7252021d5de52f2bcb5a0c35ac1ec1d8320c20a2ebe2f67","urls":["bzz-raw://b33dc4bd9b22b31566b76f75952a151b6d6a36d2257f57761694c0befa03559c","dweb:/ipfs/QmSSS7nmdBCWBvYuQGYrpmp5GTDupRys2gXKfYn9nysMSn"],"license":"BUSL-1.1"},"src/engine/facets/FacetCommonImports.sol":{"keccak256":"0xa8e9922c767a09257097bf86723642ffed2a9210d65d1a77ce923b22bb969376","urls":["bzz-raw://17a043d8f4a10704011ae0d9385e69bc55b0159f961e08231cdd82b973c00b85","dweb:/ipfs/QmNQdbYVQG7ad57ZTxLUqpm5As7PorfgeFcuGFUwVG7WZv"],"license":"BUSL-1.1"},"src/engine/facets/FacetUtils.sol":{"keccak256":"0x856186c5851203d73ab9acbdff73f37c41b8cfc8129248eff6655970f7657f34","urls":["bzz-raw://c3570a59a5f4086b65de7963d344d5c0ffdfa512a3a23be1c29c9ada8c4ec068","dweb:/ipfs/QmW6XFPQRiJxqMwpPdqX3ubKm61ZqHD5DicSyQXkzcGJfB"],"license":"BUSL-1.1"},"src/engine/facets/RulesEngineAdminRolesFacet.sol":{"keccak256":"0xee2f41cb7759ee9988cbcc505ca67dcb9921070efd3b52f5b223ca02a24cc81d","urls":["bzz-raw://a2898f6cb7b94dbe3e2735e32a2a7f1fb6aba3576a7655bedd599c4b30a3fb9f","dweb:/ipfs/QmUvuw3QXH91SofMRrBnPoU2iMRKfxL8dD3bj68T4u5Uk5"],"license":"BUSL-1.1"}},"version":1},"id":91}