From 45494ef879de1db31d534b34031b4bf0c7bbb4fa Mon Sep 17 00:00:00 2001 From: tak Date: Sat, 9 Mar 2024 13:10:29 +0700 Subject: [PATCH 01/10] impl v2 --- src/components/atoms/input.tsx | 24 +- src/components/organisms/buildVerseModal.tsx | 82 +++++-- .../organisms/changeDepositModal.tsx | 36 +-- .../organisms/checkDepositModal.tsx | 4 +- src/components/organisms/deposit.tsx | 7 +- src/components/organisms/form.tsx | 6 +- src/components/organisms/index.ts | 1 + src/components/organisms/sidebar.tsx | 12 +- src/components/organisms/verseInfoV2.tsx | 144 ++++++++++++ src/components/templates/buildVerse.tsx | 4 +- src/components/templates/depositVerse.tsx | 31 ++- src/consts/address.ts | 6 +- src/consts/deployConfig.ts | 18 ++ src/consts/index.ts | 3 +- src/consts/optimism.ts | 9 + src/contracts/oasysHub/L1BuildAgent.json | 221 ++++++++++++++++-- .../oasysHub/OasysL2OutputOracle.json | 1 + src/contracts/oasysHub/OasysPortal.json | 1 + src/contracts/oasysHub/ProxyAdmin.json | 1 + src/contracts/oasysHub/SystemConfig.json | 1 + src/features/common/contracts.ts | 38 ++- src/features/oasysHub/verseBuild.ts | 51 +++- src/features/optimism/verse.ts | 106 ++++++++- src/hooks/useL1BuildDeposit.ts | 8 +- src/pages/build-verse.tsx | 5 +- src/pages/check-verse.tsx | 82 ++++--- src/types/contracts/L1BuildAgent.ts | 62 ++++- src/types/oasysHub/verseBuild.ts | 20 +- src/types/optimism/verse.ts | 60 ++++- 29 files changed, 908 insertions(+), 136 deletions(-) create mode 100644 src/components/organisms/verseInfoV2.tsx create mode 100644 src/consts/deployConfig.ts create mode 100644 src/contracts/oasysHub/OasysL2OutputOracle.json create mode 100644 src/contracts/oasysHub/OasysPortal.json create mode 100644 src/contracts/oasysHub/ProxyAdmin.json create mode 100644 src/contracts/oasysHub/SystemConfig.json diff --git a/src/components/atoms/input.tsx b/src/components/atoms/input.tsx index 9379634..113a294 100644 --- a/src/components/atoms/input.tsx +++ b/src/components/atoms/input.tsx @@ -7,8 +7,30 @@ type Props = { disabled?: boolean; handleClick: (e: ChangeEvent) => void; className?: string; + inputType?: InputType; }; +export enum InputType { + Text = "text", + Password = "password", + Email = "email", + Number = "number", + Checkbox = "checkbox", + Radio = "radio", + File = "file", + Submit = "submit", + Button = "button", + Date = "date", + Time = "time", + DateTimeLocal = "datetime-local", + Month = "month", + Week = "week", + Color = "color", + Range = "range", + Tel = "tel", + Url = "url" +} + export const Input = (props: Props) => { const { value, @@ -29,7 +51,7 @@ export const Input = (props: Props) => { 'border', 'shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-4 focus:outline-green-500 focus:shadow-outline', )} - type="text" + type={props.inputType || InputType.Text} /> ); }; diff --git a/src/components/organisms/buildVerseModal.tsx b/src/components/organisms/buildVerseModal.tsx index d46ab5d..6630e07 100644 --- a/src/components/organisms/buildVerseModal.tsx +++ b/src/components/organisms/buildVerseModal.tsx @@ -1,8 +1,8 @@ import { ethers } from 'ethers'; import { ChangeEvent, SetStateAction, useState } from 'react'; -import { ZERO_ADDRESS } from '@/consts'; +import { ZERO_ADDRESS, L2_GASLIMIT, L2_OO_SUBMISSION_INTERVAL, FINALIZATION_PERIOD_SECONDS } from '@/consts'; import { getL1BuildAgentContract, handleError } from '@/features'; -import { ErrorMsg, SuccessMsg, Modal } from '@/components/atoms'; +import { ErrorMsg, SuccessMsg, Modal, InputType } from '@/components/atoms'; import { Form, LoadingModal } from '@/components/organisms'; type Props = { @@ -19,26 +19,42 @@ export const BuildVerseModal = (props: Props) => { const [buildSuccess, setBuildSuccess] = useState(''); const [isBuilding, setIsBuilding] = useState(false); const [buildError, setBuildError] = useState(''); - const [newChainId, setNewChainId] = useState(''); - const [sequencerAddress, setSequencerAddress] = useState(''); + const [newChainId, setNewChainId] = useState(); + const [finalSystemOwner, setFinalSystemOwner] = useState(''); const [proposerAddress, setProposerAddress] = useState(''); + const [batchSenderAddress, setBatchSenderAddress] = useState(''); + const [p2pSequencerAddress, setP2PSequencerAddress] = useState(''); + const [l2BlockTime, setL2BlockTime] = useState(); + const [l2OOStartingBlockNumber, setL2OOStartingBlockNumber] = useState(); + const [l2OOStartingTimestamp, setL2OOStartingTimestamp] = useState(); const build = async () => { - const L1BuildAgentContract = await getL1BuildAgentContract(); + const isLegacy = false; + const L1BuildAgentContract = await getL1BuildAgentContract(isLegacy); try { setIsBuilding(true); - const verseChainId = ethers.BigNumber.from(newChainId).toNumber(); - const addressManager = await L1BuildAgentContract.getAddressManager(verseChainId); - if (addressManager !== ZERO_ADDRESS) throw new Error(`Chain_id ${verseChainId} is already used`); - const tx: ethers.providers.TransactionResponse = await L1BuildAgentContract.build(verseChainId, sequencerAddress, proposerAddress); + if (l2BlockTime! < 1 || l2BlockTime! > 7) { + throw new Error('L2 Block Time must be between 1 and 7'); + } + + const tx: ethers.providers.TransactionResponse = await L1BuildAgentContract.build( + newChainId!, + [finalSystemOwner, proposerAddress, finalSystemOwner, batchSenderAddress, p2pSequencerAddress, l2BlockTime!, L2_GASLIMIT, L2_OO_SUBMISSION_INTERVAL, FINALIZATION_PERIOD_SECONDS, l2OOStartingBlockNumber!, l2OOStartingTimestamp!] + ); const receipt = await tx.wait(); if (receipt.status === 1) { - setBuildSuccess(`Verse build is successful. Please memo build_transaction (${tx.hash}) to check VerseInfo at check-verse-page by non_verse_builder`); - setNewChainId(''); - setSequencerAddress(''); + setBuildSuccess(`Verse build is successful. build transaction (${tx.hash})`); + setNewChainId(undefined); + setFinalSystemOwner(''); setProposerAddress(''); + setBatchSenderAddress(''); + setP2PSequencerAddress(''); + setL2BlockTime(undefined); + setL2OOStartingBlockNumber(undefined); + setL2OOStartingTimestamp(undefined); + setBuildError(''); setIsBuilding(false); } } catch (err) { @@ -50,25 +66,53 @@ export const BuildVerseModal = (props: Props) => { const buildInputs = [ { placeholder: 'set verse chain_id', - value: newChainId, - handleClick: (e: ChangeEvent) => {setNewChainId(e.target.value)}, + value: newChainId?.toString() || '', + inputType: InputType.Number, + handleClick: (e: ChangeEvent) => {setNewChainId(Number(e.target.value))}, }, { - placeholder: 'set sequencer address', - value: sequencerAddress, - handleClick: (e: ChangeEvent) => {setSequencerAddress(e.target.value)}, + placeholder: 'set final system owner', + value: finalSystemOwner, + handleClick: (e: ChangeEvent) => {setFinalSystemOwner(e.target.value)}, }, { placeholder: 'set proposer address', value: proposerAddress, handleClick: (e: ChangeEvent) => {setProposerAddress(e.target.value)}, }, + { + placeholder: 'set batch sender address', + value: batchSenderAddress, + handleClick: (e: ChangeEvent) => {setBatchSenderAddress(e.target.value)}, + }, + { + placeholder: 'set p2p sequencer address', + value: p2pSequencerAddress, + handleClick: (e: ChangeEvent) => {setP2PSequencerAddress(e.target.value)}, + }, + { + placeholder: 'set L2 Block Time (range of 1 to 7)', + value: l2BlockTime?.toString() || '', + inputType: InputType.Number, + handleClick: (e: ChangeEvent) => {setL2BlockTime(Number(e.target.value))}, + }, + { + placeholder: 'set L2 Output Oracle Starting Block Number', + value: l2OOStartingBlockNumber?.toString() || '', + inputType: InputType.Number, + handleClick: (e: ChangeEvent) => {setL2OOStartingBlockNumber(Number(e.target.value))}, + }, + { + placeholder: 'set L2 Output Oracle Starting Block Timestamp (sec)', + value: l2OOStartingTimestamp?.toString() || '', + inputType: InputType.Number, + handleClick: (e: ChangeEvent) => {setL2OOStartingTimestamp(Number(e.target.value))}, + }, ]; - const buildButtons = [ { handleClick: build, - disabled: !sequencerAddress || !proposerAddress || isBuilding, + disabled: !finalSystemOwner || !batchSenderAddress || !p2pSequencerAddress || !proposerAddress || !l2BlockTime || !(l2OOStartingBlockNumber || l2OOStartingBlockNumber === 0) || !(l2OOStartingTimestamp || l2OOStartingTimestamp === 0) || isBuilding, value: 'Build', } ]; diff --git a/src/components/organisms/changeDepositModal.tsx b/src/components/organisms/changeDepositModal.tsx index 19ac690..14e396d 100644 --- a/src/components/organisms/changeDepositModal.tsx +++ b/src/components/organisms/changeDepositModal.tsx @@ -11,12 +11,14 @@ import { LoadingModal } from '.'; type Props = { className?: string; setModalState: (value: SetStateAction) => void; + isLegacy: boolean; }; export const ChangeDepositModal = (props: Props) => { const { className, setModalState, + isLegacy, } = props; const [depositSuccess, setDepositSuccess] = useState(''); @@ -31,7 +33,7 @@ export const ChangeDepositModal = (props: Props) => { const depositOAS = async () => { try { - const L1BuildDepositContract = await getL1BuildDepositContract(); + const L1BuildDepositContract = await getL1BuildDepositContract(isLegacy); const value = ethers.utils.parseEther(OASAmount); const options = { value: value }; setIsDepositLoading(true); @@ -54,7 +56,7 @@ export const ChangeDepositModal = (props: Props) => { const withdrawOAS = async () => { try { - const L1BuildDepositContract = await getL1BuildDepositContract(); + const L1BuildDepositContract = await getL1BuildDepositContract(isLegacy); const value = ethers.utils.parseEther(OASAmount); setIsDepositLoading(true); await L1BuildDepositContract.withdraw(OASVerseBuilder, value); @@ -76,7 +78,7 @@ export const ChangeDepositModal = (props: Props) => { const depositSOAS = async () => { try { - const L1BuildDepositContract = await getL1BuildDepositContract(); + const L1BuildDepositContract = await getL1BuildDepositContract(isLegacy); const sOASContract = await getSOASContract(); const value = ethers.utils.parseEther(SOASAmount); setIsDepositLoading(true); @@ -101,7 +103,7 @@ export const ChangeDepositModal = (props: Props) => { const withdrawSOAS = async () => { try { - const L1BuildDepositContract = await getL1BuildDepositContract(); + const L1BuildDepositContract = await getL1BuildDepositContract(isLegacy); const value = ethers.utils.parseEther(SOASAmount); setIsDepositLoading(true); await L1BuildDepositContract.withdrawERC20(SOASVerseBuilder, sOASAddress, value); @@ -147,18 +149,22 @@ export const ChangeDepositModal = (props: Props) => { withdraw={withdrawOAS} idDepositLoading={idDepositLoading} tokenUnit={OASTokenUnit} + isLegacy={isLegacy} /> - + {isLegacy && ( + + )} } diff --git a/src/components/organisms/checkDepositModal.tsx b/src/components/organisms/checkDepositModal.tsx index 508ce12..cb09568 100644 --- a/src/components/organisms/checkDepositModal.tsx +++ b/src/components/organisms/checkDepositModal.tsx @@ -9,6 +9,7 @@ type Props = { className?: string; ownerAddress: string; setModalState: (value: SetStateAction) => void; + isLegacy: boolean; }; export const CheckDepositModal = (props: Props) => { @@ -16,6 +17,7 @@ export const CheckDepositModal = (props: Props) => { className, ownerAddress, setModalState, + isLegacy, } = props; const [checkSuccess, setCheckSuccess] = useState(''); @@ -27,7 +29,7 @@ export const CheckDepositModal = (props: Props) => { const [depositSOAS, setDepositSOAS] = useState(); const check = async () => { - const L1BuildDepositContract = await getL1BuildDepositContract(); + const L1BuildDepositContract = await getL1BuildDepositContract(isLegacy); try { setIsChecking(true); diff --git a/src/components/organisms/deposit.tsx b/src/components/organisms/deposit.tsx index 152be50..fa944c1 100644 --- a/src/components/organisms/deposit.tsx +++ b/src/components/organisms/deposit.tsx @@ -12,6 +12,7 @@ type Props = { withdraw: () => Promise; idDepositLoading: boolean; tokenUnit: string; + isLegacy: boolean; }; export const Deposit = (props: Props) => { @@ -25,6 +26,7 @@ export const Deposit = (props: Props) => { withdraw, idDepositLoading, tokenUnit, + isLegacy } = props; const depositInputs = [ @@ -43,7 +45,7 @@ export const Deposit = (props: Props) => { const depositButtons = [ { handleClick: deposit, - disabled: !builder || !amount || idDepositLoading, + disabled: !builder || !amount || idDepositLoading || isLegacy, value: 'Deposit', }, { @@ -53,6 +55,9 @@ export const Deposit = (props: Props) => { }, ]; + // evic deposit button for legacy + if (isLegacy) depositButtons.shift(); + return (
) => void; } @@ -33,13 +34,14 @@ export const Form = (props: Props) => { 'space-y-1', )}>
- {inputs.map(({ placeholder, value, handleClick }, index) => { + {inputs.map(({ placeholder, value, inputType, handleClick }, index) => { return ( ) diff --git a/src/components/organisms/index.ts b/src/components/organisms/index.ts index 5fa3d4e..1604e96 100644 --- a/src/components/organisms/index.ts +++ b/src/components/organisms/index.ts @@ -7,6 +7,7 @@ export * from './depositDetail'; export * from './genesisVersionDetail'; export * from './validatorInfo' export * from './verseInfo'; +export * from './verseInfoV2'; export * from './changeDepositModal'; export * from './checkDepositModal'; export * from './buildVerseModal'; diff --git a/src/components/organisms/sidebar.tsx b/src/components/organisms/sidebar.tsx index 4da8a09..da1d68b 100644 --- a/src/components/organisms/sidebar.tsx +++ b/src/components/organisms/sidebar.tsx @@ -28,17 +28,19 @@ const verseBuilderLinks = [ url: '/', }, { - text: 'Build verse', + text: 'Build Verse', url: '/build-verse', }, { text: 'Check verse', url: '/check-verse', }, - { - text: 'Update bridge contract', - url: '/update-bridge', - } + // Remove the /update-bridge link from the sidebar + // Although allowed to access to via direct link + // { + // text: 'Update bridge contract', + // url: '/update-bridge', + // } ]; const otherLinks = [ diff --git a/src/components/organisms/verseInfoV2.tsx b/src/components/organisms/verseInfoV2.tsx new file mode 100644 index 0000000..10dc32d --- /dev/null +++ b/src/components/organisms/verseInfoV2.tsx @@ -0,0 +1,144 @@ +import clsx from 'clsx'; +import { ErrorMsg, Button, Table } from '@/components/atoms'; +import { useCallback, useState } from 'react'; +import { download, handleError } from '@/features'; +import { VerseInfoV2 as VerseInfoType, DeployConfig } from '@/types/optimism/verse'; +import { NamedAddressesV2 as NamedAddresses } from '@/types/oasysHub/verseBuild'; + +type Props = { + className?: string; + verseBuilder: string; + verseInfo: VerseInfoType; +}; + + +export const VerseInfoV2 = (props: Props) => { + const { + className, + verseBuilder, + verseInfo, + } = props; + + const [downloadError, setDownloadError] = useState(''); + + const downloadAddresses = useCallback((namedAddresses: NamedAddresses) => { + try { + download(namedAddresses, 'addresses.json'); + } catch (err) { + handleError(err, setDownloadError); + } + }, []); + + const downloadDeployConfig = useCallback((deployConfig: DeployConfig) => { + try { + download(deployConfig, 'deploy-config.json'); + } catch (err) { + handleError(err, setDownloadError); + } + }, []); + + const heads = [ + 'Config', + 'Value' + ]; + + const records = [ + [ + 'Chain_id', + verseInfo.chainId.toString(), + ], + [ + 'Builder', + verseBuilder, + ], + [ + 'FinalSystemOwner', + verseInfo.namedAddresses.FinalSystemOwner, + ], + [ + 'L2OutputOracleProposer', + verseInfo.namedAddresses.L2OutputOracleProposer, + ], + [ + 'L2OutputOracleChallenger', + verseInfo.namedAddresses.L2OutputOracleChallenger, + ], + [ + 'BatchSender', + verseInfo.namedAddresses.BatchSender, + ], + [ + 'ProxyAdmin', + verseInfo.namedAddresses.ProxyAdmin, + ], + [ + 'SystemConfigProxy', + verseInfo.namedAddresses.SystemConfigProxy, + ], + [ + 'L1StandardBridgeProxy', + verseInfo.namedAddresses.L1StandardBridgeProxy, + ], + [ + 'L1ERC721BridgeProxy', + verseInfo.namedAddresses.L1ERC721BridgeProxy, + ], + [ + 'L1CrossDomainMessengerProxy', + verseInfo.namedAddresses.L1CrossDomainMessengerProxy, + ], + [ + 'L2OutputOracleProxy', + verseInfo.namedAddresses.L2OutputOracleProxy, + ], + [ + 'OptimismPortalProxy', + verseInfo.namedAddresses.OptimismPortalProxy, + ], + [ + 'ProtocolVersions', + verseInfo.namedAddresses.ProtocolVersions, + ], + [ + 'BatchInbox', + verseInfo.namedAddresses.BatchInbox, + ], + [ + 'AddressManager', + verseInfo.namedAddresses.AddressManager, + ], + [ + 'P2PSequencer', + verseInfo.namedAddresses.P2PSequencer, + ], + ]; + + return ( +
+ {downloadError && ( + + )} +

Download verse config

+ + {verseInfo?.namedAddresses && verseInfo?.deployConfig && +
+ + +
+ } + + ); +}; diff --git a/src/components/templates/buildVerse.tsx b/src/components/templates/buildVerse.tsx index 329cc96..1aad834 100644 --- a/src/components/templates/buildVerse.tsx +++ b/src/components/templates/buildVerse.tsx @@ -19,13 +19,13 @@ export const BuildVerse = (props: Props) => { className, )}> {buildModalOpen && } -

Build Verse

+

Build Verse 2.0

) diff --git a/src/components/templates/depositVerse.tsx b/src/components/templates/depositVerse.tsx index 676714c..8d5efdf 100644 --- a/src/components/templates/depositVerse.tsx +++ b/src/components/templates/depositVerse.tsx @@ -2,6 +2,7 @@ import clsx from 'clsx'; import { useState } from 'react'; import { Button } from '../atoms'; import { ChangeDepositModal, CheckDepositModal } from '../organisms'; +import { set } from 'lodash'; type Props = { className?: string; @@ -16,6 +17,7 @@ export const DepositVerse = (props: Props) => { const [changeDepositModalOpen, setChangeDepositModalOpen] = useState(false); const [checkDepositModalOpen, setCheckDepositModalOpen] = useState(false); + const [isLegacy, setIsLegacy] = useState(false); return (
{ {changeDepositModalOpen && } {checkDepositModalOpen && } -

Deposit Token

+

Deposit / Withdraw Token for Verse 2.0

+
+
+

Witdraw Token for Verse 1.0

+

Since the Verse 1.0 has been deprecated, depositing and building can only be performed through a direct function call to the contract.

+
+ +
- {verseInfo?.namedAddresses && verseInfo?.deployConfig && -
- - -
- } +
+ {downloadError && } +

Download verse config

+
+ {verseInfo?.namedAddresses && verseInfo?.deployConfig && ( +
+ + +
+ )} ); }; diff --git a/src/consts/deployConfig.ts b/src/consts/deployConfig.ts index 1ee7801..46d0235 100644 --- a/src/consts/deployConfig.ts +++ b/src/consts/deployConfig.ts @@ -1,18 +1,20 @@ -export const BaseFeeVaultMinimumWithdrawalAmount = '0x8ac7230489e80000' -export const BaseFeeVaultWithdrawalNetwork = 0 -export const ChannelTimeout = 300 -export const Eip1559Denominator = 50 -export const Eip1559DenominatorCanyon = 250 -export const Eip1559Elasticity = 10 -export const EnableGovernance = false -export const L1BlockTime = 15 -export const L1FeeVaultMinimumWithdrawalAmount = '0x8ac7230489e80000' -export const L1FeeVaultWithdrawalNetwork = 0 -export const L2GenesisBlockBaseFeePerGas = '0x0' -export const L2GenesisRegolithTimeOffset = '0x0' -export const MaxSequencerDrift = 600 -export const RecommendedProtocolVersion = '0x0000000000000000000000000000000000000000000000000000000000000000' -export const RequiredProtocolVersion = '0x0000000000000000000000000000000000000000000000000000000000000000' -export const SequencerFeeVaultMinimumWithdrawalAmount = '0x8ac7230489e80000' -export const SequencerFeeVaultWithdrawalNetwork = 0 -export const SequencerWindowSize = 3600 \ No newline at end of file +export const BaseFeeVaultMinimumWithdrawalAmount = '0x8ac7230489e80000'; +export const BaseFeeVaultWithdrawalNetwork = 0; +export const ChannelTimeout = 300; +export const Eip1559Denominator = 50; +export const Eip1559DenominatorCanyon = 250; +export const Eip1559Elasticity = 10; +export const EnableGovernance = false; +export const L1BlockTime = 15; +export const L1FeeVaultMinimumWithdrawalAmount = '0x8ac7230489e80000'; +export const L1FeeVaultWithdrawalNetwork = 0; +export const L2GenesisBlockBaseFeePerGas = '0x0'; +export const L2GenesisRegolithTimeOffset = '0x0'; +export const MaxSequencerDrift = 600; +export const RecommendedProtocolVersion = + '0x0000000000000000000000000000000000000000000000000000000000000000'; +export const RequiredProtocolVersion = + '0x0000000000000000000000000000000000000000000000000000000000000000'; +export const SequencerFeeVaultMinimumWithdrawalAmount = '0x8ac7230489e80000'; +export const SequencerFeeVaultWithdrawalNetwork = 0; +export const SequencerWindowSize = 3600; From e9aac94f40d2785d6c96c43cbddce99ef9ed13d0 Mon Sep 17 00:00:00 2001 From: tak Date: Mon, 11 Mar 2024 11:12:23 +0700 Subject: [PATCH 03/10] rename display words --- src/components/organisms/changeDepositModal.tsx | 4 +++- src/components/organisms/verseInfo.tsx | 2 +- src/components/organisms/verseInfoV2.tsx | 2 +- src/features/common/network.ts | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/organisms/changeDepositModal.tsx b/src/components/organisms/changeDepositModal.tsx index 14e396d..4e9c92a 100644 --- a/src/components/organisms/changeDepositModal.tsx +++ b/src/components/organisms/changeDepositModal.tsx @@ -28,7 +28,7 @@ export const ChangeDepositModal = (props: Props) => { const [SOASVerseBuilder, setSOASVerseBuilder] = useState(''); const [OASAmount, setOASAmount] = useState(''); const [SOASAmount, setSOASAmount] = useState(''); - + const refreshL1BuildDeposit = useRefreshL1BuildDeposit(); const depositOAS = async () => { @@ -45,6 +45,7 @@ export const ChangeDepositModal = (props: Props) => { setDepositSuccess(`${oasAmount}${OASTokenUnit} deposit is successful`); setOASAmount(''); setOASVerseBuilder(''); + setDepositError(''); setIsDepositLoading(false); refreshL1BuildDeposit(); }); @@ -67,6 +68,7 @@ export const ChangeDepositModal = (props: Props) => { setDepositSuccess(`${oasAmount}${OASTokenUnit} withdraw is successful`); setOASAmount(''); setOASVerseBuilder(''); + setDepositError(''); setIsDepositLoading(false); refreshL1BuildDeposit(); }); diff --git a/src/components/organisms/verseInfo.tsx b/src/components/organisms/verseInfo.tsx index 4e835d7..51b7441 100644 --- a/src/components/organisms/verseInfo.tsx +++ b/src/components/organisms/verseInfo.tsx @@ -88,7 +88,7 @@ export const VerseInfo = (props: Props) => { {downloadError && ( )} -

Download verse config

+

Download Config Files

{ return (
{downloadError && } -

Download verse config

+

Download Config Files

{verseInfo?.namedAddresses && verseInfo?.deployConfig && (
diff --git a/src/features/common/network.ts b/src/features/common/network.ts index eef5ad9..fba8a51 100644 --- a/src/features/common/network.ts +++ b/src/features/common/network.ts @@ -1,7 +1,7 @@ import { MAINNET_CHAIN_ID, TESTNET_CHAIN_ID } from "@/consts"; export const getNetworkName = (chainId: number) => { - if (chainId === MAINNET_CHAIN_ID) return "Oasys mainnet"; - if (chainId === TESTNET_CHAIN_ID) return "Oasys testnet"; + if (chainId === MAINNET_CHAIN_ID) return "Oasys Mainnet"; + if (chainId === TESTNET_CHAIN_ID) return "Oasys Testnet"; return "Unknown"; } From b862f45e26ee1fae28ebadcf5f76faea34a4462d Mon Sep 17 00:00:00 2001 From: tak Date: Thu, 21 Mar 2024 14:23:49 +0900 Subject: [PATCH 04/10] change default l2 state submission interval --- src/consts/optimism.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/consts/optimism.ts b/src/consts/optimism.ts index 256298a..a7e2952 100644 --- a/src/consts/optimism.ts +++ b/src/consts/optimism.ts @@ -440,7 +440,14 @@ export const L2ContractStorageLayouts: { [name: string]: any } = { export const L2_GASLIMIT = 30000000; // The defualt of opstack is 120 -// To speed up l2->l1 bridge, shorten the opstack to 30 -export const L2_OO_SUBMISSION_INTERVAL = 30; +// The submission interval significantly impacts both the waiting time for L2->L1 withdrawals and the speed at which the L2 state proposer operates. If the interval is short, the waiting time for L2 withdrawals decreases. Conversely, if the interval is too short, the state proposer may fail to keep pace with the growth speed of the L2 block height. +// ---- +// Why have we set the default value to 80? +// Assumptions: +// - The L2 block time is 1a. +// - The operational proposer (op-proposer) confirms 4 blocks. +// - The op-proposer cannot send multiple rollups to a single block. +// The op-proposer submits the L2 state every 5 L1 block intervals. During this period, the L2 block grows by 75 blocks. Therefore, 80 was selected as the default value. +export const L2_OO_SUBMISSION_INTERVAL = 70; // 7 days export const FINALIZATION_PERIOD_SECONDS = 604800; From 8fe8f527c95aededa0f55cb2a3a00828b22cf44c Mon Sep 17 00:00:00 2001 From: tak Date: Mon, 1 Apr 2024 13:37:27 +0900 Subject: [PATCH 05/10] apply updated l1build agent --- .gitignore | 2 ++ src/consts/optimism.ts | 2 +- src/contracts/oasysHub/L1BuildAgent.json | 6 +----- src/features/oasysHub/verseBuild.ts | 8 ++++++-- src/types/contracts/L1BuildAgent.ts | 12 ++++++------ 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index f70484f..ef9fac0 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,5 @@ next-env.d.ts # eslint .eslintcache + +note.md diff --git a/src/consts/optimism.ts b/src/consts/optimism.ts index a7e2952..100253c 100644 --- a/src/consts/optimism.ts +++ b/src/consts/optimism.ts @@ -448,6 +448,6 @@ export const L2_GASLIMIT = 30000000; // - The operational proposer (op-proposer) confirms 4 blocks. // - The op-proposer cannot send multiple rollups to a single block. // The op-proposer submits the L2 state every 5 L1 block intervals. During this period, the L2 block grows by 75 blocks. Therefore, 80 was selected as the default value. -export const L2_OO_SUBMISSION_INTERVAL = 70; +export const L2_OO_SUBMISSION_INTERVAL = 80; // 7 days export const FINALIZATION_PERIOD_SECONDS = 604800; diff --git a/src/contracts/oasysHub/L1BuildAgent.json b/src/contracts/oasysHub/L1BuildAgent.json index feb6faf..a5fdc66 100644 --- a/src/contracts/oasysHub/L1BuildAgent.json +++ b/src/contracts/oasysHub/L1BuildAgent.json @@ -121,7 +121,7 @@ }, { "type": "function", - "name": "builders", + "name": "getBuilderGlobally", "inputs": [{ "name": "", "type": "uint256", @@ -178,10 +178,6 @@ "name": "batchInbox", "type": "address", "internalType": "address" - }, { - "name": "addressManager", - "type": "address", - "internalType": "address" }], "stateMutability": "view" }, diff --git a/src/features/oasysHub/verseBuild.ts b/src/features/oasysHub/verseBuild.ts index a3ca742..80f0e0f 100644 --- a/src/features/oasysHub/verseBuild.ts +++ b/src/features/oasysHub/verseBuild.ts @@ -31,6 +31,10 @@ export const getNamedAddressesV2 = async (chainId: number, p2pSequencer: string const l1BuildAgent = await getL1BuildAgentContract(isLegacy); const builtAddresses = await l1BuildAgent.builtLists(chainId); + // Get address manager from Legacy L1BuildAgent + const l1BuildAgentLegacy = await getL1BuildAgentContract(true); + const addressManager = await l1BuildAgentLegacy.getAddressManager(chainId); + const result = { ProxyAdmin: builtAddresses[0], SystemConfigProxy: builtAddresses[1], @@ -41,7 +45,7 @@ export const getNamedAddressesV2 = async (chainId: number, p2pSequencer: string OptimismPortalProxy: builtAddresses[6], ProtocolVersions: builtAddresses[7], BatchInbox: builtAddresses[8], - AddressManager: builtAddresses[9], + AddressManager: addressManager, P2PSequencer: p2pSequencer, } as NamedAddressesV2; @@ -83,7 +87,7 @@ export const getBuilderFromChainIDV2 = async ( chainId: number, ): Promise => { const l1BuildAgent = await getL1BuildAgentContract(false); - return await l1BuildAgent.builders(chainId); + return await l1BuildAgent.getBuilderGlobally(chainId); }; export const getBuilts = async (isLegacy: boolean = true): Promise<{ diff --git a/src/types/contracts/L1BuildAgent.ts b/src/types/contracts/L1BuildAgent.ts index c0f5f30..5cd3824 100644 --- a/src/types/contracts/L1BuildAgent.ts +++ b/src/types/contracts/L1BuildAgent.ts @@ -47,7 +47,7 @@ export interface L1BuildAgentInterface extends utils.Interface { getFunction( nameOrSignatureOrTopic: | "build" - | "builders" + | "getBuilderGlobally" | "builtLists" | "depositAddress" | "getAddressManager" @@ -199,7 +199,7 @@ export interface L1BuildAgent extends BaseContract { overrides?: Overrides & { from?: string } ): Promise; - builders( + getBuilderGlobally( _chainId: BigNumberish, overrides?: CallOverrides ): Promise<[string]>; @@ -275,7 +275,7 @@ export interface L1BuildAgent extends BaseContract { overrides?: Overrides & { from?: string } ): Promise; - builders( + getBuilderGlobally( _chainId: BigNumberish, overrides?: CallOverrides ): Promise; @@ -351,7 +351,7 @@ export interface L1BuildAgent extends BaseContract { overrides?: CallOverrides ): Promise; - builders( + getBuilderGlobally( _chainId: BigNumberish, overrides?: CallOverrides ): Promise; @@ -430,7 +430,7 @@ export interface L1BuildAgent extends BaseContract { overrides?: Overrides & { from?: string } ): Promise; - builders(_chainId: BigNumberish, overrides?: CallOverrides): Promise; + getBuilderGlobally(_chainId: BigNumberish, overrides?: CallOverrides): Promise; builtLists(_chainId: BigNumberish, overrides?: CallOverrides): Promise; @@ -501,7 +501,7 @@ export interface L1BuildAgent extends BaseContract { overrides?: Overrides & { from?: string } ): Promise; - builders(_chainId: BigNumberish, overrides?: CallOverrides): Promise; + getBuilderGlobally(_chainId: BigNumberish, overrides?: CallOverrides): Promise; builtLists(_chainId: BigNumberish, overrides?: CallOverrides): Promise; From 8df17088ff56b75520da8e3519bf95256c385e70 Mon Sep 17 00:00:00 2001 From: tak Date: Mon, 8 Apr 2024 12:50:07 +0700 Subject: [PATCH 06/10] apply adding message relayer --- src/components/organisms/buildVerseModal.tsx | 34 +++++++++----------- src/components/organisms/verseInfoV2.tsx | 1 + src/contracts/oasysHub/L1BuildAgent.json | 4 +++ src/contracts/oasysHub/OasysPortal.json | 2 +- src/features/oasysHub/verseBuild.ts | 2 ++ src/features/optimism/verse.ts | 4 +++ src/types/contracts/L1BuildAgent.ts | 4 +-- src/types/oasysHub/verseBuild.ts | 1 + src/types/optimism/verse.ts | 1 + 9 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/components/organisms/buildVerseModal.tsx b/src/components/organisms/buildVerseModal.tsx index 6630e07..969d0d6 100644 --- a/src/components/organisms/buildVerseModal.tsx +++ b/src/components/organisms/buildVerseModal.tsx @@ -1,7 +1,7 @@ import { ethers } from 'ethers'; import { ChangeEvent, SetStateAction, useState } from 'react'; import { ZERO_ADDRESS, L2_GASLIMIT, L2_OO_SUBMISSION_INTERVAL, FINALIZATION_PERIOD_SECONDS } from '@/consts'; -import { getL1BuildAgentContract, handleError } from '@/features'; +import { getL1BuildAgentContract, handleError, getSigner } from '@/features'; import { ErrorMsg, SuccessMsg, Modal, InputType } from '@/components/atoms'; import { Form, LoadingModal } from '@/components/organisms'; @@ -24,9 +24,8 @@ export const BuildVerseModal = (props: Props) => { const [proposerAddress, setProposerAddress] = useState(''); const [batchSenderAddress, setBatchSenderAddress] = useState(''); const [p2pSequencerAddress, setP2PSequencerAddress] = useState(''); + const [messageRelayer, setMessageRelayer] = useState(''); const [l2BlockTime, setL2BlockTime] = useState(); - const [l2OOStartingBlockNumber, setL2OOStartingBlockNumber] = useState(); - const [l2OOStartingTimestamp, setL2OOStartingTimestamp] = useState(); const build = async () => { const isLegacy = false; @@ -39,9 +38,14 @@ export const BuildVerseModal = (props: Props) => { throw new Error('L2 Block Time must be between 1 and 7'); } + // At first, set default Values + // Correct values are expected to be set via another button + const l2OOStartingBlockNumber = 0; + const l2OOStartingTimestamp = (await (await getSigner()).provider.getBlock('latest')).timestamp; + const tx: ethers.providers.TransactionResponse = await L1BuildAgentContract.build( newChainId!, - [finalSystemOwner, proposerAddress, finalSystemOwner, batchSenderAddress, p2pSequencerAddress, l2BlockTime!, L2_GASLIMIT, L2_OO_SUBMISSION_INTERVAL, FINALIZATION_PERIOD_SECONDS, l2OOStartingBlockNumber!, l2OOStartingTimestamp!] + [finalSystemOwner, proposerAddress, finalSystemOwner, batchSenderAddress, p2pSequencerAddress, messageRelayer, l2BlockTime!, L2_GASLIMIT, L2_OO_SUBMISSION_INTERVAL, FINALIZATION_PERIOD_SECONDS, l2OOStartingBlockNumber, l2OOStartingTimestamp] ); const receipt = await tx.wait(); if (receipt.status === 1) { @@ -51,9 +55,8 @@ export const BuildVerseModal = (props: Props) => { setProposerAddress(''); setBatchSenderAddress(''); setP2PSequencerAddress(''); + setMessageRelayer(''); setL2BlockTime(undefined); - setL2OOStartingBlockNumber(undefined); - setL2OOStartingTimestamp(undefined); setBuildError(''); setIsBuilding(false); } @@ -90,29 +93,22 @@ export const BuildVerseModal = (props: Props) => { value: p2pSequencerAddress, handleClick: (e: ChangeEvent) => {setP2PSequencerAddress(e.target.value)}, }, + { + placeholder: 'set message relayer address', + value: messageRelayer, + handleClick: (e: ChangeEvent) => {setMessageRelayer(e.target.value)}, + }, { placeholder: 'set L2 Block Time (range of 1 to 7)', value: l2BlockTime?.toString() || '', inputType: InputType.Number, handleClick: (e: ChangeEvent) => {setL2BlockTime(Number(e.target.value))}, }, - { - placeholder: 'set L2 Output Oracle Starting Block Number', - value: l2OOStartingBlockNumber?.toString() || '', - inputType: InputType.Number, - handleClick: (e: ChangeEvent) => {setL2OOStartingBlockNumber(Number(e.target.value))}, - }, - { - placeholder: 'set L2 Output Oracle Starting Block Timestamp (sec)', - value: l2OOStartingTimestamp?.toString() || '', - inputType: InputType.Number, - handleClick: (e: ChangeEvent) => {setL2OOStartingTimestamp(Number(e.target.value))}, - }, ]; const buildButtons = [ { handleClick: build, - disabled: !finalSystemOwner || !batchSenderAddress || !p2pSequencerAddress || !proposerAddress || !l2BlockTime || !(l2OOStartingBlockNumber || l2OOStartingBlockNumber === 0) || !(l2OOStartingTimestamp || l2OOStartingTimestamp === 0) || isBuilding, + disabled: !finalSystemOwner || !batchSenderAddress || !p2pSequencerAddress || !proposerAddress || !messageRelayer || !l2BlockTime || isBuilding, value: 'Build', } ]; diff --git a/src/components/organisms/verseInfoV2.tsx b/src/components/organisms/verseInfoV2.tsx index eea6824..1e702b1 100644 --- a/src/components/organisms/verseInfoV2.tsx +++ b/src/components/organisms/verseInfoV2.tsx @@ -59,6 +59,7 @@ export const VerseInfoV2 = (props: Props) => { ['OptimismPortalProxy', verseInfo.namedAddresses.OptimismPortalProxy], ['ProtocolVersions', verseInfo.namedAddresses.ProtocolVersions], ['BatchInbox', verseInfo.namedAddresses.BatchInbox], + ['MessageRelayer', verseInfo.namedAddresses.MessageRelayer], ['AddressManager', verseInfo.namedAddresses.AddressManager], ['P2PSequencer', verseInfo.namedAddresses.P2PSequencer], ]; diff --git a/src/contracts/oasysHub/L1BuildAgent.json b/src/contracts/oasysHub/L1BuildAgent.json index a5fdc66..c6032b8 100644 --- a/src/contracts/oasysHub/L1BuildAgent.json +++ b/src/contracts/oasysHub/L1BuildAgent.json @@ -70,6 +70,10 @@ "name": "p2pSequencerAddress", "type": "address", "internalType": "address" + }, { + "name": "messageRelayer", + "type": "address", + "internalType": "address" }, { "name": "l2BlockTime", "type": "uint256", diff --git a/src/contracts/oasysHub/OasysPortal.json b/src/contracts/oasysHub/OasysPortal.json index 51461e0..189c904 100644 --- a/src/contracts/oasysHub/OasysPortal.json +++ b/src/contracts/oasysHub/OasysPortal.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_l2Oracle","type":"address","internalType":"contract L2OutputOracle"},{"name":"_guardian","type":"address","internalType":"address"},{"name":"_paused","type":"bool","internalType":"bool"},{"name":"_systemConfig","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"GUARDIAN","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"L2_ORACLE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract L2OutputOracle"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CONFIG","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"view"},{"type":"function","name":"depositTransaction","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"},{"name":"_gasLimit","type":"uint64","internalType":"uint64"},{"name":"_isCreation","type":"bool","internalType":"bool"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"donateETH","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"finalizeWithdrawalTransaction","inputs":[{"name":"_tx","type":"tuple","internalType":"struct Types.WithdrawalTransaction","components":[{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeWithdrawalTransactions","inputs":[{"name":"_txs","type":"tuple[]","internalType":"struct Types.WithdrawalTransaction[]","components":[{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizedWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"guardian","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_paused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOutputFinalized","inputs":[{"name":"_l2OutputIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"l2Oracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract L2OutputOracle"}],"stateMutability":"view"},{"type":"function","name":"l2Sender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"messageRelayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"minimumGasLimit","inputs":[{"name":"_byteCount","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"params","inputs":[],"outputs":[{"name":"prevBaseFee","type":"uint128","internalType":"uint128"},{"name":"prevBoughtGas","type":"uint64","internalType":"uint64"},{"name":"prevBlockNum","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proveWithdrawalTransaction","inputs":[{"name":"_tx","type":"tuple","internalType":"struct Types.WithdrawalTransaction","components":[{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"_l2OutputIndex","type":"uint256","internalType":"uint256"},{"name":"_outputRootProof","type":"tuple","internalType":"struct Types.OutputRootProof","components":[{"name":"version","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"messagePasserStorageRoot","type":"bytes32","internalType":"bytes32"},{"name":"latestBlockhash","type":"bytes32","internalType":"bytes32"}]},{"name":"_withdrawalProof","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"provenWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"outputRoot","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint128","internalType":"uint128"},{"name":"l2OutputIndex","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"setMessageRelayer","inputs":[{"name":"newRelayer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"systemConfig","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MessageRelayerSet","inputs":[{"name":"relayer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TransactionDeposited","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"version","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"opaqueData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawalFinalized","inputs":[{"name":"withdrawalHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"success","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"WithdrawalProven","inputs":[{"name":"withdrawalHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60e06040523480156200001157600080fd5b5060405162005611380380620056118339810160408190526200003491620002a2565b6001600160a01b0380851660805280841660c052811660a052838383836200005c826200006a565b50505050505050506200030e565b62000080816200008360201b62001b501760201c565b50565b600054610100900460ff1615808015620000a45750600054600160ff909116105b80620000d45750620000c130620001da60201b62001d231760201c565b158015620000d4575060005460ff166001145b6200013d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000161576000805461ff0019166101001790555b603280546001600160a01b03191661dead1790556035805483151560ff199091161790556200018f620001e9565b8015620001d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620002565760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000134565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6001600160a01b03811681146200008057600080fd5b60008060008060808587031215620002b957600080fd5b8451620002c6816200028c565b6020860151909450620002d9816200028c565b60408601519093508015158114620002f057600080fd5b606086015190925062000303816200028c565b939692955090935050565b60805160a05160c051615271620003a06000396000818161028f015281816103d20152818161093f01528181610ff0015261124c0152600081816102470152818161066401526123640152600081816101cc0152818161043801528181610b5a01528181610d21015281816111a8015281816114fa015281816117380152818161214c015261251501526152716000f3fe60806040526004361061018e5760003560e01c80638456cb59116100d6578063a35d99df1161007f578063e965084c11610059578063e965084c146105b3578063e9e05c421461063f578063f04987501461065257600080fd5b8063a35d99df146104b9578063cff0ab96146104f2578063d53a822f1461059357600080fd5b80639b5f694a116100b05780639b5f694a146104295780639bf62d821461045c578063a14238e71461048957600080fd5b80638456cb59146103f45780638b4c40b0146101b35780638c3152e91461040957600080fd5b80634f3b457e116101385780636cfd26e9116101125780636cfd26e9146103805780636dbffb78146103a0578063724c184c146103c057600080fd5b80634f3b457e146102d357806354fd4d50146103005780635c975abb1461035657600080fd5b80633f4ba83a116101695780633f4ba83a1461026b578063452a9320146102805780634870496f146102b357600080fd5b80621c2ff6146101ba578063057bbee11461021857806333d7e2bd1461023857600080fd5b366101b5576101b33334620186a0600060405180602001604052806000815250610686565b005b600080fd5b3480156101c657600080fd5b506101ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561022457600080fd5b506101b3610233366004614694565b6108d3565b34801561024457600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ee565b34801561027757600080fd5b506101b3610927565b34801561028c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ee565b3480156102bf57600080fd5b506101b36102ce366004614874565b610a30565b3480156102df57600080fd5b506064546101ee9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561030c57600080fd5b506103496040518060400160405280600681526020017f312e31312e30000000000000000000000000000000000000000000000000000081525081565b60405161020f919061497b565b34801561036257600080fd5b506035546103709060ff1681565b604051901515815260200161020f565b34801561038c57600080fd5b506101b361039b36600461498e565b610fd8565b3480156103ac57600080fd5b506103706103bb3660046149a9565b61115d565b3480156103cc57600080fd5b506101ee7f000000000000000000000000000000000000000000000000000000000000000081565b34801561040057600080fd5b506101b3611234565b34801561041557600080fd5b506101b36104243660046149c2565b61133a565b34801561043557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ee565b34801561046857600080fd5b506032546101ee9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561049557600080fd5b506103706104a43660046149a9565b60336020526000908152604090205460ff1681565b3480156104c557600080fd5b506104d96104d4366004614a17565b611b2b565b60405167ffffffffffffffff909116815260200161020f565b3480156104fe57600080fd5b5060015461055a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161020f565b34801561059f57600080fd5b506101b36105ae366004614a42565b611b44565b3480156105bf57600080fd5b506106116105ce3660046149a9565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff928316602085015291169082015260600161020f565b6101b361064d366004614a5d565b610686565b34801561065e57600080fd5b506101ee7f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156107235773ffffffffffffffffffffffffffffffffffffffff871615610723576040805162461bcd60e51b81526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b61072d8351611b2b565b67ffffffffffffffff168567ffffffffffffffff1610156107b65760405162461bcd60e51b815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c0000000000000000000000000000000000000000000000000000000000606482015260840161071a565b6201d4c08351111561080a5760405162461bcd60e51b815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c617267650000604482015260640161071a565b3332811461082b575033731111000000000000000000000000000000001111015b60003488888888604051602001610846959493929190614ad6565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516108b6919061497b565b60405180910390a450506108ca8282611d3f565b50505050505050565b8060005b818110156109215761090f8484838181106108f4576108f4614b3b565b90506020028101906109069190614b6a565b61042490614ba8565b8061091981614be3565b9150506108d7565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109d25760405162461bcd60e51b815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e70617573650000000000000000000000000000000000000000000000606482015260840161071a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff1615610a835760405162461bcd60e51b815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161071a565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610b285760405162461bcd60e51b815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e747261637400606482015260840161071a565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bda9190614c3b565b519050610bf4610bef36869003860186614ca0565b612052565b8114610c685760405162461bcd60e51b815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f660000000000000000000000000000000000000000000000606482015260840161071a565b6000610c73876120ae565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610da55750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190614c3b565b5114155b610e175760405162461bcd60e51b815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e000000000000000000606482015260840161071a565b6040805160208101849052600091810182905260600160408051601f1981840301815282825280516020918201209083018190529250610ea4910160408051601f19818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610e9a888a614d06565b8a604001356120de565b610f165760405162461bcd60e51b815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f660000000000000000000000000000606482015260840161071a565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146110835760405162461bcd60e51b815260206004820152603860248201527f4f61737973506f7274616c3a206f6e6c7920677561726469616e2063616e207360448201527f65742061206e6577206d6573736167652072656c617965720000000000000000606482015260840161071a565b60645473ffffffffffffffffffffffffffffffffffffffff908116908216036110ee5760405162461bcd60e51b815260206004820152601860248201527f4f61737973506f7274616c3a20616c7265616479207365740000000000000000604482015260640161071a565b606480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffce056bb1203f3a49718c0c063cdde76b64ede7be48768dcf101ca2fc1358cfe90600090a250565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009061122e9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190614c3b565b602001516fffffffffffffffffffffffffffffffff16612102565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146112df5760405162461bcd60e51b815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20706175736500000000000000000000000000000000000000000000000000606482015260840161071a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610a26565b60355460ff161561138d5760405162461bcd60e51b815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161071a565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead1461141c5760405162461bcd60e51b815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e00606482015260840161071a565b6000611427826120ae565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036114f85760405162461bcd60e51b815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e207965740000000000000000000000000000606482015260840161071a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115879190614d8a565b81602001516fffffffffffffffffffffffffffffffff1610156116385760405162461bcd60e51b815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a40161071a565b61165781602001516fffffffffffffffffffffffffffffffff16612102565b6116ef5760405162461bcd60e51b815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a40161071a565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015611794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b89190614c3b565b82518151919250146118585760405162461bcd60e51b815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a40161071a565b61187781602001516fffffffffffffffffffffffffffffffff16612102565b61190f5760405162461bcd60e51b815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a40161071a565b60008381526033602052604090205460ff16156119945760405162461bcd60e51b815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a65640000000000000000000000606482015260840161071a565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a0880151611a3693929190612209565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611a9b90841515815260200190565b60405180910390a280158015611ab15750326001145b15611b245760405162461bcd60e51b815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161071a565b5050505050565b6000611b38826010614da3565b61122e90615208614dd3565b611b4d81611b50565b50565b600054610100900460ff1615808015611b705750600054600160ff909116105b80611b8a5750303b158015611b8a575060005460ff166001145b611bfc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161071a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611c5a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611cbc612267565b8015611d1f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611d75907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614dff565b90506000611d81612330565b90506000816020015160ff16826000015163ffffffff16611da29190614e45565b90508215611ed957600154600090611dd9908390700100000000000000000000000000000000900467ffffffffffffffff16614ead565b90506000836040015160ff1683611df09190614f21565b600154611e109084906fffffffffffffffffffffffffffffffff16614f21565b611e1a9190614e45565b600154909150600090611e6b90611e449084906fffffffffffffffffffffffffffffffff16614fdd565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166123f6565b90506001861115611e9a57611e97611e4482876040015160ff1660018a611e929190614dff565b612415565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611f0c908490700100000000000000000000000000000000900467ffffffffffffffff16614dd3565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611fd55760405162461bcd60e51b815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161071a565b600154600090612001906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816615051565b9050600061201348633b9aca0061246a565b61201d908361508e565b905060005a61202c9088614dff565b905080821115612048576120486120438284614dff565b612481565b5050505050505050565b60008160000151826020015183604001518460600151604051602001612091949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a088015193516000976120919790969591016150a2565b6000806120ea866124af565b90506120f8818686866124e1565b9695505050505050565b60645460009073ffffffffffffffffffffffffffffffffffffffff1615801590612143575060645473ffffffffffffffffffffffffffffffffffffffff1633145b156122005760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b3bd5cf56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d991906150f9565b6fffffffffffffffffffffffffffffffff169050828111156121fe5750600192915050565b505b61122e82612511565b60008060006122198660006125b4565b90508061224f576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166122e45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161071a565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa1580156123cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f19190615139565b905090565b600061240b61240585856125d2565b836125e2565b90505b9392505050565b6000670de0b6b3a764000061245661242d8583614e45565b61243f90670de0b6b3a7640000614ead565b61245185670de0b6b3a7640000614f21565b6125f1565b6124609086614f21565b61240b9190614e45565b60008183101561247a578161240e565b5090919050565b6000805a90505b825a6124949083614dff565b10156124aa576124a382614be3565b9150612488565b505050565b606081805190602001206040516020016124cb91815260200190565b6040516020818303038152906040529050919050565b6000612508846124f2878686612622565b8051602091820120825192909101919091201490565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a29190614d8a565b6125ac90836151d8565b421192915050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561247a578161240e565b600081831261247a578161240e565b600061240e670de0b6b3a76400008361260986612f34565b6126139190614f21565b61261d9190614e45565b61315e565b606060008451116126755760405162461bcd60e51b815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b65790000000000000000000000604482015260640161071a565b600061268084613383565b9050600061268d8661346f565b90506000846040516020016126a491815260200190565b60405160208183030381529060405290506000805b8451811015612ec55760008582815181106126d6576126d6614b3b565b6020026020010151905084518311156127575760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e677468000000000000000000000000000000000000606482015260840161071a565b826000036127f657805180516020918201206040516127a59261277f92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6127f15760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161071a565b612919565b80515160201161289257805180516020918201206040516128209261277f92910190815260200190565b6127f15760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c206861736800000000000000000000000000000000000000000000000000606482015260840161071a565b8051845160208087019190912082519190920120146129195760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f6520686173680000000000000000000000000000000000000000000000000000606482015260840161071a565b612925601060016151d8565b81602001515103612acd5784518303612a655761295f816020015160108151811061295257612952614b3b565b60200260200101516134d2565b965060008751116129d85760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161071a565b600186516129e69190614dff565b8214612a5a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161071a565b50505050505061240e565b6000858481518110612a7957612a79614b3b565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612aa457612aa4614b3b565b60200260200101519050612ab7816135fe565b9550612ac46001866151d8565b94505050612eb2565b600281602001515103612e44576000612ae582613623565b9050600081600081518110612afc57612afc614b3b565b016020015160f81c90506000612b136002836151f0565b612b1e906002615212565b90506000612b2f848360ff16613647565b90506000612b3d8a89613647565b90506000612b4b838361367d565b905080835114612bc35760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161071a565b60ff851660021480612bd8575060ff85166003145b15612d795780825114612c535760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161071a565b612c6d876020015160018151811061295257612952614b3b565b9c5060008d5111612ce65760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161071a565b60018c51612cf49190614dff565b8814612d685760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161071a565b50505050505050505050505061240e565b60ff85161580612d8c575060ff85166001145b15612dcb57612db88760200151600181518110612dab57612dab614b3b565b60200260200101516135fe565b9950612dc4818a6151d8565b9850612e39565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e207072656669780000000000000000000000000000606482015260840161071a565b505050505050612eb2565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f6465000000000000000000000000000000000000000000000000606482015260840161071a565b5080612ebd81614be3565b9150506126b9565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e7473000000000000000000000000000000000000000000000000000000606482015260840161071a565b6000808213612f855760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161071a565b60006060612f9284613731565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361318f57506000919050565b680755bf798b4a1bf1e582126131e75760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161071a565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156133a1576133a16146d6565b6040519080825280602002602001820160405280156133e657816020015b60408051808201909152606080825260208201528152602001906001900390816133bf5790505b50915060005b8181101561346857604051806040016040528085838151811061341157613411614b3b565b6020026020010151815260200161344086848151811061343357613433614b3b565b60200260200101516137ed565b81525083828151811061345557613455614b3b565b60209081029190910101526001016133ec565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b838110156134c7578060011b82018184015160001a8060041c8253600f811660018301535050600101613499565b509295945050505050565b606060008060006134e285613800565b9194509250905060008160018111156134fd576134fd615235565b146135705760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d00000000000000606482015260840161071a565b61357a82846151d8565b8551146135ef5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e646572000000000000000000000000606482015260840161071a565b61250885602001518484614135565b6060602082600001511061361a57613615826134d2565b61122e565b61122e826141c9565b606061122e613642836020015160008151811061295257612952614b3b565b61346f565b606082518210613666575060408051602081019091526000815261122e565b61240e83838486516136789190614dff565b6141df565b6000808251845110613690578251613693565b83515b90505b808210801561371a57508282815181106136b2576136b2614b3b565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106136f1576136f1614b3b565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b1561372a57816001019150613696565b5092915050565b60008082116137825760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161071a565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b606061122e6137fb8361434b565b61441a565b6000806000808460000151116138a45760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161071a565b6020840151805160001a607f81116138c957600060016000945094509450505061412e565b60b78111613aa35760006138de608083614dff565b90508087600001511161397f5760405162461bcd60e51b815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a40161071a565b6001838101517fff000000000000000000000000000000000000000000000000000000000000001690821415806139f857507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613a905760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a40161071a565b506001955093506000925061412e915050565b60bf8111613d89576000613ab860b783614dff565b905080876000015111613b595760405162461bcd60e51b815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a40161071a565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613c1d5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a40161071a565b600184015160088302610100031c60378111613cc75760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a40161071a565b613cd181846151d8565b895111613d6c5760405162461bcd60e51b815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a40161071a565b613d778360016151d8565b975095506000945061412e9350505050565b60f78111613e50576000613d9e60c083614dff565b905080876000015111613e3f5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a40161071a565b60019550935084925061412e915050565b6000613e5d60f783614dff565b905080876000015111613efe5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a40161071a565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613fc25760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a40161071a565b600184015160088302610100031c6037811161406c5760405162461bcd60e51b815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a40161071a565b61407681846151d8565b8951116141115760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a40161071a565b61411c8360016151d8565b975095506001945061412e9350505050565b9193909250565b60608167ffffffffffffffff811115614150576141506146d6565b6040519080825280601f01601f19166020018201604052801561417a576020820181803683370190505b509050811561240e57600061418f84866151d8565b90506020820160005b848110156141b0578281015182820152602001614198565b848111156141bf576000858301525b5050509392505050565b606061122e826020015160008460000151614135565b60608182601f0110156142345760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161071a565b8282840110156142865760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161071a565b818301845110156142d95760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161071a565b6060821580156142f85760405191506000825260208201604052614342565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614331578051835260209283019201614319565b5050858452601f01601f1916604052505b50949350505050565b604080518082019091526000808252602082015260008251116143fc5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161071a565b50604080518082019091528151815260209182019181019190915290565b6060600080600061442a85613800565b91945092509050600181600181111561444557614445615235565b146144b85760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d0000000000000000606482015260840161071a565b84516144c483856151d8565b146145375760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e6465720000000000000000000000000000606482015260840161071a565b604080516020808252610420820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161454e5790505093506000835b865181101561463c576000806145c16040518060400160405280858c600001516145a59190614dff565b8152602001858c602001516145ba91906151d8565b9052613800565b5091509150604051806040016040528083836145dd91906151d8565b8152602001848b602001516145f291906151d8565b81525088858151811061460757614607614b3b565b602090810291909101015261461d6001856151d8565b935061462981836151d8565b61463390846151d8565b9250505061457b565b50845250919392505050565b60008083601f84011261465a57600080fd5b50813567ffffffffffffffff81111561467257600080fd5b6020830191508360208260051b850101111561468d57600080fd5b9250929050565b600080602083850312156146a757600080fd5b823567ffffffffffffffff8111156146be57600080fd5b6146ca85828601614648565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561472e5761472e6146d6565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461475a57600080fd5b919050565b600082601f83011261477057600080fd5b813567ffffffffffffffff81111561478a5761478a6146d6565b61479d6020601f19601f84011601614705565b8181528460208386010111156147b257600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156147e157600080fd5b60405160c0810167ffffffffffffffff8282108183111715614805576148056146d6565b816040528293508435835261481c60208601614736565b602084015261482d60408601614736565b6040840152606085013560608401526080850135608084015260a085013591508082111561485a57600080fd5b506148678582860161475f565b60a0830152505092915050565b600080600080600085870360e081121561488d57600080fd5b863567ffffffffffffffff808211156148a557600080fd5b6148b18a838b016147cf565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0840112156148ea57600080fd5b60408901955060c089013592508083111561490457600080fd5b505061491288828901614648565b969995985093965092949392505050565b60005b8381101561493e578181015183820152602001614926565b838111156109215750506000910152565b60008151808452614967816020860160208601614923565b601f01601f19169290920160200192915050565b60208152600061240e602083018461494f565b6000602082840312156149a057600080fd5b61240e82614736565b6000602082840312156149bb57600080fd5b5035919050565b6000602082840312156149d457600080fd5b813567ffffffffffffffff8111156149eb57600080fd5b6149f7848285016147cf565b949350505050565b803567ffffffffffffffff8116811461475a57600080fd5b600060208284031215614a2957600080fd5b61240e826149ff565b8035801515811461475a57600080fd5b600060208284031215614a5457600080fd5b61240e82614a32565b600080600080600060a08688031215614a7557600080fd5b614a7e86614736565b945060208601359350614a93604087016149ff565b9250614aa160608701614a32565b9150608086013567ffffffffffffffff811115614abd57600080fd5b614ac98882890161475f565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614b2a816049850160208701614923565b919091016049019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614b9e57600080fd5b9190910192915050565b600061122e36836147cf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c1457614c14614bb4565b5060010190565b80516fffffffffffffffffffffffffffffffff8116811461475a57600080fd5b600060608284031215614c4d57600080fd5b6040516060810181811067ffffffffffffffff82111715614c7057614c706146d6565b60405282518152614c8360208401614c1b565b6020820152614c9460408401614c1b565b60408201529392505050565b600060808284031215614cb257600080fd5b6040516080810181811067ffffffffffffffff82111715614cd557614cd56146d6565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614d2157614d216146d6565b8360051b6020614d32818301614705565b868152918501918181019036841115614d4a57600080fd5b865b84811015614d7e57803586811115614d645760008081fd5b614d7036828b0161475f565b845250918301918301614d4c565b50979650505050505050565b600060208284031215614d9c57600080fd5b5051919050565b600067ffffffffffffffff80831681851681830481118215151615614dca57614dca614bb4565b02949350505050565b600067ffffffffffffffff808316818516808303821115614df657614df6614bb4565b01949350505050565b600082821015614e1157614e11614bb4565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614e5457614e54614e16565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614ea857614ea8614bb4565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614ee757614ee7614bb4565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614f1b57614f1b614bb4565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615614f6257614f62614bb4565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615614f9d57614f9d614bb4565b60008712925087820587128484161615614fb957614fb9614bb4565b87850587128184161615614fcf57614fcf614bb4565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561501757615017614bb4565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561504b5761504b614bb4565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561508957615089614bb4565b500290565b60008261509d5761509d614e16565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526150ed60c083018461494f565b98975050505050505050565b60006020828403121561510b57600080fd5b61240e82614c1b565b805163ffffffff8116811461475a57600080fd5b805160ff8116811461475a57600080fd5b600060c0828403121561514b57600080fd5b60405160c0810181811067ffffffffffffffff8211171561516e5761516e6146d6565b60405261517a83615114565b815261518860208401615128565b602082015261519960408401615128565b60408201526151aa60608401615114565b60608201526151bb60808401615114565b60808201526151cc60a08401614c1b565b60a08201529392505050565b600082198211156151eb576151eb614bb4565b500190565b600060ff83168061520357615203614e16565b8060ff84160691505092915050565b600060ff821660ff84168082101561522c5761522c614bb4565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a","sourceMap":"702:2517:98:-:0;;;1023:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5710:21:46;;;;;5741:20;;;;;5771:29;;;;1183:9:98;1194;1205:7;1214:13;5810:19:46;1205:7:98;5810:10:46;:19::i;:::-;5601:235;;;;1023:213:98;;;;702:2517;;1277:92;1337:25;1354:7;1337:16;;;;;:25;;:::i;:::-;1277:92;:::o;5871:177:46:-;3100:19:21;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:21;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:21;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:21;;1149:2:111;3146:190:21;;;1131:21:111;1188:2;1168:18;;;1161:30;1227:34;1207:18;;;1200:62;-1:-1:-1;;;1278:18:111;;;1271:44;1332:19;;3146:190:21;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:21;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:21;;;;;3372:65;5942:8:46::1;:38:::0;;-1:-1:-1;;;;;;5942:38:46::1;1337:42:57;5942:38:46;::::0;;5990:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;5990:16:46;;::::1;;::::0;;6016:25:::1;:23;:25::i;:::-;3461:14:21::0;3457:99;;;3507:5;3491:21;;-1:-1:-1;;3491:21:21;;;3531:14;;-1:-1:-1;1514:36:111;;3531:14:21;;1502:2:111;1487:18;3531:14:21;;;;;;;3457:99;3090:472;5871:177:46;:::o;1175:320:29:-;-1:-1:-1;;;;;1465:19:29;;:23;;;1175:320::o;8362:180:48:-;4888:13:21;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:21;;1763:2:111;4880:69:21;;;1745:21:111;1802:2;1782:18;;;1775:30;1841:34;1821:18;;;1814:62;-1:-1:-1;;;1892:18:111;;;1885:41;1943:19;;4880:69:21;1561:407:111;4880:69:21;8442:93:48::1;::::0;;::::1;::::0;::::1;::::0;;8472:6:::1;8442:93:::0;;;-1:-1:-1;8442:93:48::1;::::0;::::1;::::0;8519:12:::1;-1:-1:-1::0;;;;;8442:93:48::1;::::0;;;;;;;-1:-1:-1;;;8433:102:48::1;;:6;:102:::0;8362:180::o;14:147:111:-;-1:-1:-1;;;;;105:31:111;;95:42;;85:70;;151:1;148;141:12;166:776;306:6;314;322;330;383:3;371:9;362:7;358:23;354:33;351:53;;;400:1;397;390:12;351:53;432:9;426:16;451:47;492:5;451:47;:::i;:::-;567:2;552:18;;546:25;517:5;;-1:-1:-1;580:49:111;546:25;580:49;:::i;:::-;700:2;685:18;;679:25;648:7;;-1:-1:-1;742:15:111;;735:23;723:36;;713:64;;773:1;770;763:12;713:64;848:2;833:18;;827:25;796:7;;-1:-1:-1;861:49:111;827:25;861:49;:::i;:::-;166:776;;;;-1:-1:-1;166:776:111;;-1:-1:-1;;166:776:111:o;1561:407::-;702:2517:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061018e5760003560e01c80638456cb59116100d6578063a35d99df1161007f578063e965084c11610059578063e965084c146105b3578063e9e05c421461063f578063f04987501461065257600080fd5b8063a35d99df146104b9578063cff0ab96146104f2578063d53a822f1461059357600080fd5b80639b5f694a116100b05780639b5f694a146104295780639bf62d821461045c578063a14238e71461048957600080fd5b80638456cb59146103f45780638b4c40b0146101b35780638c3152e91461040957600080fd5b80634f3b457e116101385780636cfd26e9116101125780636cfd26e9146103805780636dbffb78146103a0578063724c184c146103c057600080fd5b80634f3b457e146102d357806354fd4d50146103005780635c975abb1461035657600080fd5b80633f4ba83a116101695780633f4ba83a1461026b578063452a9320146102805780634870496f146102b357600080fd5b80621c2ff6146101ba578063057bbee11461021857806333d7e2bd1461023857600080fd5b366101b5576101b33334620186a0600060405180602001604052806000815250610686565b005b600080fd5b3480156101c657600080fd5b506101ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561022457600080fd5b506101b3610233366004614694565b6108d3565b34801561024457600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ee565b34801561027757600080fd5b506101b3610927565b34801561028c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ee565b3480156102bf57600080fd5b506101b36102ce366004614874565b610a30565b3480156102df57600080fd5b506064546101ee9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561030c57600080fd5b506103496040518060400160405280600681526020017f312e31312e30000000000000000000000000000000000000000000000000000081525081565b60405161020f919061497b565b34801561036257600080fd5b506035546103709060ff1681565b604051901515815260200161020f565b34801561038c57600080fd5b506101b361039b36600461498e565b610fd8565b3480156103ac57600080fd5b506103706103bb3660046149a9565b61115d565b3480156103cc57600080fd5b506101ee7f000000000000000000000000000000000000000000000000000000000000000081565b34801561040057600080fd5b506101b3611234565b34801561041557600080fd5b506101b36104243660046149c2565b61133a565b34801561043557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ee565b34801561046857600080fd5b506032546101ee9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561049557600080fd5b506103706104a43660046149a9565b60336020526000908152604090205460ff1681565b3480156104c557600080fd5b506104d96104d4366004614a17565b611b2b565b60405167ffffffffffffffff909116815260200161020f565b3480156104fe57600080fd5b5060015461055a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161020f565b34801561059f57600080fd5b506101b36105ae366004614a42565b611b44565b3480156105bf57600080fd5b506106116105ce3660046149a9565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff928316602085015291169082015260600161020f565b6101b361064d366004614a5d565b610686565b34801561065e57600080fd5b506101ee7f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156107235773ffffffffffffffffffffffffffffffffffffffff871615610723576040805162461bcd60e51b81526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b61072d8351611b2b565b67ffffffffffffffff168567ffffffffffffffff1610156107b65760405162461bcd60e51b815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c0000000000000000000000000000000000000000000000000000000000606482015260840161071a565b6201d4c08351111561080a5760405162461bcd60e51b815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c617267650000604482015260640161071a565b3332811461082b575033731111000000000000000000000000000000001111015b60003488888888604051602001610846959493929190614ad6565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516108b6919061497b565b60405180910390a450506108ca8282611d3f565b50505050505050565b8060005b818110156109215761090f8484838181106108f4576108f4614b3b565b90506020028101906109069190614b6a565b61042490614ba8565b8061091981614be3565b9150506108d7565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109d25760405162461bcd60e51b815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e70617573650000000000000000000000000000000000000000000000606482015260840161071a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff1615610a835760405162461bcd60e51b815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161071a565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610b285760405162461bcd60e51b815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e747261637400606482015260840161071a565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bda9190614c3b565b519050610bf4610bef36869003860186614ca0565b612052565b8114610c685760405162461bcd60e51b815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f660000000000000000000000000000000000000000000000606482015260840161071a565b6000610c73876120ae565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610da55750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da19190614c3b565b5114155b610e175760405162461bcd60e51b815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e000000000000000000606482015260840161071a565b6040805160208101849052600091810182905260600160408051601f1981840301815282825280516020918201209083018190529250610ea4910160408051601f19818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610e9a888a614d06565b8a604001356120de565b610f165760405162461bcd60e51b815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f660000000000000000000000000000606482015260840161071a565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146110835760405162461bcd60e51b815260206004820152603860248201527f4f61737973506f7274616c3a206f6e6c7920677561726469616e2063616e207360448201527f65742061206e6577206d6573736167652072656c617965720000000000000000606482015260840161071a565b60645473ffffffffffffffffffffffffffffffffffffffff908116908216036110ee5760405162461bcd60e51b815260206004820152601860248201527f4f61737973506f7274616c3a20616c7265616479207365740000000000000000604482015260640161071a565b606480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffce056bb1203f3a49718c0c063cdde76b64ede7be48768dcf101ca2fc1358cfe90600090a250565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810182905260009061122e9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190614c3b565b602001516fffffffffffffffffffffffffffffffff16612102565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146112df5760405162461bcd60e51b815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20706175736500000000000000000000000000000000000000000000000000606482015260840161071a565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610a26565b60355460ff161561138d5760405162461bcd60e51b815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161071a565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead1461141c5760405162461bcd60e51b815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e00606482015260840161071a565b6000611427826120ae565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036114f85760405162461bcd60e51b815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e207965740000000000000000000000000000606482015260840161071a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115879190614d8a565b81602001516fffffffffffffffffffffffffffffffff1610156116385760405162461bcd60e51b815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a40161071a565b61165781602001516fffffffffffffffffffffffffffffffff16612102565b6116ef5760405162461bcd60e51b815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a40161071a565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015611794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b89190614c3b565b82518151919250146118585760405162461bcd60e51b815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a40161071a565b61187781602001516fffffffffffffffffffffffffffffffff16612102565b61190f5760405162461bcd60e51b815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a40161071a565b60008381526033602052604090205460ff16156119945760405162461bcd60e51b815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a65640000000000000000000000606482015260840161071a565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a0880151611a3693929190612209565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611a9b90841515815260200190565b60405180910390a280158015611ab15750326001145b15611b245760405162461bcd60e51b815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161071a565b5050505050565b6000611b38826010614da3565b61122e90615208614dd3565b611b4d81611b50565b50565b600054610100900460ff1615808015611b705750600054600160ff909116105b80611b8a5750303b158015611b8a575060005460ff166001145b611bfc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161071a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611c5a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611cbc612267565b8015611d1f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611d75907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614dff565b90506000611d81612330565b90506000816020015160ff16826000015163ffffffff16611da29190614e45565b90508215611ed957600154600090611dd9908390700100000000000000000000000000000000900467ffffffffffffffff16614ead565b90506000836040015160ff1683611df09190614f21565b600154611e109084906fffffffffffffffffffffffffffffffff16614f21565b611e1a9190614e45565b600154909150600090611e6b90611e449084906fffffffffffffffffffffffffffffffff16614fdd565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166123f6565b90506001861115611e9a57611e97611e4482876040015160ff1660018a611e929190614dff565b612415565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611f0c908490700100000000000000000000000000000000900467ffffffffffffffff16614dd3565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611fd55760405162461bcd60e51b815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161071a565b600154600090612001906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816615051565b9050600061201348633b9aca0061246a565b61201d908361508e565b905060005a61202c9088614dff565b905080821115612048576120486120438284614dff565b612481565b5050505050505050565b60008160000151826020015183604001518460600151604051602001612091949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a088015193516000976120919790969591016150a2565b6000806120ea866124af565b90506120f8818686866124e1565b9695505050505050565b60645460009073ffffffffffffffffffffffffffffffffffffffff1615801590612143575060645473ffffffffffffffffffffffffffffffffffffffff1633145b156122005760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b3bd5cf56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d991906150f9565b6fffffffffffffffffffffffffffffffff169050828111156121fe5750600192915050565b505b61122e82612511565b60008060006122198660006125b4565b90508061224f576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166122e45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161071a565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa1580156123cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f19190615139565b905090565b600061240b61240585856125d2565b836125e2565b90505b9392505050565b6000670de0b6b3a764000061245661242d8583614e45565b61243f90670de0b6b3a7640000614ead565b61245185670de0b6b3a7640000614f21565b6125f1565b6124609086614f21565b61240b9190614e45565b60008183101561247a578161240e565b5090919050565b6000805a90505b825a6124949083614dff565b10156124aa576124a382614be3565b9150612488565b505050565b606081805190602001206040516020016124cb91815260200190565b6040516020818303038152906040529050919050565b6000612508846124f2878686612622565b8051602091820120825192909101919091201490565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a29190614d8a565b6125ac90836151d8565b421192915050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561247a578161240e565b600081831261247a578161240e565b600061240e670de0b6b3a76400008361260986612f34565b6126139190614f21565b61261d9190614e45565b61315e565b606060008451116126755760405162461bcd60e51b815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b65790000000000000000000000604482015260640161071a565b600061268084613383565b9050600061268d8661346f565b90506000846040516020016126a491815260200190565b60405160208183030381529060405290506000805b8451811015612ec55760008582815181106126d6576126d6614b3b565b6020026020010151905084518311156127575760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e677468000000000000000000000000000000000000606482015260840161071a565b826000036127f657805180516020918201206040516127a59261277f92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6127f15760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161071a565b612919565b80515160201161289257805180516020918201206040516128209261277f92910190815260200190565b6127f15760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c206861736800000000000000000000000000000000000000000000000000606482015260840161071a565b8051845160208087019190912082519190920120146129195760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f6520686173680000000000000000000000000000000000000000000000000000606482015260840161071a565b612925601060016151d8565b81602001515103612acd5784518303612a655761295f816020015160108151811061295257612952614b3b565b60200260200101516134d2565b965060008751116129d85760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161071a565b600186516129e69190614dff565b8214612a5a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161071a565b50505050505061240e565b6000858481518110612a7957612a79614b3b565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612aa457612aa4614b3b565b60200260200101519050612ab7816135fe565b9550612ac46001866151d8565b94505050612eb2565b600281602001515103612e44576000612ae582613623565b9050600081600081518110612afc57612afc614b3b565b016020015160f81c90506000612b136002836151f0565b612b1e906002615212565b90506000612b2f848360ff16613647565b90506000612b3d8a89613647565b90506000612b4b838361367d565b905080835114612bc35760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161071a565b60ff851660021480612bd8575060ff85166003145b15612d795780825114612c535760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161071a565b612c6d876020015160018151811061295257612952614b3b565b9c5060008d5111612ce65760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161071a565b60018c51612cf49190614dff565b8814612d685760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161071a565b50505050505050505050505061240e565b60ff85161580612d8c575060ff85166001145b15612dcb57612db88760200151600181518110612dab57612dab614b3b565b60200260200101516135fe565b9950612dc4818a6151d8565b9850612e39565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e207072656669780000000000000000000000000000606482015260840161071a565b505050505050612eb2565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f6465000000000000000000000000000000000000000000000000606482015260840161071a565b5080612ebd81614be3565b9150506126b9565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e7473000000000000000000000000000000000000000000000000000000606482015260840161071a565b6000808213612f855760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161071a565b60006060612f9284613731565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361318f57506000919050565b680755bf798b4a1bf1e582126131e75760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161071a565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156133a1576133a16146d6565b6040519080825280602002602001820160405280156133e657816020015b60408051808201909152606080825260208201528152602001906001900390816133bf5790505b50915060005b8181101561346857604051806040016040528085838151811061341157613411614b3b565b6020026020010151815260200161344086848151811061343357613433614b3b565b60200260200101516137ed565b81525083828151811061345557613455614b3b565b60209081029190910101526001016133ec565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b838110156134c7578060011b82018184015160001a8060041c8253600f811660018301535050600101613499565b509295945050505050565b606060008060006134e285613800565b9194509250905060008160018111156134fd576134fd615235565b146135705760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d00000000000000606482015260840161071a565b61357a82846151d8565b8551146135ef5760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e646572000000000000000000000000606482015260840161071a565b61250885602001518484614135565b6060602082600001511061361a57613615826134d2565b61122e565b61122e826141c9565b606061122e613642836020015160008151811061295257612952614b3b565b61346f565b606082518210613666575060408051602081019091526000815261122e565b61240e83838486516136789190614dff565b6141df565b6000808251845110613690578251613693565b83515b90505b808210801561371a57508282815181106136b2576136b2614b3b565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106136f1576136f1614b3b565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b1561372a57816001019150613696565b5092915050565b60008082116137825760405162461bcd60e51b815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161071a565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b606061122e6137fb8361434b565b61441a565b6000806000808460000151116138a45760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161071a565b6020840151805160001a607f81116138c957600060016000945094509450505061412e565b60b78111613aa35760006138de608083614dff565b90508087600001511161397f5760405162461bcd60e51b815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a40161071a565b6001838101517fff000000000000000000000000000000000000000000000000000000000000001690821415806139f857507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613a905760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a40161071a565b506001955093506000925061412e915050565b60bf8111613d89576000613ab860b783614dff565b905080876000015111613b595760405162461bcd60e51b815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a40161071a565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613c1d5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a40161071a565b600184015160088302610100031c60378111613cc75760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a40161071a565b613cd181846151d8565b895111613d6c5760405162461bcd60e51b815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a40161071a565b613d778360016151d8565b975095506000945061412e9350505050565b60f78111613e50576000613d9e60c083614dff565b905080876000015111613e3f5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a40161071a565b60019550935084925061412e915050565b6000613e5d60f783614dff565b905080876000015111613efe5760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a40161071a565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613fc25760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a40161071a565b600184015160088302610100031c6037811161406c5760405162461bcd60e51b815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a40161071a565b61407681846151d8565b8951116141115760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a40161071a565b61411c8360016151d8565b975095506001945061412e9350505050565b9193909250565b60608167ffffffffffffffff811115614150576141506146d6565b6040519080825280601f01601f19166020018201604052801561417a576020820181803683370190505b509050811561240e57600061418f84866151d8565b90506020820160005b848110156141b0578281015182820152602001614198565b848111156141bf576000858301525b5050509392505050565b606061122e826020015160008460000151614135565b60608182601f0110156142345760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161071a565b8282840110156142865760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161071a565b818301845110156142d95760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161071a565b6060821580156142f85760405191506000825260208201604052614342565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614331578051835260209283019201614319565b5050858452601f01601f1916604052505b50949350505050565b604080518082019091526000808252602082015260008251116143fc5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161071a565b50604080518082019091528151815260209182019181019190915290565b6060600080600061442a85613800565b91945092509050600181600181111561444557614445615235565b146144b85760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d0000000000000000606482015260840161071a565b84516144c483856151d8565b146145375760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e6465720000000000000000000000000000606482015260840161071a565b604080516020808252610420820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161454e5790505093506000835b865181101561463c576000806145c16040518060400160405280858c600001516145a59190614dff565b8152602001858c602001516145ba91906151d8565b9052613800565b5091509150604051806040016040528083836145dd91906151d8565b8152602001848b602001516145f291906151d8565b81525088858151811061460757614607614b3b565b602090810291909101015261461d6001856151d8565b935061462981836151d8565b61463390846151d8565b9250505061457b565b50845250919392505050565b60008083601f84011261465a57600080fd5b50813567ffffffffffffffff81111561467257600080fd5b6020830191508360208260051b850101111561468d57600080fd5b9250929050565b600080602083850312156146a757600080fd5b823567ffffffffffffffff8111156146be57600080fd5b6146ca85828601614648565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561472e5761472e6146d6565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461475a57600080fd5b919050565b600082601f83011261477057600080fd5b813567ffffffffffffffff81111561478a5761478a6146d6565b61479d6020601f19601f84011601614705565b8181528460208386010111156147b257600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156147e157600080fd5b60405160c0810167ffffffffffffffff8282108183111715614805576148056146d6565b816040528293508435835261481c60208601614736565b602084015261482d60408601614736565b6040840152606085013560608401526080850135608084015260a085013591508082111561485a57600080fd5b506148678582860161475f565b60a0830152505092915050565b600080600080600085870360e081121561488d57600080fd5b863567ffffffffffffffff808211156148a557600080fd5b6148b18a838b016147cf565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0840112156148ea57600080fd5b60408901955060c089013592508083111561490457600080fd5b505061491288828901614648565b969995985093965092949392505050565b60005b8381101561493e578181015183820152602001614926565b838111156109215750506000910152565b60008151808452614967816020860160208601614923565b601f01601f19169290920160200192915050565b60208152600061240e602083018461494f565b6000602082840312156149a057600080fd5b61240e82614736565b6000602082840312156149bb57600080fd5b5035919050565b6000602082840312156149d457600080fd5b813567ffffffffffffffff8111156149eb57600080fd5b6149f7848285016147cf565b949350505050565b803567ffffffffffffffff8116811461475a57600080fd5b600060208284031215614a2957600080fd5b61240e826149ff565b8035801515811461475a57600080fd5b600060208284031215614a5457600080fd5b61240e82614a32565b600080600080600060a08688031215614a7557600080fd5b614a7e86614736565b945060208601359350614a93604087016149ff565b9250614aa160608701614a32565b9150608086013567ffffffffffffffff811115614abd57600080fd5b614ac98882890161475f565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614b2a816049850160208701614923565b919091016049019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614b9e57600080fd5b9190910192915050565b600061122e36836147cf565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614c1457614c14614bb4565b5060010190565b80516fffffffffffffffffffffffffffffffff8116811461475a57600080fd5b600060608284031215614c4d57600080fd5b6040516060810181811067ffffffffffffffff82111715614c7057614c706146d6565b60405282518152614c8360208401614c1b565b6020820152614c9460408401614c1b565b60408201529392505050565b600060808284031215614cb257600080fd5b6040516080810181811067ffffffffffffffff82111715614cd557614cd56146d6565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614d2157614d216146d6565b8360051b6020614d32818301614705565b868152918501918181019036841115614d4a57600080fd5b865b84811015614d7e57803586811115614d645760008081fd5b614d7036828b0161475f565b845250918301918301614d4c565b50979650505050505050565b600060208284031215614d9c57600080fd5b5051919050565b600067ffffffffffffffff80831681851681830481118215151615614dca57614dca614bb4565b02949350505050565b600067ffffffffffffffff808316818516808303821115614df657614df6614bb4565b01949350505050565b600082821015614e1157614e11614bb4565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614e5457614e54614e16565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614ea857614ea8614bb4565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614ee757614ee7614bb4565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614f1b57614f1b614bb4565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615614f6257614f62614bb4565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615614f9d57614f9d614bb4565b60008712925087820587128484161615614fb957614fb9614bb4565b87850587128184161615614fcf57614fcf614bb4565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561501757615017614bb4565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561504b5761504b614bb4565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561508957615089614bb4565b500290565b60008261509d5761509d614e16565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526150ed60c083018461494f565b98975050505050505050565b60006020828403121561510b57600080fd5b61240e82614c1b565b805163ffffffff8116811461475a57600080fd5b805160ff8116811461475a57600080fd5b600060c0828403121561514b57600080fd5b60405160c0810181811067ffffffffffffffff8211171561516e5761516e6146d6565b60405261517a83615114565b815261518860208401615128565b602082015261519960408401615128565b60408201526151aa60608401615114565b60608201526151bb60808401615114565b60808201526151cc60a08401614c1b565b60a08201529392505050565b600082198211156151eb576151eb614bb4565b500190565b600060ff83168061520357615203614e16565b8060ff84160691505092915050565b600060ff821660ff84168082101561522c5761522c614bb4565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a","sourceMap":"702:2517:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8278:86:46;8297:10;8309:9;1866:7;8347:5;8354:9;;;;;;;;;;;;8278:18;:86::i;:::-;702:2517:98;;;;;2035:41:46;;;;;;;;;;;;;;;;;;214:42:111;202:55;;;184:74;;172:2;157:18;2035:41:46;;;;;;;;2058:248:98;;;;;;;;;;-1:-1:-1;2058:248:98;;;;;:::i;:::-;;:::i;6438:96:46:-;;;;;;;;;;-1:-1:-1;6514:13:46;6438:96;;7027:180;;;;;;;;;;;;;:::i;6686:82::-;;;;;;;;;;-1:-1:-1;6753:8:46;6686:82;;9452:3746;;;;;;;;;;-1:-1:-1;9452:3746:46;;;;;:::i;:::-;;:::i;810:29:98:-;;;;;;;;;;-1:-1:-1;810:29:98;;;;;;;;5242:41:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3246:18::-;;;;;;;;;;-1:-1:-1;3246:18:46;;;;;;;;;;;5921:14:111;;5914:22;5896:41;;5884:2;5869:18;3246::46;5756:187:111;1513:321:98;;;;;;;;;;-1:-1:-1;1513:321:98;;;;;:::i;:::-;;:::i;21149:181:46:-;;;;;;;;;;-1:-1:-1;21149:181:46;;;;;:::i;:::-;;:::i;2468:33::-;;;;;;;;;;;;;;;6810:173;;;;;;;;;;;;;:::i;13311:4839::-;;;;;;;;;;-1:-1:-1;13311:4839:46;;;;;:::i;:::-;;:::i;6200:90::-;;;;;;;;;;-1:-1:-1;6274:9:46;6200:90;;2757:23;;;;;;;;;;-1:-1:-1;2757:23:46;;;;;;;;2871:52;;;;;;;;;;-1:-1:-1;2871:52:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;7700:120;;;;;;;;;;-1:-1:-1;7700:120:46;;;;;:::i;:::-;;:::i;:::-;;;7427:18:111;7415:31;;;7397:50;;7385:2;7370:18;7700:120:46;7253:200:111;2999:28:48;;;;;;;;;;-1:-1:-1;2999:28:48;;;;;;;;;;;;;;;;;;;;;;;;;7686:34:111;7674:47;;;7656:66;;7741:18;7795:15;;;7790:2;7775:18;;7768:43;7847:15;;7827:18;;;7820:43;7644:2;7629:18;2999:28:48;7458:411:111;1277:92:98;;;;;;;;;;-1:-1:-1;1277:92:98;;;;;:::i;:::-;;:::i;3005:61:46:-;;;;;;;;;;-1:-1:-1;3005:61:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8426:25:111;;;8470:34;8540:15;;;8535:2;8520:18;;8513:43;8592:15;;8572:18;;;8565:43;8414:2;8399:18;3005:61:46;8224:390:111;18880:1971:46;;;;;;:::i;:::-;;:::i;2240:43::-;;;;;;;;;;;;;;;18880:1971;19086:9;3417:18:48;3438:9;3417:30;;19240:11:46::1;19236:136;;;19275:17;::::0;::::1;::::0;19267:94:::1;;;::::0;;-1:-1:-1;;;19267:94:46;;9430:2:111;19267:94:46::1;::::0;::::1;9412:21:111::0;9449:18;;;9442:30;;;;9508:34;9488:18;;;9481:62;9579:34;9559:18;;;9552:62;9631:19;;19267:94:46::1;;;;;;;;;19540:37;19563:5;:12;19540:15;:37::i;:::-;19527:50;;:9;:50;;;;19519:98;;;::::0;-1:-1:-1;;;19519:98:46;;9863:2:111;19519:98:46::1;::::0;::::1;9845:21:111::0;9902:2;9882:18;;;9875:30;9941:34;9921:18;;;9914:62;10012:5;9992:18;;;9985:33;10035:19;;19519:98:46::1;9661:399:111::0;19519:98:46::1;20012:7;19996:5;:12;:23;;19988:66;;;::::0;-1:-1:-1;;;19988:66:46;;10267:2:111;19988:66:46::1;::::0;::::1;10249:21:111::0;10306:2;10286:18;;;10279:30;10345:32;10325:18;;;10318:60;10395:18;;19988:66:46::1;10065:354:111::0;19988:66:46::1;20160:10;20198:9;20184:23:::0;::::1;20180:108;;-1:-1:-1::0;20266:10:46::1;741:42:110::0;1213:27;20180:108:46::1;20545:23;20588:9;20599:6;20607:9;20618:11;20631:5;20571:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20545:92;;1716:1;20811:3;20784:60;;20805:4;20784:60;;;20833:10;20784:60;;;;;;:::i;:::-;;;;;;;;19101:1750;;3548:29:48::0;3557:7;3566:10;3548:8;:29::i;:::-;3339:245;18880:1971:46;;;;;;:::o;2058:248:98:-;2179:4;2162:14;2200:100;2224:6;2220:1;:10;2200:100;;;2251:38;2281:4;;2286:1;2281:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2251:38;;;:::i;:::-;2232:3;;;;:::i;:::-;;;;2200:100;;;;2152:154;2058:248;;:::o;7027:180:46:-;7073:10;:22;7087:8;7073:22;;7065:76;;;;-1:-1:-1;;;7065:76:46;;12719:2:111;7065:76:46;;;12701:21:111;12758:2;12738:18;;;12731:30;12797:34;12777:18;;;12770:62;12868:11;12848:18;;;12841:39;12897:19;;7065:76:46;12517:405:111;7065:76:46;7151:6;:14;;;;;;7180:20;;7189:10;184:74:111;;7180:20:46;;172:2:111;157:18;7180:20:46;;;;;;;;7027:180::o;9452:3746::-;5112:6;;;;:15;5104:50;;;;-1:-1:-1;;;5104:50:46;;13129:2:111;5104:50:46;;;13111:21:111;13168:2;13148:18;;;13141:30;13207:24;13187:18;;;13180:52;13249:18;;5104:50:46;12927:346:111;5104:50:46;9982:4:::1;9960:27;;:3;:10;;;:27;;::::0;9952:103:::1;;;::::0;-1:-1:-1;;;9952:103:46;;13480:2:111;9952:103:46::1;::::0;::::1;13462:21:111::0;13519:2;13499:18;;;13492:30;13558:34;13538:18;;;13531:62;13629:33;13609:18;;;13602:61;13680:19;;9952:103:46::1;13278:427:111::0;9952:103:46::1;10253:37;::::0;;;;::::1;::::0;::::1;13856:25:111::0;;;10232:18:46::1;::::0;10253:9:::1;:21;;::::0;::::1;::::0;13829:18:111;;10253:37:46::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48:::0;;-1:-1:-1;10435:45:46::1;;;::::0;;::::1;::::0;::::1;10463:16:::0;10435:45:::1;:::i;:::-;:27;:45::i;:::-;10421:10;:59;10400:135;;;::::0;-1:-1:-1;;;10400:135:46;;15564:2:111;10400:135:46::1;::::0;::::1;15546:21:111::0;15603:2;15583:18;;;15576:30;15642:34;15622:18;;;15615:62;15713:11;15693:18;;;15686:39;15742:19;;10400:135:46::1;15362:405:111::0;10400:135:46::1;10646:22;10671:27;10694:3;10671:22;:27::i;:::-;10708:40;10751:33:::0;;;:17:::1;:33;::::0;;;;;;;;10708:76;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;;::::0;;;;;;;10646:52;;-1:-1:-1;10708:76:46;11338:31;;:146:::1;;-1:-1:-1::0;11457:27:46;;11411:30:::1;::::0;;::::1;::::0;11389:53;;;;;15948:34:111;15936:47;;;11389:53:46::1;::::0;::::1;15918:66:111::0;11389:9:46::1;:21;;::::0;::::1;::::0;15891:18:111;;11389:53:46::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64:::0;:95:::1;;11338:146;11317:248;;;::::0;-1:-1:-1;;;11317:248:46;;16197:2:111;11317:248:46::1;::::0;::::1;16179:21:111::0;16236:2;16216:18;;;16209:30;16275:34;16255:18;;;16248:62;16346:25;16326:18;;;16319:53;16389:19;;11317:248:46::1;15995:419:111::0;11317:248:46::1;11845:147;::::0;;::::1;::::0;::::1;16593:25:111::0;;;11801:18:46::1;16634::111::0;;;16627:34;;;16566:18;;11845:147:46::1;::::0;;-1:-1:-1;;11845:147:46;;::::1;::::0;;;;;;11822:180;;11845:147:::1;11822:180:::0;;::::1;::::0;12410:22;;::::1;13856:25:111::0;;;11822:180:46;-1:-1:-1;12355:161:46::1;::::0;13829:18:111;12410:22:46::1;::::0;;-1:-1:-1;;12410:22:46;;::::1;::::0;;;12355:161;;::::1;::::0;;;::::1;::::0;;::::1;12410:22;12355:161:::0;::::1;::::0;12410:22;12355:161:::1;12443:16:::0;;12355:161:::1;:::i;:::-;12461:16;:41;;;12355:37;:161::i;:::-;12334:258;;;::::0;-1:-1:-1;;;12334:258:46;;17995:2:111;12334:258:46::1;::::0;::::1;17977:21:111::0;18034:2;18014:18;;;18007:30;18073:34;18053:18;;;18046:62;18144:20;18124:18;;;18117:48;18182:19;;12334:258:46::1;17793:414:111::0;12334:258:46::1;12910:165;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;12996:15;12910:165:::0;::::1;;::::0;;::::1;::::0;;;;;::::1;::::0;;;;;;-1:-1:-1;12874:33:46;;;:17:::1;:33:::0;;;;;:201;;;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;;::::1;::::0;;;;13180:10;;::::1;::::0;13168;;::::1;::::0;13135:56;;::::1;::::0;;::::1;::::0;;;::::1;::::0;12892:14;;13135:56:::1;::::0;-1:-1:-1;13135:56:46::1;9715:3483;;;;9452:3746:::0;;;;;:::o;1513:321:98:-;1587:10;:22;1601:8;1587:22;;1579:91;;;;-1:-1:-1;;;1579:91:98;;18414:2:111;1579:91:98;;;18396:21:111;18453:2;18433:18;;;18426:30;18492:34;18472:18;;;18465:62;18563:26;18543:18;;;18536:54;18607:19;;1579:91:98;18212:420:111;1579:91:98;1702:14;;;;;;1688:28;;;;1680:65;;;;-1:-1:-1;;;1680:65:98;;18839:2:111;1680:65:98;;;18821:21:111;18878:2;18858:18;;;18851:30;18917:26;18897:18;;;18890:54;18961:18;;1680:65:98;18637:348:111;1680:65:98;1756:14;:27;;;;;;;;;;;;;1798:29;;;;-1:-1:-1;;1798:29:98;1513:321;:::o;21149:181:46:-;21275:37;;;;;;;;13856:25:111;;;21223:4:46;;21246:77;;21275:21;:9;:21;;;;13829:18:111;;21275:37:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;;21246:77;;:28;:77::i;:::-;21239:84;21149:181;-1:-1:-1;;21149:181:46:o;6810:173::-;6854:10;:22;6868:8;6854:22;;6846:74;;;;-1:-1:-1;;;6846:74:46;;19192:2:111;6846:74:46;;;19174:21:111;19231:2;19211:18;;;19204:30;19270:34;19250:18;;;19243:62;19341:9;19321:18;;;19314:37;19368:19;;6846:74:46;18990:403:111;6846:74:46;6930:6;:13;;;;6939:4;6930:13;;;6958:18;;6965:10;184:74:111;;6958:18:46;;172:2:111;157:18;6958::46;14:250:111;13311:4839:46;5112:6;;;;:15;5104:50;;;;-1:-1:-1;;;5104:50:46;;13129:2:111;5104:50:46;;;13111:21:111;13168:2;13148:18;;;13141:30;13207:24;13187:18;;;13180:52;13249:18;;5104:50:46;12927:346:111;5104:50:46;13677:8:::1;::::0;:39:::1;:8;1337:42:57;13677:39:46;13656:137;;;::::0;-1:-1:-1;;;13656:137:46;;19600:2:111;13656:137:46::1;::::0;::::1;19582:21:111::0;19639:2;19619:18;;;19612:30;19678:34;19658:18;;;19651:62;19749:33;19729:18;;;19722:61;19800:19;;13656:137:46::1;19398:427:111::0;13656:137:46::1;13876:22;13901:27;13924:3;13901:22;:27::i;:::-;13938:40;13981:33:::0;;;:17:::1;:33;::::0;;;;;;;13938:76;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;;::::0;;;;;;;13876:52;;-1:-1:-1;14264:31:46;;14256:94:::1;;;::::0;-1:-1:-1;;;14256:94:46;;20032:2:111;14256:94:46::1;::::0;::::1;20014:21:111::0;20071:2;20051:18;;;20044:30;20110:34;20090:18;;;20083:62;20181:20;20161:18;;;20154:48;20219:19;;14256:94:46::1;19830:414:111::0;14256:94:46::1;14667:9;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14637:16;:26;;;:59;;;;14616:181;;;::::0;-1:-1:-1;;;14616:181:46;;20640:2:111;14616:181:46::1;::::0;::::1;20622:21:111::0;20679:2;20659:18;;;20652:30;20718:34;20698:18;;;20691:62;20789:34;20769:18;;;20762:62;20861:13;20840:19;;;20833:42;20892:19;;14616:181:46::1;20438:479:111::0;14616:181:46::1;15187:56;15216:16;:26;;;15187:56;;:28;:56::i;:::-;15166:172;;;::::0;-1:-1:-1;;;15166:172:46;;21124:2:111;15166:172:46::1;::::0;::::1;21106:21:111::0;21163:2;21143:18;;;21136:30;21202:34;21182:18;;;21175:62;21273:34;21253:18;;;21246:62;21345:7;21324:19;;;21317:36;21370:19;;15166:172:46::1;20922:473:111::0;15166:172:46::1;15570:30;::::0;;::::1;::::0;15548:53;;;;;15948:34:111;15936:47;;;15548:53:46::1;::::0;::::1;15918:66:111::0;15509:36:46::1;::::0;15548:9:::1;:21;;::::0;::::1;::::0;15891:18:111;;15548:53:46::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15912:27:::0;;15889:19;;15509:92;;-1:-1:-1;15889:50:46::1;15868:170;;;::::0;-1:-1:-1;;;15868:170:46;;21602:2:111;15868:170:46::1;::::0;::::1;21584:21:111::0;21641:2;21621:18;;;21614:30;21680:34;21660:18;;;21653:62;21751:34;21731:18;;;21724:62;21823:11;21802:19;;;21795:40;21852:19;;15868:170:46::1;21400:477:111::0;15868:170:46::1;16137:48;16166:8;:18;;;16137:48;;:28;:48::i;:::-;16116:162;;;::::0;-1:-1:-1;;;16116:162:46;;22084:2:111;16116:162:46::1;::::0;::::1;22066:21:111::0;22123:2;22103:18;;;22096:30;22162:34;22142:18;;;22135:62;22233:34;22213:18;;;22206:62;22305:5;22284:19;;;22277:34;22328:19;;16116:162:46::1;21882:471:111::0;16116:162:46::1;16394:36;::::0;;;:20:::1;:36;::::0;;;;;::::1;;:45;16386:111;;;::::0;-1:-1:-1;;;16386:111:46;;22560:2:111;16386:111:46::1;::::0;::::1;22542:21:111::0;22599:2;22579:18;;;22572:30;22638:34;22618:18;;;22611:62;22709:23;22689:18;;;22682:51;22750:19;;16386:111:46::1;22358:417:111::0;16386:111:46::1;16577:36;::::0;;;:20:::1;:36;::::0;;;;;;;:43;;;::::1;16616:4;16577:43;::::0;;16725:10;;::::1;::::0;16714:8:::1;:21:::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;17394:10;::::1;::::0;17406:12:::1;::::0;::::1;::::0;17420:9:::1;::::0;::::1;::::0;17431:8:::1;::::0;::::1;::::0;17370:70:::1;::::0;17394:10;17406:12;17420:9;17370:23:::1;:70::i;:::-;17508:8;:38:::0;;;::::1;1337:42:57;17508:38:46;::::0;;17705:44:::1;::::0;17355:85;;-1:-1:-1;17725:14:46;;17705:44:::1;::::0;::::1;::::0;17355:85;5921:14:111;5914:22;5896:41;;5884:2;5869:18;;5756:187;17705:44:46::1;;;;;;;;18013:16:::0;::::1;::::0;::::1;:61;;-1:-1:-1::0;18033:9:46::1;1015:1:57;18033:41:46;18013:61;18009:135;;;18090:43;::::0;-1:-1:-1;;;18090:43:46;;22982:2:111;18090:43:46::1;::::0;::::1;22964:21:111::0;23021:2;23001:18;;;22994:30;23060:34;23040:18;;;23033:62;23131:3;23111:18;;;23104:31;23152:19;;18090:43:46::1;22780:397:111::0;18009:135:46::1;13411:4739;;;;13311:4839:::0;:::o;7700:120::-;7765:6;7790:15;:10;7803:2;7790:15;:::i;:::-;:23;;7808:5;7790:23;:::i;1277:92:98:-;1337:25;1354:7;1337:16;:25::i;:::-;1277:92;:::o;5871:177:46:-;3100:19:21;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:21;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:21;1465:19:29;:23;;;3208:55:21;;-1:-1:-1;3246:12:21;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:21;;23900:2:111;3146:190:21;;;23882:21:111;23939:2;23919:18;;;23912:30;23978:34;23958:18;;;23951:62;24049:16;24029:18;;;24022:44;24083:19;;3146:190:21;23698:410:111;3146:190:21;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;5942:8:46::1;:38:::0;;;::::1;1337:42:57;5942:38:46;::::0;;5990:6:::1;:16:::0;;;::::1;;::::0;;;::::1;;::::0;;6016:25:::1;:23;:25::i;:::-;3461:14:21::0;3457:99;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;24265:36:111;;3531:14:21;;24253:2:111;24238:18;3531:14:21;;;;;;;3457:99;3090:472;5871:177:46;:::o;1175:320:29:-;1465:19;;;:23;;;1175:320::o;3817:4037:48:-;3984:6;:19;3949:17;;3969:34;;3984:19;;;;;3969:12;:34;:::i;:::-;3949:54;;4014:28;4045:17;:15;:17::i;:::-;4014:48;;4072:26;4171:6;:27;;;4163:36;;4128:6;:23;;;4120:32;;4113:87;;;;:::i;:::-;4072:128;-1:-1:-1;4215:13:48;;4211:2229;;4572:6;:20;4535:19;;4557:59;;4597:19;;4572:20;;;;;4557:59;:::i;:::-;4535:81;;4630:19;4761:6;:34;;;4753:43;;4724:19;:73;;;;:::i;:::-;4668:6;:18;4653:50;;4691:12;;4668:18;;4653:50;:::i;:::-;4652:146;;;;:::i;:::-;5017:6;:18;4630:168;;-1:-1:-1;4939:17:48;;4959:232;;5002:50;;4630:168;;5017:18;;5002:50;:::i;:::-;5091:6;:21;;;5083:30;;5153:6;:21;;;5145:30;;4959:16;:232::i;:::-;4939:252;;5468:1;5456:9;:13;5452:741;;;5741:437;5788:239;5845:10;5910:6;:34;;;5902:43;;6002:1;5990:9;:13;;;;:::i;:::-;5788:16;:239::i;5741:437::-;5728:450;;5452:741;6286:49;;6387:42;6349:24;6416:12;6387:42;;;6286:6;6387:42;-1:-1:-1;;4211:2229:48;6534:6;:31;;6558:7;;6534:6;:20;;:31;;6558:7;;6534:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6652:6;:23;;;6644:32;;6611:6;:20;;;;;;;;;;;;6603:29;;6596:81;;6575:190;;;;-1:-1:-1;;;6575:190:48;;26552:2:111;6575:190:48;;;26534:21:111;26591:2;26571:18;;;26564:30;26630:34;26610:18;;;26603:62;26701:32;26681:18;;;26674:60;26751:19;;6575:190:48;26350:426:111;6575:190:48;6877:6;:18;6827:20;;6850:46;;6877:18;;6850:16;;;:46;:::i;:::-;6827:69;;7378:15;7411:31;7420:13;7435:6;7411:8;:31::i;:::-;7396:46;;:12;:46;:::i;:::-;7378:64;;7722:15;7754:9;7740:23;;:11;:23;:::i;:::-;7722:41;;7787:7;7777;:17;7773:75;;;7810:27;7819:17;7829:7;7819;:17;:::i;:::-;7810:8;:27::i;:::-;3881:3973;;;;;;3817:4037;;:::o;4937:384:59:-;5036:7;5113:16;:24;;;5155:16;:26;;;5199:16;:41;;;5258:16;:32;;;5085:219;;;;;;;;;;27370:25:111;;;27426:2;27411:18;;27404:34;;;;27469:2;27454:18;;27447:34;27512:2;27497:18;;27490:34;27357:3;27342:19;;27139:391;5085:219:59;;;;;;;;;;;;;5062:252;;;;;;5055:259;;4937:384;;;:::o;4432:211::-;4566:9;;4577:10;;;;;4589;;;;;4601:9;;;;4612:12;;;;4626:8;;;;4555:80;;4519:7;;4555:80;;4566:9;;4577:10;4626:8;4555:80;;:::i;1041:343:67:-;1234:11;1261:16;1280:19;1294:4;1280:13;:19::i;:::-;1261:38;;1318:59;1350:3;1355:6;1363;1371:5;1318:31;:59::i;:::-;1309:68;1041:343;-1:-1:-1;;;;;;1041:343:67:o;2726:491:98:-;2836:14;;2816:4;;2836:28;:14;:28;;;;:60;;-1:-1:-1;2882:14:98;;;;2868:10;:28;2836:60;2832:316;;;2972:16;3020:9;2991:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2972:81;;;;3082:10;3071:8;:21;3067:71;;;-1:-1:-1;3119:4:98;;2726:491;-1:-1:-1;;2726:491:98:o;3067:71::-;2898:250;2832:316;3164:46;3199:10;3164:34;:46::i;4419:2320:61:-;4589:4;4609:13;4632:15;4650:21;4660:7;4669:1;4650:9;:21::i;:::-;4632:39;;4782:10;4772:1146;;4894:10;4891:1;4884:21;5009:2;5005;4998:14;5747:56;5743:2;5736:68;5900:3;5896:2;5889:15;4772:1146;6666:4;6630;6589:9;6583:16;6549:2;6538:9;6534:18;6491:6;6449:7;6415:5;6389:309;6361:337;4419:2320;-1:-1:-1;;;;;;;4419:2320:61:o;8362:180:48:-;4888:13:21;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:21;;28611:2:111;4880:69:21;;;28593:21:111;28650:2;28630:18;;;28623:30;28689:34;28669:18;;;28662:62;28760:13;28740:18;;;28733:41;28791:19;;4880:69:21;28409:407:111;4880:69:21;8442:93:48::1;::::0;;::::1;::::0;::::1;::::0;;8472:6:::1;8442:93:::0;;;-1:-1:-1;8442:93:48::1;::::0;::::1;::::0;8519:12:::1;8442:93;;::::0;;;;;;;8433:102;::::1;;:6;:102:::0;8362:180::o;8911:153:46:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9027:13:46;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9020:37;;8911:153;:::o;537:161:54:-;616:6;641:50;656:28;671:6;679:4;656:14;:28::i;:::-;686:4;641:14;:50::i;:::-;634:57;;537:161;;;;;;:::o;1040:228::-;1138:6;1257:4;1180:72;1213:19;1220:12;1257:4;1213:19;:::i;:::-;1205:28;;:4;:28;:::i;:::-;1235:16;:9;1247:4;1235:16;:::i;:::-;1180:24;:72::i;:::-;1164:89;;:12;:89;:::i;:::-;1163:98;;;;:::i;413:105:36:-;471:7;502:1;497;:6;;:14;;510:1;497:14;;;-1:-1:-1;506:1:36;;490:21;-1:-1:-1;413:105:36:o;407:192:55:-;461:9;484:18;505:9;484:30;;524:69;556:7;544:9;531:22;;:10;:22;:::i;:::-;:32;524:69;;;579:3;;;:::i;:::-;;;524:69;;;451:148;;407:192;:::o;2052:142:67:-;2116:18;2181:4;2171:15;;;;;;2154:33;;;;;;30180:19:111;;30224:2;30215:12;;30051:182;2154:33:67;;;;;;;;;;;;;2146:41;;2052:142;;;:::o;2253:281:66:-;2446:11;2482:45;2494:6;2502:24;2506:4;2512:6;2520:5;2502:3;:24::i;:::-;6693:17:56;;;;;;;6672;;;;;;;;;;:38;;6569:148;2482:45:66;2473:54;2253:281;-1:-1:-1;;;;;2253:281:66:o;21583:189:46:-;21672:4;21726:9;:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21713:52;;:10;:52;:::i;:::-;21695:15;:70;;21583:189;-1:-1:-1;;21583:189:46:o;3615:365:61:-;3696:4;3712:15;3931:2;3916:12;3909:5;3905:24;3901:33;3896:2;3887:7;3883:16;3879:56;3874:2;3867:5;3863:14;3860:76;3853:84;;3615:365;-1:-1:-1;;;;3615:365:61:o;311:102:37:-;367:6;397:1;392;:6;;:14;;405:1;392:14;;491:101;547:6;576:1;572;:5;:13;;584:1;572:13;;1208:273:38;1267:6;1391:36;491:4;1410:1;1399:8;1405:1;1399:5;:8::i;:::-;:12;;;;:::i;:::-;1398:28;;;;:::i;:::-;1391:6;:36::i;2830:6314:66:-;2923:19;2976:1;2962:4;:11;:15;2954:49;;;;-1:-1:-1;;;2954:49:66;;30573:2:111;2954:49:66;;;30555:21:111;30612:2;30592:18;;;30585:30;30651:23;30631:18;;;30624:51;30692:18;;2954:49:66;30371:345:111;2954:49:66;3014:23;3040:19;3052:6;3040:11;:19::i;:::-;3014:45;;3069:16;3088:21;3104:4;3088:15;:21::i;:::-;3069:40;;3119:26;3165:5;3148:23;;;;;;30180:19:111;;30224:2;30215:12;;30051:182;3148:23:66;;;;;;;;;;;;;3119:52;;3181:23;3295:9;3290:5790;3314:5;:12;3310:1;:16;3290:5790;;;3347:27;3377:5;3383:1;3377:8;;;;;;;;:::i;:::-;;;;;;;3347:38;;3516:3;:10;3497:15;:29;;3489:88;;;;-1:-1:-1;;;3489:88:66;;30923:2:111;3489:88:66;;;30905:21:111;30962:2;30942:18;;;30935:30;31001:34;30981:18;;;30974:62;31072:16;31052:18;;;31045:44;31106:19;;3489:88:66;30721:410:111;3489:88:66;3596:15;3615:1;3596:20;3592:837;;3768:19;;3758:30;;;;;;;3741:48;;3729:76;;3741:48;;3758:30;3741:48;30180:19:111;;;30224:2;30215:12;;30051:182;3741:48:66;;;;;;;;;;;;;3791:13;6693:17:56;;;;;;;6672;;;;;;;;;;:38;;6569:148;3729:76:66;3700:176;;;;-1:-1:-1;;;3700:176:66;;31338:2:111;3700:176:66;;;31320:21:111;31377:2;31357:18;;;31350:30;31416:31;31396:18;;;31389:59;31465:18;;3700:176:66;31136:353:111;3700:176:66;3592:837;;;3901:19;;:26;3931:2;-1:-1:-1;3897:532:66;;4097:19;;4087:30;;;;;;;4070:48;;4058:76;;4070:48;;4087:30;4070:48;30180:19:111;;;30224:2;30215:12;;30051:182;4058:76:66;4029:186;;;;-1:-1:-1;;;4029:186:66;;31696:2:111;4029:186:66;;;31678:21:111;31735:2;31715:18;;;31708:30;31774:34;31754:18;;;31747:62;31845:9;31825:18;;;31818:37;31872:19;;4029:186:66;31494:403:111;3897:532:66;4336:19;;6693:17:56;;;;;;;;;;6672;;;;;;;:38;4316:98:66;;;;-1:-1:-1;;;4316:98:66;;32104:2:111;4316:98:66;;;32086:21:111;32143:2;32123:18;;;32116:30;32182:34;32162:18;;;32155:62;32253:8;32233:18;;;32226:36;32279:19;;4316:98:66;31902:402:111;4316:98:66;936:14;803:2;949:1;936:14;:::i;:::-;4447:11;:19;;;:26;:48;4443:4627;;4538:3;:10;4519:15;:29;4515:1346;;5047:52;5067:11;:19;;;803:2;5067:31;;;;;;;;:::i;:::-;;;;;;;5047:19;:52::i;:::-;5038:61;;5145:1;5129:6;:13;:17;5121:89;;;;-1:-1:-1;;;5121:89:66;;32511:2:111;5121:89:66;;;32493:21:111;32550:2;32530:18;;;32523:30;32589:34;32569:18;;;32562:62;32660:29;32640:18;;;32633:57;32707:19;;5121:89:66;32309:423:111;5121:89:66;5322:1;5307:5;:12;:16;;;;:::i;:::-;5302:1;:21;5294:92;;;;-1:-1:-1;;;5294:92:66;;32939:2:111;5294:92:66;;;32921:21:111;32978:2;32958:18;;;32951:30;33017:34;32997:18;;;32990:62;33088:28;33068:18;;;33061:56;33134:19;;5294:92:66;32737:422:111;5294:92:66;5409:13;;;;;;;;4515:1346;5609:15;5633:3;5637:15;5633:20;;;;;;;;:::i;:::-;;;;;;;;;5627:27;;5609:45;;5676:33;5712:11;:19;;;5732:9;5712:30;;;;;;;;;;:::i;:::-;;;;;;;5676:66;;5780:20;5791:8;5780:10;:20::i;:::-;5764:36;-1:-1:-1;5822:20:66;5841:1;5822:20;;:::i;:::-;;;5447:414;;4443:4627;;;1105:1;5885:11;:19;;;:26;:59;5881:3189;;5964:17;5984:25;5997:11;5984:12;:25::i;:::-;5964:45;;6027:12;6048:4;6053:1;6048:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6074:12:66;6094:10;6103:1;6048:7;6094:10;:::i;:::-;6089:16;;:1;:16;:::i;:::-;6074:31;;6123:26;6152:25;6164:4;6170:6;6152:25;;:11;:25::i;:::-;6123:54;;6195:25;6223:33;6235:3;6240:15;6223:11;:33::i;:::-;6195:61;;6274:26;6303:51;6326:13;6341:12;6303:22;:51::i;:::-;6274:80;;6661:18;6637:13;:20;:42;6608:171;;;;-1:-1:-1;;;6608:171:66;;33728:2:111;6608:171:66;;;33710:21:111;33767:2;33747:18;;;33740:30;33806:34;33786:18;;;33779:62;33877:28;33857:18;;;33850:56;33923:19;;6608:171:66;33526:422:111;6608:171:66;6802:26;;;1447:1;6802:26;;:55;;-1:-1:-1;6832:25:66;;;1553:1;6832:25;6802:55;6798:2169;;;7498:18;7475:12;:19;:41;7442:185;;;;-1:-1:-1;;;7442:185:66;;34155:2:111;7442:185:66;;;34137:21:111;34194:2;34174:18;;;34167:30;34233:34;34213:18;;;34206:62;34304:31;34284:18;;;34277:59;34353:19;;7442:185:66;33953:425:111;7442:185:66;7985:43;8005:11;:19;;;8025:1;8005:22;;;;;;;;:::i;7985:43::-;7976:52;;8074:1;8058:6;:13;:17;8050:87;;;;-1:-1:-1;;;8050:87:66;;34585:2:111;8050:87:66;;;34567:21:111;34624:2;34604:18;;;34597:30;34663:34;34643:18;;;34636:62;34734:27;34714:18;;;34707:55;34779:19;;8050:87:66;34383:421:111;8050:87:66;8249:1;8234:5;:12;:16;;;;:::i;:::-;8229:1;:21;8221:90;;;;-1:-1:-1;;;8221:90:66;;35011:2:111;8221:90:66;;;34993:21:111;35050:2;35030:18;;;35023:30;35089:34;35069:18;;;35062:62;35160:26;35140:18;;;35133:54;35204:19;;8221:90:66;34809:420:111;8221:90:66;8334:13;;;;;;;;;;;;;;6798:2169;8376:31;;;;;:65;;-1:-1:-1;8411:30:66;;;1339:1;8411:30;8376:65;8372:595;;;8748:34;8759:11;:19;;;8779:1;8759:22;;;;;;;;:::i;:::-;;;;;;;8748:10;:34::i;:::-;8732:50;-1:-1:-1;8804:37:66;8823:18;8804:37;;:::i;:::-;;;8372:595;;;8888:60;;-1:-1:-1;;;8888:60:66;;35436:2:111;8888:60:66;;;35418:21:111;35475:2;35455:18;;;35448:30;35514:34;35494:18;;;35487:62;35585:20;35565:18;;;35558:48;35623:19;;8888:60:66;35234:414:111;8372:595:66;5946:3035;;;;;;5881:3189;;;9005:50;;-1:-1:-1;;;9005:50:66;;35855:2:111;9005:50:66;;;35837:21:111;35894:2;35874:18;;;35867:30;35933:34;35913:18;;;35906:62;36004:10;35984:18;;;35977:38;36032:19;;9005:50:66;35653:404:111;5881:3189:66;-1:-1:-1;3328:3:66;;;;:::i;:::-;;;;3290:5790;;;-1:-1:-1;9090:47:66;;-1:-1:-1;;;9090:47:66;;36264:2:111;9090:47:66;;;36246:21:111;36303:2;36283:18;;;36276:30;36342:34;36322:18;;;36315:62;36413:7;36393:18;;;36386:35;36438:19;;9090:47:66;36062:401:111;4596:2947:38;4644:8;4700:1;4696;:5;4688:27;;;;-1:-1:-1;;;4688:27:38;;36670:2:111;4688:27:38;;;36652:21:111;36709:1;36689:18;;;36682:29;36747:11;36727:18;;;36720:39;36776:18;;4688:27:38;36468:332:111;4688:27:38;5107:8;5145:2;5125:16;5138:1;5125:4;:16::i;:::-;5118:29;5175:3;:7;;;5161:22;;;;5208:17;;;6001:31;5997:35;;6052:5;;5459:2;6051:13;;;6068:32;6050:50;6120:5;;6119:13;;6136:33;6118:51;6189:5;;6188:13;;6205:33;6187:51;6258:5;;6257:13;;6274:33;6256:51;6327:5;;6326:13;;6343:32;6325:50;6395:5;;6394:13;;6411:30;6393:48;5398:31;5394:35;;5449:5;;5448:13;;5465:32;5447:50;5517:5;;5516:13;;5533:32;5515:50;5585:5;;5584:13;;5583:50;;5653:5;;5652:13;;5651:50;;5721:5;;5720:13;;;5719:50;;5787:5;;;:46;;6735:10;7125:43;7120:48;7232:71;:75;;;;7227:80;;;;7380:72;7375:77;7523:3;7517:9;;;-1:-1:-1;;4596:2947:38:o;1487:3103::-;1536:8;1718:21;1713:1;:26;1709:40;;-1:-1:-1;1748:1:38;;1487:3103;-1:-1:-1;1487:3103:38:o;1709:40::-;1948:21;1943:1;:26;1939:54;;1971:22;;-1:-1:-1;;;1971:22:38;;37007:2:111;1971:22:38;;;36989:21:111;37046:2;37026:18;;;37019:30;37085:14;37065:18;;;37058:42;37117:18;;1971:22:38;36805:336:111;1939:54:38;2266:5;2260:2;2255:7;;;2254:17;;-1:-1:-1;2535:8:38;2601:2;2559:29;2548:7;;;2547:41;2591:5;2547:49;2546:57;;2629:29;2625:33;;2621:37;;;3300:35;;;3355:5;;2935:2;3354:13;;;3371:32;3353:50;3423:5;;3422:13;;3421:51;;3492:5;;3491:13;;3508:34;3490:52;3562:5;;3561:13;;3560:53;;3633:5;;3632:13;;3649:35;3631:53;2941:32;2874:31;2870:35;;2925:5;;2924:13;;2923:50;;;2998:5;;;:40;;3058:5;3057:13;;;3074:35;3056:53;3127:5;;;3136:40;3127:50;4002:10;4502:49;4489:62;4564:3;:7;;;;4488:84;;;;;;-1:-1:-1;;1487:3103:38:o;9434:390:66:-;9553:13;;9500:24;;9553:13;9585:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;9585:22:66;;;;;;;;;;;;;;;;9576:31;;9622:9;9617:201;9641:6;9637:1;:10;9617:201;;;9676:72;;;;;;;;9696:6;9703:1;9696:9;;;;;;;;:::i;:::-;;;;;;;9676:72;;;;9716:29;9735:6;9742:1;9735:9;;;;;;;;:::i;:::-;;;;;;;9716:18;:29::i;:::-;9676:72;;;9664:6;9671:1;9664:9;;;;;;;;:::i;:::-;;;;;;;;;;:84;9790:3;;9617:201;;;;9526:298;9434:390;;;:::o;4332:1978:56:-;4395:12;4419:21;4550:4;4544:11;4532:23;;4663:6;4657:13;4836:11;4830:4;4826:22;5195:4;5180:13;5176:24;5169:4;5165:9;5161:40;5151:8;5147:55;5141:4;5134:69;5293:13;5283:8;5276:31;;5434:4;5426:6;5422:17;5571:4;5561:8;5557:19;5662:4;5647:622;5675:11;5672:1;5669:18;5647:622;;;5854:1;5848:4;5844:12;5830;5826:31;5996:1;5984:10;5980:18;5974:25;5968:4;5963:37;6119:1;6113:4;6109:12;6101:6;6093:29;6249:4;6246:1;6242:12;6235:4;6227:6;6223:17;6215:40;-1:-1:-1;;5702:4:56;5695:12;5647:622;;;-1:-1:-1;6295:8:56;;4332:1978;-1:-1:-1;;;;;4332:1978:56:o;3993:464:64:-;4055:17;4085:18;4105;4125:20;4149:18;4163:3;4149:13;:18::i;:::-;4084:83;;-1:-1:-1;4084:83:64;-1:-1:-1;4084:83:64;-1:-1:-1;4198:21:64;4186:8;:33;;;;;;;;:::i;:::-;;4178:103;;;;-1:-1:-1;;;4178:103:64;;37537:2:111;4178:103:64;;;37519:21:111;37576:2;37556:18;;;37549:30;37615:34;37595:18;;;37588:62;37686:27;37666:18;;;37659:55;37731:19;;4178:103:64;37335:421:111;4178:103:64;4314:23;4327:10;4314;:23;:::i;:::-;4300:10;;:37;4292:102;;;;-1:-1:-1;;;4292:102:64;;37963:2:111;4292:102:64;;;37945:21:111;38002:2;37982:18;;;37975:30;38041:34;38021:18;;;38014:62;38112:22;38092:18;;;38085:50;38152:19;;4292:102:64;37761:416:111;4292:102:64;4412:38;4418:3;:7;;;4427:10;4439;4412:5;:38::i;10121:193:66:-;10195:16;10244:2;10229:5;:12;;;:17;:78;;10281:26;10301:5;10281:19;:26::i;:::-;10229:78;;;10249:29;10272:5;10249:22;:29::i;10495:172::-;10562:21;10606:54;10622:37;10642:5;:13;;;10656:1;10642:16;;;;;;;;:::i;10622:37::-;10606:15;:54::i;3805:237:56:-;3880:12;3918:6;:13;3908:6;:23;3904:70;;-1:-1:-1;3954:9:56;;;;;;;;;-1:-1:-1;3954:9:56;;3947:16;;3904:70;3990:45;3996:6;4004;4028;4012;:13;:22;;;;:::i;:::-;3990:5;:45::i;10892:321:66:-;10980:15;11007:11;11034:2;:9;11022:2;:9;:21;11021:47;;11059:2;:9;11021:47;;;11047:2;:9;11021:47;11007:61;;11078:129;11095:3;11085:7;:13;:43;;;;;11117:2;11120:7;11117:11;;;;;;;;:::i;:::-;;;;;;;;;11102:26;;;:2;11105:7;11102:11;;;;;;;;:::i;:::-;;;;;;;:26;11085:43;11078:129;;;11173:9;;;;;11078:129;;;10997:216;10892:321;;;;:::o;15328:575:38:-;15376:9;15409:1;15405;:5;15397:27;;;;-1:-1:-1;;;15397:27:38;;36670:2:111;15397:27:38;;;36652:21:111;36709:1;36689:18;;;36682:29;36747:11;36727:18;;;36720:39;36776:18;;15397:27:38;36468:332:111;15397:27:38;-1:-1:-1;15821:1:38;15473:34;-1:-1:-1;;15467:1:38;15463:49;15566:9;;;15546:18;15543:33;15540:1;15536:41;15530:48;15624:9;;;15612:10;15609:25;15606:1;15602:33;15596:40;15678:9;;;15670:6;15667:21;15664:1;15660:29;15654:36;15730:9;;;15724:4;15721:19;15718:1;15714:27;;;15708:34;;;15781:9;;;15776:3;15773:18;15770:1;15766:26;15760:33;15832:9;;;15824:18;;;15817:26;;15811:33;15876:9;;;-1:-1:-1;15862:25:38;;15328:575::o;3732:130:64:-;3791:21;3831:24;3840:14;3850:3;3840:9;:14::i;:::-;3831:8;:24::i;5246:4079::-;5335:15;5352;5369:17;5705:1;5692:3;:10;;;:14;5684:101;;;;-1:-1:-1;;;5684:101:64;;38384:2:111;5684:101:64;;;38366:21:111;38423:2;38403:18;;;38396:30;38462:34;38442:18;;;38435:62;38533:34;38513:18;;;38506:62;38605:12;38584:19;;;38577:41;38635:19;;5684:101:64;38182:478:111;5684:101:64;5816:7;;;;5898:10;;5796:17;5890:19;5943:4;5933:14;;5929:3390;;5999:1;6002;6005:21;5991:36;;;;;;;;;;5929:3390;6058:4;6048:6;:14;6044:3275;;6164:14;6181:13;6190:4;6181:6;:13;:::i;:::-;6164:30;;6247:6;6234:3;:10;;;:19;6209:140;;;;-1:-1:-1;;;6209:140:64;;38867:2:111;6209:140:64;;;38849:21:111;38906:2;38886:18;;;38879:30;38945:34;38925:18;;;38918:62;39016:34;38996:18;;;38989:62;39088:16;39067:19;;;39060:45;39122:19;;6209:140:64;38665:482:111;6209:140:64;6471:1;6462:11;;;6456:18;6476:14;6452:39;;6544:11;;;;:41;;-1:-1:-1;6559:26:64;;;;;;6544:41;6519:177;;;;-1:-1:-1;;;6519:177:64;;39354:2:111;6519:177:64;;;39336:21:111;39393:2;39373:18;;;39366:30;39432:34;39412:18;;;39405:62;39503:34;39483:18;;;39476:62;39575:15;39554:19;;;39547:44;39608:19;;6519:177:64;39152:481:111;6519:177:64;-1:-1:-1;6719:1:64;;-1:-1:-1;6722:6:64;-1:-1:-1;6730:21:64;;-1:-1:-1;6711:41:64;;-1:-1:-1;;6711:41:64;6044:3275;6783:4;6773:6;:14;6769:2550;;6831:19;6853:13;6862:4;6853:6;:13;:::i;:::-;6831:35;;6919:11;6906:3;:10;;;:24;6881:164;;;;-1:-1:-1;;;6881:164:64;;39840:2:111;6881:164:64;;;39822:21:111;39879:2;39859:18;;;39852:30;39918:34;39898:18;;;39891:62;39989:34;39969:18;;;39962:62;40061:19;40040;;;40033:48;40098:19;;6881:164:64;39638:485:111;6881:164:64;7167:1;7158:11;;7152:18;7172:14;7148:39;7060:25;7240:26;;;7215:143;;;;-1:-1:-1;;;7215:143:64;;40330:2:111;7215:143:64;;;40312:21:111;40369:2;40349:18;;;40342:30;40408:34;40388:18;;;40381:62;40479:34;40459:18;;;40452:62;40551:12;40530:19;;;40523:41;40581:19;;7215:143:64;40128:478:111;7215:143:64;7488:1;7479:11;;7473:18;7455:1;7451:19;;7446:3;7442:29;7438:54;7537:2;7528:11;;7520:96;;;;-1:-1:-1;;;7520:96:64;;40813:2:111;7520:96:64;;;40795:21:111;40852:2;40832:18;;;40825:30;40891:34;40871:18;;;40864:62;40962:34;40942:18;;;40935:62;41034:10;41013:19;;;41006:39;41062:19;;7520:96:64;40611:476:111;7520:96:64;7669:20;7683:6;7669:11;:20;:::i;:::-;7656:10;;:33;7631:168;;;;-1:-1:-1;;;7631:168:64;;41294:2:111;7631:168:64;;;41276:21:111;41333:2;41313:18;;;41306:30;41372:34;41352:18;;;41345:62;41443:34;41423:18;;;41416:62;41515:14;41494:19;;;41487:43;41547:19;;7631:168:64;41092:480:111;7631:168:64;7822:15;7826:11;7822:1;:15;:::i;:::-;7814:55;-1:-1:-1;7839:6:64;-1:-1:-1;7847:21:64;;-1:-1:-1;7814:55:64;;-1:-1:-1;;;;7814:55:64;6769:2550;7900:4;7890:6;:14;7886:1433;;8003:15;8021:13;8030:4;8021:6;:13;:::i;:::-;8003:31;;8070:7;8057:3;:10;;;:20;8049:107;;;;-1:-1:-1;;;8049:107:64;;41779:2:111;8049:107:64;;;41761:21:111;41818:2;41798:18;;;41791:30;41857:34;41837:18;;;41830:62;41928:34;41908:18;;;41901:62;42000:12;41979:19;;;41972:41;42030:19;;8049:107:64;41577:478:111;8049:107:64;8179:1;;-1:-1:-1;8182:7:64;-1:-1:-1;8179:1:64;;-1:-1:-1;8171:42:64;;-1:-1:-1;;8171:42:64;7886:1433;8270:20;8293:13;8302:4;8293:6;:13;:::i;:::-;8270:36;;8359:12;8346:3;:10;;;:25;8321:161;;;;-1:-1:-1;;;8321:161:64;;42262:2:111;8321:161:64;;;42244:21:111;42301:2;42281:18;;;42274:30;42340:34;42320:18;;;42313:62;42411:34;42391:18;;;42384:62;42483:15;42462:19;;;42455:44;42516:19;;8321:161:64;42060:481:111;8321:161:64;8604:1;8595:11;;8589:18;8609:14;8585:39;8497:25;8677:26;;;8652:141;;;;-1:-1:-1;;;8652:141:64;;42748:2:111;8652:141:64;;;42730:21:111;42787:2;42767:18;;;42760:30;42826:34;42806:18;;;42799:62;42897:34;42877:18;;;42870:62;42969:10;42948:19;;;42941:39;42997:19;;8652:141:64;42546:476:111;8652:141:64;8926:1;8917:11;;8911:18;8892:1;8888:20;;8883:3;8879:30;8875:55;8976:2;8966:12;;8958:95;;;;-1:-1:-1;;;8958:95:64;;43229:2:111;8958:95:64;;;43211:21:111;43268:2;43248:18;;;43241:30;43307:34;43287:18;;;43280:62;43378:34;43358:18;;;43351:62;43450:8;43429:19;;;43422:37;43476:19;;8958:95:64;43027:474:111;8958:95:64;9106:22;9121:7;9106:12;:22;:::i;:::-;9093:10;;:35;9068:168;;;;-1:-1:-1;;;9068:168:64;;43708:2:111;9068:168:64;;;43690:21:111;43747:2;43727:18;;;43720:30;43786:34;43766:18;;;43759:62;43857:34;43837:18;;;43830:62;43929:12;43908:19;;;43901:41;43959:19;;9068:168:64;43506:478:111;9068:168:64;9259:16;9263:12;9259:1;:16;:::i;:::-;9251:57;-1:-1:-1;9277:7:64;-1:-1:-1;9286:21:64;;-1:-1:-1;9251:57:64;;-1:-1:-1;;;;9251:57:64;5246:4079;;;;;;:::o;9585:780::-;9676:17;9722:7;9712:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9712:18:64;-1:-1:-1;9705:25:64;-1:-1:-1;9740:54:64;;9772:11;9740:54;10053:11;10067:36;10096:7;10088:4;10067:36;:::i;:::-;10053:50;;10158:2;10152:4;10148:13;10183:1;10197:87;10211:7;10208:1;10205:14;10197:87;;;10269:11;;;10263:18;10249:12;;;10242:40;10234:2;10227:10;10197:87;;;10307:7;10304:1;10301:14;10298:51;;;10345:1;10335:7;10329:4;10325:18;10318:29;10298:51;;;10122:237;9585:780;;;;;:::o;4847:137::-;4912:17;4948:29;4954:3;:7;;;4963:1;4966:3;:10;;;4948:5;:29::i;660:2816:56:-;752:12;824:7;808;818:2;808:12;:23;;800:50;;;;-1:-1:-1;;;800:50:56;;44191:2:111;800:50:56;;;44173:21:111;44230:2;44210:18;;;44203:30;44269:16;44249:18;;;44242:44;44303:18;;800:50:56;43989:338:111;800:50:56;892:6;881:7;872:6;:16;:26;;864:53;;;;-1:-1:-1;;;864:53:56;;44191:2:111;864:53:56;;;44173:21:111;44230:2;44210:18;;;44203:30;44269:16;44249:18;;;44242:44;44303:18;;864:53:56;43989:338:111;864:53:56;965:7;956:6;:16;939:6;:13;:33;;931:63;;;;-1:-1:-1;;;931:63:56;;44534:2:111;931:63:56;;;44516:21:111;44573:2;44553:18;;;44546:30;44612:19;44592:18;;;44585:47;44649:18;;931:63:56;44332:341:111;931:63:56;1015:22;1078:15;;1106:1931;;;;3178:4;3172:11;3159:24;;3365:1;3354:9;3347:20;3413:4;3402:9;3398:20;3392:4;3385:34;1071:2362;;1106:1931;1288:4;1282:11;1269:24;;1947:2;1938:7;1934:16;2329:9;2322:17;2316:4;2312:28;2300:9;2289;2285:25;2281:60;2377:7;2373:2;2369:16;2629:6;2615:9;2608:17;2602:4;2598:28;2586:9;2578:6;2574:22;2570:57;2566:70;2403:389;2662:3;2658:2;2655:11;2403:389;;;2780:9;;2769:21;;2703:4;2695:13;;;;2735;2403:389;;;-1:-1:-1;;2810:26:56;;;3018:2;3001:11;-1:-1:-1;;2997:25:56;2991:4;2984:39;-1:-1:-1;1071:2362:56;-1:-1:-1;3460:9:56;660:2816;-1:-1:-1;;;;660:2816:56:o;1298:390:64:-;-1:-1:-1;;;;;;;;;;;;;;;;;1453:1:64;1440:3;:10;:14;1432:101;;;;-1:-1:-1;;;1432:101:64;;38384:2:111;1432:101:64;;;38366:21:111;38423:2;38403:18;;;38396:30;38462:34;38442:18;;;38435:62;38533:34;38513:18;;;38506:62;38605:12;38584:19;;;38577:41;38635:19;;1432:101:64;38182:478:111;1432:101:64;-1:-1:-1;1640:41:64;;;;;;;;;1658:10;;1640:41;;1610:2;1601:12;;;1640:41;;;;;;;;1298:390::o;1840:1740::-;1901:21;1935:18;1955;1975:20;1999:18;2013:3;1999:13;:18::i;:::-;1934:83;;-1:-1:-1;1934:83:64;-1:-1:-1;1934:83:64;-1:-1:-1;2048:21:64;2036:8;:33;;;;;;;;:::i;:::-;;2028:102;;;;-1:-1:-1;;;2028:102:64;;44880:2:111;2028:102:64;;;44862:21:111;44919:2;44899:18;;;44892:30;44958:34;44938:18;;;44931:62;45029:26;45009:18;;;45002:54;45073:19;;2028:102:64;44678:420:111;2028:102:64;2176:10;;2149:23;2162:10;2149;:23;:::i;:::-;:37;2141:100;;;;-1:-1:-1;;;2141:100:64;;45305:2:111;2141:100:64;;;45287:21:111;45344:2;45324:18;;;45317:30;45383:34;45363:18;;;45356:62;45454:20;45434:18;;;45427:48;45492:19;;2141:100:64;45103:414:111;2141:100:64;2651:30;;;1123:2;2651:30;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2651:30:64;;;;;;;;;;;;;;-1:-1:-1;2644:37:64;-1:-1:-1;2692:17:64;2740:10;2760:681;2776:10;;2767:19;;2760:681;;;2803:18;2823;2846:150;2877:105;;;;;;;;2908:6;2895:3;:10;;;:19;;;;:::i;:::-;2877:105;;;;2972:6;2961:3;:7;;;2940:38;;;;:::i;:::-;2877:105;;2846:13;:150::i;:::-;2802:194;;;;;3201:153;;;;;;;;3248:10;3235;:23;;;;:::i;:::-;3201:153;;;;3332:6;3321:3;:7;;;3300:38;;;;:::i;:::-;3201:153;;;3183:4;3188:9;3183:15;;;;;;;;:::i;:::-;;;;;;;;;;:171;3369:14;3382:1;3369:14;;:::i;:::-;;-1:-1:-1;3407:23:64;3420:10;3407;:23;:::i;:::-;3397:33;;;;:::i;:::-;;;2788:653;;2760:681;;;-1:-1:-1;3541:23:64;;-1:-1:-1;3548:4:64;;1840:1740;-1:-1:-1;;;1840:1740:64:o;269:397:111:-;362:8;372:6;426:3;419:4;411:6;407:17;403:27;393:55;;444:1;441;434:12;393:55;-1:-1:-1;467:20:111;;510:18;499:30;;496:50;;;542:1;539;532:12;496:50;579:4;571:6;567:17;555:29;;639:3;632:4;622:6;619:1;615:14;607:6;603:27;599:38;596:47;593:67;;;656:1;653;646:12;593:67;269:397;;;;;:::o;671:509::-;799:6;807;860:2;848:9;839:7;835:23;831:32;828:52;;;876:1;873;866:12;828:52;916:9;903:23;949:18;941:6;938:30;935:50;;;981:1;978;971:12;935:50;1020:100;1112:7;1103:6;1092:9;1088:22;1020:100;:::i;:::-;1139:8;;994:126;;-1:-1:-1;671:509:111;-1:-1:-1;;;;671:509:111:o;1669:184::-;1721:77;1718:1;1711:88;1818:4;1815:1;1808:15;1842:4;1839:1;1832:15;1858:334;1929:2;1923:9;1985:2;1975:13;;-1:-1:-1;;1971:86:111;1959:99;;2088:18;2073:34;;2109:22;;;2070:62;2067:88;;;2135:18;;:::i;:::-;2171:2;2164:22;1858:334;;-1:-1:-1;1858:334:111:o;2197:196::-;2265:20;;2325:42;2314:54;;2304:65;;2294:93;;2383:1;2380;2373:12;2294:93;2197:196;;;:::o;2398:589::-;2440:5;2493:3;2486:4;2478:6;2474:17;2470:27;2460:55;;2511:1;2508;2501:12;2460:55;2547:6;2534:20;2573:18;2569:2;2566:26;2563:52;;;2595:18;;:::i;:::-;2639:114;2747:4;-1:-1:-1;;2671:4:111;2667:2;2663:13;2659:86;2655:97;2639:114;:::i;:::-;2778:2;2769:7;2762:19;2824:3;2817:4;2812:2;2804:6;2800:15;2796:26;2793:35;2790:55;;;2841:1;2838;2831:12;2790:55;2906:2;2899:4;2891:6;2887:17;2880:4;2871:7;2867:18;2854:55;2954:1;2929:16;;;2947:4;2925:27;2918:38;;;;2933:7;2398:589;-1:-1:-1;;;2398:589:111:o;2992:898::-;3060:5;3108:4;3096:9;3091:3;3087:19;3083:30;3080:50;;;3126:1;3123;3116:12;3080:50;3159:2;3153:9;3201:4;3193:6;3189:17;3225:18;3293:6;3281:10;3278:22;3273:2;3261:10;3258:18;3255:46;3252:72;;;3304:18;;:::i;:::-;3344:10;3340:2;3333:22;3373:6;3364:15;;3416:9;3403:23;3395:6;3388:39;3460:38;3494:2;3483:9;3479:18;3460:38;:::i;:::-;3455:2;3447:6;3443:15;3436:63;3532:38;3566:2;3555:9;3551:18;3532:38;:::i;:::-;3527:2;3519:6;3515:15;3508:63;3632:2;3621:9;3617:18;3604:32;3599:2;3591:6;3587:15;3580:57;3699:3;3688:9;3684:19;3671:33;3665:3;3657:6;3653:16;3646:59;3756:3;3745:9;3741:19;3728:33;3714:47;;3784:2;3776:6;3773:14;3770:34;;;3800:1;3797;3790:12;3770:34;;3838:45;3879:3;3870:6;3859:9;3855:22;3838:45;:::i;:::-;3832:3;3824:6;3820:16;3813:71;;;2992:898;;;;:::o;3895:1046::-;4095:6;4103;4111;4119;4127;4171:9;4162:7;4158:23;4201:3;4197:2;4193:12;4190:32;;;4218:1;4215;4208:12;4190:32;4258:9;4245:23;4287:18;4328:2;4320:6;4317:14;4314:34;;;4344:1;4341;4334:12;4314:34;4367:72;4431:7;4422:6;4411:9;4407:22;4367:72;:::i;:::-;4357:82;;4486:2;4475:9;4471:18;4458:32;4448:42;;4583:3;4514:66;4510:2;4506:75;4502:85;4499:105;;;4600:1;4597;4590:12;4499:105;4638:2;4627:9;4623:18;4613:28;;4694:3;4683:9;4679:19;4666:33;4650:49;;4724:2;4714:8;4711:16;4708:36;;;4740:1;4737;4730:12;4708:36;;;4779:102;4873:7;4862:8;4851:9;4847:24;4779:102;:::i;:::-;3895:1046;;;;-1:-1:-1;3895:1046:111;;-1:-1:-1;4900:8:111;;4753:128;3895:1046;-1:-1:-1;;;3895:1046:111:o;4946:258::-;5018:1;5028:113;5042:6;5039:1;5036:13;5028:113;;;5118:11;;;5112:18;5099:11;;;5092:39;5064:2;5057:10;5028:113;;;5159:6;5156:1;5153:13;5150:48;;;-1:-1:-1;;5194:1:111;5176:16;;5169:27;4946:258::o;5209:317::-;5251:3;5289:5;5283:12;5316:6;5311:3;5304:19;5332:63;5388:6;5381:4;5376:3;5372:14;5365:4;5358:5;5354:16;5332:63;:::i;:::-;5440:2;5428:15;-1:-1:-1;;5424:88:111;5415:98;;;;5515:4;5411:109;;5209:317;-1:-1:-1;;5209:317:111:o;5531:220::-;5680:2;5669:9;5662:21;5643:4;5700:45;5741:2;5730:9;5726:18;5718:6;5700:45;:::i;5948:186::-;6007:6;6060:2;6048:9;6039:7;6035:23;6031:32;6028:52;;;6076:1;6073;6066:12;6028:52;6099:29;6118:9;6099:29;:::i;6139:180::-;6198:6;6251:2;6239:9;6230:7;6226:23;6222:32;6219:52;;;6267:1;6264;6257:12;6219:52;-1:-1:-1;6290:23:111;;6139:180;-1:-1:-1;6139:180:111:o;6324:374::-;6423:6;6476:2;6464:9;6455:7;6451:23;6447:32;6444:52;;;6492:1;6489;6482:12;6444:52;6532:9;6519:23;6565:18;6557:6;6554:30;6551:50;;;6597:1;6594;6587:12;6551:50;6620:72;6684:7;6675:6;6664:9;6660:22;6620:72;:::i;:::-;6610:82;6324:374;-1:-1:-1;;;;6324:374:111:o;6888:171::-;6955:20;;7015:18;7004:30;;6994:41;;6984:69;;7049:1;7046;7039:12;7064:184;7122:6;7175:2;7163:9;7154:7;7150:23;7146:32;7143:52;;;7191:1;7188;7181:12;7143:52;7214:28;7232:9;7214:28;:::i;7874:160::-;7939:20;;7995:13;;7988:21;7978:32;;7968:60;;8024:1;8021;8014:12;8039:180;8095:6;8148:2;8136:9;8127:7;8123:23;8119:32;8116:52;;;8164:1;8161;8154:12;8116:52;8187:26;8203:9;8187:26;:::i;8619:604::-;8719:6;8727;8735;8743;8751;8804:3;8792:9;8783:7;8779:23;8775:33;8772:53;;;8821:1;8818;8811:12;8772:53;8844:29;8863:9;8844:29;:::i;:::-;8834:39;;8920:2;8909:9;8905:18;8892:32;8882:42;;8943:37;8976:2;8965:9;8961:18;8943:37;:::i;:::-;8933:47;;8999:35;9030:2;9019:9;9015:18;8999:35;:::i;:::-;8989:45;;9085:3;9074:9;9070:19;9057:33;9113:18;9105:6;9102:30;9099:50;;;9145:1;9142;9135:12;9099:50;9168:49;9209:7;9200:6;9189:9;9185:22;9168:49;:::i;:::-;9158:59;;;8619:604;;;;;;;;:::o;10424:642::-;10687:6;10682:3;10675:19;10724:6;10719:2;10714:3;10710:12;10703:28;10783:66;10774:6;10769:3;10765:16;10761:89;10756:2;10751:3;10747:12;10740:111;10904:6;10897:14;10890:22;10885:3;10881:32;10876:2;10871:3;10867:12;10860:54;10657:3;10943:6;10937:13;10959:60;11012:6;11007:2;11002:3;10998:12;10993:2;10985:6;10981:15;10959:60;:::i;:::-;11039:16;;;;11057:2;11035:25;;10424:642;-1:-1:-1;;;;;;10424:642:111:o;11294:184::-;11346:77;11343:1;11336:88;11443:4;11440:1;11433:15;11467:4;11464:1;11457:15;11483:398;11591:4;11649:11;11636:25;11739:66;11728:8;11712:14;11708:29;11704:102;11684:18;11680:127;11670:155;;11821:1;11818;11811:12;11670:155;11842:33;;;;;11483:398;-1:-1:-1;;11483:398:111:o;11886:237::-;12018:9;12055:62;12102:14;12095:5;12055:62;:::i;12128:184::-;12180:77;12177:1;12170:88;12277:4;12274:1;12267:15;12301:4;12298:1;12291:15;12317:195;12356:3;12387:66;12380:5;12377:77;12374:103;;12457:18;;:::i;:::-;-1:-1:-1;12504:1:111;12493:13;;12317:195::o;13892:192::-;13971:13;;14024:34;14013:46;;14003:57;;13993:85;;14074:1;14071;14064:12;14089:616;14192:6;14245:2;14233:9;14224:7;14220:23;14216:32;14213:52;;;14261:1;14258;14251:12;14213:52;14294:2;14288:9;14336:2;14328:6;14324:15;14405:6;14393:10;14390:22;14369:18;14357:10;14354:34;14351:62;14348:88;;;14416:18;;:::i;:::-;14452:2;14445:22;14491:16;;14476:32;;14541:49;14586:2;14571:18;;14541:49;:::i;:::-;14536:2;14528:6;14524:15;14517:74;14624:49;14669:2;14658:9;14654:18;14624:49;:::i;:::-;14619:2;14607:15;;14600:74;14611:6;14089:616;-1:-1:-1;;;14089:616:111:o;14710:647::-;14803:6;14856:3;14844:9;14835:7;14831:23;14827:33;14824:53;;;14873:1;14870;14863:12;14824:53;14906:2;14900:9;14948:3;14940:6;14936:16;15018:6;15006:10;15003:22;14982:18;14970:10;14967:34;14964:62;14961:88;;;15029:18;;:::i;:::-;15069:10;15065:2;15058:22;;15117:9;15104:23;15096:6;15089:39;15189:2;15178:9;15174:18;15161:32;15156:2;15148:6;15144:15;15137:57;15255:2;15244:9;15240:18;15227:32;15222:2;15214:6;15210:15;15203:57;15321:2;15310:9;15306:18;15293:32;15288:2;15280:6;15276:15;15269:57;15345:6;15335:16;;;14710:647;;;;:::o;16854:934::-;16990:9;17024:18;17065:2;17057:6;17054:14;17051:40;;;17071:18;;:::i;:::-;17117:6;17114:1;17110:14;17143:4;17167:28;17191:2;17187;17183:11;17167:28;:::i;:::-;17229:19;;;17299:14;;;;17264:12;;;;17336:14;17325:26;;17322:46;;;17364:1;17361;17354:12;17322:46;17388:5;17402:353;17418:6;17413:3;17410:15;17402:353;;;17504:3;17491:17;17540:2;17527:11;17524:19;17521:109;;;17584:1;17613:2;17609;17602:14;17521:109;17655:57;17697:14;17683:11;17676:5;17672:23;17655:57;:::i;:::-;17643:70;;-1:-1:-1;17733:12:111;;;;17435;;17402:353;;;-1:-1:-1;17777:5:111;16854:934;-1:-1:-1;;;;;;;16854:934:111:o;20249:184::-;20319:6;20372:2;20360:9;20351:7;20347:23;20343:32;20340:52;;;20388:1;20385;20378:12;20340:52;-1:-1:-1;20411:16:111;;20249:184;-1:-1:-1;20249:184:111:o;23182:270::-;23221:7;23253:18;23298:2;23295:1;23291:10;23328:2;23325:1;23321:10;23384:3;23380:2;23376:12;23371:3;23368:21;23361:3;23354:11;23347:19;23343:47;23340:73;;;23393:18;;:::i;:::-;23433:13;;23182:270;-1:-1:-1;;;;23182:270:111:o;23457:236::-;23496:3;23524:18;23569:2;23566:1;23562:10;23599:2;23596:1;23592:10;23630:3;23626:2;23622:12;23617:3;23614:21;23611:47;;;23638:18;;:::i;:::-;23674:13;;23457:236;-1:-1:-1;;;;23457:236:111:o;24312:125::-;24352:4;24380:1;24377;24374:8;24371:34;;;24385:18;;:::i;:::-;-1:-1:-1;24422:9:111;;24312:125::o;24442:184::-;24494:77;24491:1;24484:88;24591:4;24588:1;24581:15;24615:4;24612:1;24605:15;24631:308;24670:1;24696;24686:35;;24701:18;;:::i;:::-;24818:66;24815:1;24812:73;24743:66;24740:1;24737:73;24733:153;24730:179;;;24889:18;;:::i;:::-;-1:-1:-1;24923:10:111;;24631:308::o;24944:369::-;24983:4;25019:1;25016;25012:9;25128:1;25060:66;25056:74;25053:1;25049:82;25044:2;25037:10;25033:99;25030:125;;;25135:18;;:::i;:::-;25254:1;25186:66;25182:74;25179:1;25175:82;25171:2;25167:91;25164:117;;;25261:18;;:::i;:::-;-1:-1:-1;;25298:9:111;;24944:369::o;25318:655::-;25357:7;25389:66;25481:1;25478;25474:9;25509:1;25506;25502:9;25554:1;25550:2;25546:10;25543:1;25540:17;25535:2;25531;25527:11;25523:35;25520:61;;;25561:18;;:::i;:::-;25600:66;25692:1;25689;25685:9;25739:1;25735:2;25730:11;25727:1;25723:19;25718:2;25714;25710:11;25706:37;25703:63;;;25746:18;;:::i;:::-;25792:1;25789;25785:9;25775:19;;25839:1;25835:2;25830:11;25827:1;25823:19;25818:2;25814;25810:11;25806:37;25803:63;;;25846:18;;:::i;:::-;25911:1;25907:2;25902:11;25899:1;25895:19;25890:2;25886;25882:11;25878:37;25875:63;;;25918:18;;:::i;:::-;-1:-1:-1;;;25958:9:111;;;;;25318:655;-1:-1:-1;;;25318:655:111:o;25978:367::-;26017:3;26052:1;26049;26045:9;26161:1;26093:66;26089:74;26086:1;26082:82;26077:2;26070:10;26066:99;26063:125;;;26168:18;;:::i;:::-;26287:1;26219:66;26215:74;26212:1;26208:82;26204:2;26200:91;26197:117;;;26294:18;;:::i;:::-;-1:-1:-1;;26330:9:111;;25978:367::o;26781:228::-;26821:7;26947:1;26879:66;26875:74;26872:1;26869:81;26864:1;26857:9;26850:17;26846:105;26843:131;;;26954:18;;:::i;:::-;-1:-1:-1;26994:9:111;;26781:228::o;27014:120::-;27054:1;27080;27070:35;;27085:18;;:::i;:::-;-1:-1:-1;27119:9:111;;27014:120::o;27535:656::-;27822:6;27811:9;27804:25;27785:4;27848:42;27938:2;27930:6;27926:15;27921:2;27910:9;27906:18;27899:43;27990:2;27982:6;27978:15;27973:2;27962:9;27958:18;27951:43;;28030:6;28025:2;28014:9;28010:18;28003:34;28074:6;28068:3;28057:9;28053:19;28046:35;28118:3;28112;28101:9;28097:19;28090:32;28139:46;28180:3;28169:9;28165:19;28157:6;28139:46;:::i;:::-;28131:54;27535:656;-1:-1:-1;;;;;;;;27535:656:111:o;28196:208::-;28266:6;28319:2;28307:9;28298:7;28294:23;28290:32;28287:52;;;28335:1;28332;28325:12;28287:52;28358:40;28388:9;28358:40;:::i;28821:167::-;28899:13;;28952:10;28941:22;;28931:33;;28921:61;;28978:1;28975;28968:12;28993:160;29070:13;;29123:4;29112:16;;29102:27;;29092:55;;29143:1;29140;29133:12;29158:888;29261:6;29314:3;29302:9;29293:7;29289:23;29285:33;29282:53;;;29331:1;29328;29321:12;29282:53;29364:2;29358:9;29406:3;29398:6;29394:16;29476:6;29464:10;29461:22;29440:18;29428:10;29425:34;29422:62;29419:88;;;29487:18;;:::i;:::-;29523:2;29516:22;29562:39;29591:9;29562:39;:::i;:::-;29554:6;29547:55;29635:47;29678:2;29667:9;29663:18;29635:47;:::i;:::-;29630:2;29622:6;29618:15;29611:72;29716:47;29759:2;29748:9;29744:18;29716:47;:::i;:::-;29711:2;29703:6;29699:15;29692:72;29797:48;29841:2;29830:9;29826:18;29797:48;:::i;:::-;29792:2;29784:6;29780:15;29773:73;29880:49;29924:3;29913:9;29909:19;29880:49;:::i;:::-;29874:3;29866:6;29862:16;29855:75;29964:50;30009:3;29998:9;29994:19;29964:50;:::i;:::-;29958:3;29946:16;;29939:76;29950:6;29158:888;-1:-1:-1;;;29158:888:111:o;30238:128::-;30278:3;30309:1;30305:6;30302:1;30299:13;30296:39;;;30315:18;;:::i;:::-;-1:-1:-1;30351:9:111;;30238:128::o;33164:157::-;33194:1;33228:4;33225:1;33221:12;33252:3;33242:37;;33259:18;;:::i;:::-;33311:3;33304:4;33301:1;33297:12;33293:22;33288:27;;;33164:157;;;;:::o;33326:195::-;33364:4;33401;33398:1;33394:12;33433:4;33430:1;33426:12;33458:3;33453;33450:12;33447:38;;;33465:18;;:::i;:::-;33502:13;;;33326:195;-1:-1:-1;;;33326:195:111:o;37146:184::-;37198:77;37195:1;37188:88;37295:4;37292:1;37285:15;37319:4;37316:1;37309:15","linkReferences":{},"immutableReferences":{"47233":[{"start":460,"length":32},{"start":1080,"length":32},{"start":2906,"length":32},{"start":3361,"length":32},{"start":4520,"length":32},{"start":5370,"length":32},{"start":5944,"length":32},{"start":8524,"length":32},{"start":9493,"length":32}],"47237":[{"start":583,"length":32},{"start":1636,"length":32},{"start":9060,"length":32}],"47240":[{"start":655,"length":32},{"start":978,"length":32},{"start":2367,"length":32},{"start":4080,"length":32},{"start":4684,"length":32}]}},"methodIdentifiers":{"GUARDIAN()":"724c184c","L2_ORACLE()":"001c2ff6","SYSTEM_CONFIG()":"f0498750","depositTransaction(address,uint256,uint64,bool,bytes)":"e9e05c42","donateETH()":"8b4c40b0","finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":"8c3152e9","finalizeWithdrawalTransactions((uint256,address,address,uint256,uint256,bytes)[])":"057bbee1","finalizedWithdrawals(bytes32)":"a14238e7","guardian()":"452a9320","initialize(bool)":"d53a822f","isOutputFinalized(uint256)":"6dbffb78","l2Oracle()":"9b5f694a","l2Sender()":"9bf62d82","messageRelayer()":"4f3b457e","minimumGasLimit(uint64)":"a35d99df","params()":"cff0ab96","pause()":"8456cb59","paused()":"5c975abb","proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":"4870496f","provenWithdrawals(bytes32)":"e965084c","setMessageRelayer(address)":"6cfd26e9","systemConfig()":"33d7e2bd","unpause()":"3f4ba83a","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"},{\"internalType\":\"contract SystemConfig\",\"name\":\"_systemConfig\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"MessageRelayerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"opaqueData\",\"type\":\"bytes\"}],\"name\":\"TransactionDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"WithdrawalFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"WithdrawalProven\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GUARDIAN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONFIG\",\"outputs\":[{\"internalType\":\"contract SystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isCreation\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"depositTransaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"donateETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"}],\"name\":\"finalizeWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.WithdrawalTransaction[]\",\"name\":\"_txs\",\"type\":\"tuple[]\"}],\"name\":\"finalizeWithdrawalTransactions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"finalizedWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"isOutputFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Oracle\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageRelayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_byteCount\",\"type\":\"uint64\"}],\"name\":\"minimumGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"params\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"prevBaseFee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"prevBoughtGas\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNum\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"latestBlockhash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.OutputRootProof\",\"name\":\"_outputRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"_withdrawalProof\",\"type\":\"bytes[]\"}],\"name\":\"proveWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"provenWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2OutputIndex\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRelayer\",\"type\":\"address\"}],\"name\":\"setMessageRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"systemConfig\",\"outputs\":[{\"internalType\":\"contract SystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:proxied\":\"@title OasysPortal\",\"events\":{\"MessageRelayerSet(address)\":{\"params\":{\"relayer\":\"The address of the new message relayer.\"}}},\"kind\":\"dev\",\"methods\":{\"depositTransaction(address,uint256,uint64,bool,bytes)\":{\"params\":{\"_data\":\"Data to trigger the recipient with.\",\"_gasLimit\":\"Amount of L2 gas to purchase by burning gas on L1.\",\"_isCreation\":\"Whether or not the transaction is a contract creation.\",\"_to\":\"Target address on L2.\",\"_value\":\"ETH value to send to the recipient.\"}},\"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"_tx\":\"Withdrawal transaction to finalize.\"}},\"isOutputFinalized(uint256)\":{\"params\":{\"_l2OutputIndex\":\"Index of the L2 output to check.\"},\"returns\":{\"_0\":\"Whether or not the output is finalized.\"}},\"minimumGasLimit(uint64)\":{\"params\":{\"_byteCount\":\"Number of bytes in the calldata.\"},\"returns\":{\"_0\":\"The minimum gas limit for a deposit.\"}},\"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])\":{\"params\":{\"_l2OutputIndex\":\"L2 output index to prove against.\",\"_outputRootProof\":\"Inclusion proof of the L2ToL1MessagePasser contract's storage root.\",\"_tx\":\"Withdrawal transaction to finalize.\",\"_withdrawalProof\":\"Inclusion proof of the withdrawal in L2ToL1MessagePasser contract.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"MessageRelayerSet(address)\":{\"notice\":\"Emitted when a new message relayer is set.\"},\"Paused(address)\":{\"notice\":\"Emitted when the pause is triggered.\"},\"TransactionDeposited(address,address,uint256,bytes)\":{\"notice\":\"Emitted when a transaction is deposited from L1 to L2. The parameters of this event are read by the rollup node and used to derive deposit transactions on L2.\"},\"Unpaused(address)\":{\"notice\":\"Emitted when the pause is lifted.\"},\"WithdrawalFinalized(bytes32,bool)\":{\"notice\":\"Emitted when a withdrawal transaction is finalized.\"},\"WithdrawalProven(bytes32,address,address)\":{\"notice\":\"Emitted when a withdrawal transaction is proven.\"}},\"kind\":\"user\",\"methods\":{\"GUARDIAN()\":{\"notice\":\"Address that has the ability to pause and unpause withdrawals. This will be removed in the future, use `guardian` instead.\"},\"L2_ORACLE()\":{\"notice\":\"Address of the L2OutputOracle contract. This will be removed in the future, use `l2Oracle` instead.\"},\"SYSTEM_CONFIG()\":{\"notice\":\"Address of the SystemConfig contract. This will be removed in the future, use `systemConfig` instead.\"},\"depositTransaction(address,uint256,uint64,bool,bytes)\":{\"notice\":\"Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in deriving deposit transactions. Note that if a deposit is made by a contract, its address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider using the CrossDomainMessenger contracts for a simpler developer experience.\"},\"donateETH()\":{\"notice\":\"Accepts ETH value without triggering a deposit to L2. This function mainly exists for the sake of the migration between the legacy Optimism system and Bedrock.\"},\"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"Finalizes a withdrawal transaction.\"},\"finalizeWithdrawalTransactions((uint256,address,address,uint256,uint256,bytes)[])\":{\"notice\":\"Batch finalizes withdrawal transactions. This method is necessary because it is not possible to check whether msg.sender is a message relayer via the Multicall contract.\"},\"finalizedWithdrawals(bytes32)\":{\"notice\":\"A list of withdrawal hashes which have been successfully finalized.\"},\"guardian()\":{\"notice\":\"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain.\"},\"initialize(bool)\":{\"notice\":\"Initializer.\"},\"isOutputFinalized(uint256)\":{\"notice\":\"Determine if a given output is finalized. Reverts if the call to L2_ORACLE.getL2Output reverts. Returns a boolean otherwise.\"},\"l2Oracle()\":{\"notice\":\"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain.\"},\"l2Sender()\":{\"notice\":\"Address of the L2 account which initiated a withdrawal in this transaction. If the of this variable is the default L2 sender address, then we are NOT inside of a call to finalizeWithdrawalTransaction.\"},\"messageRelayer()\":{\"notice\":\"Message relayer to allowed immediate withdraw.\"},\"minimumGasLimit(uint64)\":{\"notice\":\"Computes the minimum gas limit for a deposit. The minimum gas limit linearly increases based on the size of the calldata. This is to prevent users from creating L2 resource usage without paying for it. This function can be used when interacting with the portal to ensure forwards compatibility.\"},\"params()\":{\"notice\":\"EIP-1559 style gas parameters.\"},\"pause()\":{\"notice\":\"Pauses withdrawals.\"},\"paused()\":{\"notice\":\"Determines if cross domain messaging is paused. When set to true, withdrawals are paused. This may be removed in the future.\"},\"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])\":{\"notice\":\"Proves a withdrawal transaction.\"},\"provenWithdrawals(bytes32)\":{\"notice\":\"A mapping of withdrawal hashes to `ProvenWithdrawal` data.\"},\"setMessageRelayer(address)\":{\"notice\":\"Set a new message relayer address. If the zero address is set, no immediate relay of withdrawal messages.\"},\"systemConfig()\":{\"notice\":\"Getter function for the address of the SystemConfig on this chain.Address of the SystemConfig on this chain.\"},\"unpause()\":{\"notice\":\"Unpauses withdrawals.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"The OasysPortal is a contract that extends OptimismPortal to enable fast messaging from L2 to L1.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/oasys/L1/messaging/OasysPortal.sol\":\"OasysPortal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@cwia/=lib/clones-with-immutable-args/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":clones-with-immutable-args/=lib/clones-with-immutable-args/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/L2OutputOracle.sol\":{\"keccak256\":\"0xa7e6b43deedf1d59dd1006b585e2c027d859fe2518412a6cd068f3e76f6063ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59998bc7c49ab9ea9a30f5ccf96fc593eb7b79905b1c844e9b4a50dbc0ad6e0c\",\"dweb:/ipfs/QmS4kaaR9Y8ctqgwpxQEnSoWW1HFruJkwGqpxepD86c5Sz\"]},\"src/L1/OptimismPortal.sol\":{\"keccak256\":\"0x56b14bb1f86d258dac18aa115035429bbdd046fa87d370f09a6360dd99b7c0cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2d8fe61d3174c1a69c73a991856a8d284b59df066870fae6230eb0699930065\",\"dweb:/ipfs/Qma85DqtywWX1ELvjsDpBUY5WnyYCpzxq7SuXqLAUY8Vip\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xa4d524f2a5e91a0b63a62603e712001c51c77e8371b93cbb576bcb7d074b7588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6d8141b6c6dc72d2e684c1ae388c005fd78c9ca7fc9c15dddebd227ca4fd730\",\"dweb:/ipfs/QmPfJrR4qssu769TDWJnxdTozqKtZUxiY8fs95bhfECTvG\"]},\"src/L1/SystemConfig.sol\":{\"keccak256\":\"0x5c6346060b3e8d3bf4289b20fd869a66fbad8f69dc0b095845f990066b6c4d2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161277a9935cc567d76096a9a3ffc54632fda2020e02b4c5dc5541bfad3d166f\",\"dweb:/ipfs/QmXiDP2A4MPsN9VDNf9YbqbQQTU2J5tffWbJHg45f9LJyN\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x06a5a8b00527843f0cfc1bb3c0661316966a6cc432f88be31f23cde78cd07560\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5209e78e5415c0bf8b350362a825cc56152811abd6fcf2df3d4fa47766d3dee\",\"dweb:/ipfs/Qmf43xyc4Um32NmccayDfhm8kSnS2mhHXpPZnwABJS7cWm\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Bytes.sol\":{\"keccak256\":\"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782\",\"dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x8fcbc468fa4924f81538d4a6674031e12b62b61a88e869fdf099158a0d0c6a19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc7b9bca6c12fdd38e556650ec1eda3cccb0de4d474d2e97904cbd483b147359\",\"dweb:/ipfs/QmW4oKjDtHJj4cNfMhMLDteQEHSUuZtwrrFUJRnZCbQTJd\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0xd5bbcb7da113e69562498d9543765e03912558ad66348682c2049c31e19f9d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc6656ea10062c0c9d0817bb8683636caebf9222c9c102f29ea54fff74a2f93\",\"dweb:/ipfs/QmTNWtMgrTRHM6XtdUmA8bMZcuFpXoFCXgXR5vRihZWLuW\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x44e2b2dcfffc39c0fc95ccd3c2118c7e7585fadf3dca327877d5756c7d4b21c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c89e0d9cfcb08a0d3c46c85367a32bbd9703468ba4c0c5bb6e124c1d173b26b\",\"dweb:/ipfs/QmaY3nQHBBhHK1wrurVXiEeNL8hfZ1pRmhpqW44tFDJnDf\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/libraries/Storage.sol\":{\"keccak256\":\"0x902a0a815272a5b76c647d9e82101aca765e9835a6624d0857088b9da0f58afd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c39a697aacb0a2eac0bf1fbd7790d835a685c61006f6d3464e19cbc96a24480\",\"dweb:/ipfs/QmV3T8ZTRWPB5CNuZjxwWQNoENd7W4SoBMnFG6Y6g6xYV4\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/libraries/rlp/RLPReader.sol\":{\"keccak256\":\"0x9ba74a3b0a11693e622380807d213d5d1250d974e18b2cd768da9cbe719a6778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0808d721ed9e05707526ee134faa051d707a95ee6b8bd6e0b1972275da8e5723\",\"dweb:/ipfs/QmcTTPu9xgckfWdbFUAcr2RAgk3J6vzyR4FpV798TjFMeN\"]},\"src/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b\",\"dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV\"]},\"src/libraries/trie/MerkleTrie.sol\":{\"keccak256\":\"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74\",\"dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE\"]},\"src/libraries/trie/SecureMerkleTrie.sol\":{\"keccak256\":\"0xeaff8315cfd21197bc6bc859c2decf5d4f4838c9c357c502cdf2b1eac863d288\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79dcdcaa560aea51d138da4f5dc553a1808b6de090b2dc1629f18375edbff681\",\"dweb:/ipfs/QmbE4pUPhf5fLKW4W6cEjhQs55gEDvHmbmoBqkW1yz3bnw\"]},\"src/oasys/L1/interfaces/IOasysL2OutputOracle.sol\":{\"keccak256\":\"0x8b688f1c51237711ec9d0113d09add4570879582f10241ce8521e876f157d9d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96d870136c29175d5c804ee5c22219d0bf84138c7925b7d529c5901774acb4a0\",\"dweb:/ipfs/QmXNBpw4HWU4SMptCqKKXC2wdCsCr3bhRJBDaU8W7pz6fU\"]},\"src/oasys/L1/messaging/OasysPortal.sol\":{\"keccak256\":\"0xdf28b39e6c0e4e97b450094297831765f48fa39486b6d5457d7a178ea4fe717d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a32d79e916e299fab3e82ea4bc506ea2ce67d6993063157bfd94a78fff104a81\",\"dweb:/ipfs/QmTU7D7eJd9yRSELZ9JjSFFZ4PzJDct2yP1Js9PELKEUNM\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract L2OutputOracle","name":"_l2Oracle","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"bool","name":"_paused","type":"bool"},{"internalType":"contract SystemConfig","name":"_systemConfig","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"relayer","type":"address","indexed":true}],"type":"event","name":"MessageRelayerSet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"version","type":"uint256","indexed":true},{"internalType":"bytes","name":"opaqueData","type":"bytes","indexed":false}],"type":"event","name":"TransactionDeposited","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalHash","type":"bytes32","indexed":true},{"internalType":"bool","name":"success","type":"bool","indexed":false}],"type":"event","name":"WithdrawalFinalized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalHash","type":"bytes32","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"WithdrawalProven","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"GUARDIAN","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"L2_ORACLE","outputs":[{"internalType":"contract L2OutputOracle","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CONFIG","outputs":[{"internalType":"contract SystemConfig","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint64","name":"_gasLimit","type":"uint64"},{"internalType":"bool","name":"_isCreation","type":"bool"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"depositTransaction"},{"inputs":[],"stateMutability":"payable","type":"function","name":"donateETH"},{"inputs":[{"internalType":"struct Types.WithdrawalTransaction","name":"_tx","type":"tuple","components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdrawalTransaction"},{"inputs":[{"internalType":"struct Types.WithdrawalTransaction[]","name":"_txs","type":"tuple[]","components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdrawalTransactions"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"finalizedWithdrawals","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"_l2OutputIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"isOutputFinalized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2Oracle","outputs":[{"internalType":"contract L2OutputOracle","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2Sender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messageRelayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"_byteCount","type":"uint64"}],"stateMutability":"pure","type":"function","name":"minimumGasLimit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"params","outputs":[{"internalType":"uint128","name":"prevBaseFee","type":"uint128"},{"internalType":"uint64","name":"prevBoughtGas","type":"uint64"},{"internalType":"uint64","name":"prevBlockNum","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct Types.WithdrawalTransaction","name":"_tx","type":"tuple","components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"internalType":"uint256","name":"_l2OutputIndex","type":"uint256"},{"internalType":"struct Types.OutputRootProof","name":"_outputRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"bytes32","name":"messagePasserStorageRoot","type":"bytes32"},{"internalType":"bytes32","name":"latestBlockhash","type":"bytes32"}]},{"internalType":"bytes[]","name":"_withdrawalProof","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"proveWithdrawalTransaction"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"provenWithdrawals","outputs":[{"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"internalType":"uint128","name":"timestamp","type":"uint128"},{"internalType":"uint128","name":"l2OutputIndex","type":"uint128"}]},{"inputs":[{"internalType":"address","name":"newRelayer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMessageRelayer"},{"inputs":[],"stateMutability":"view","type":"function","name":"systemConfig","outputs":[{"internalType":"contract SystemConfig","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"depositTransaction(address,uint256,uint64,bool,bytes)":{"params":{"_data":"Data to trigger the recipient with.","_gasLimit":"Amount of L2 gas to purchase by burning gas on L1.","_isCreation":"Whether or not the transaction is a contract creation.","_to":"Target address on L2.","_value":"ETH value to send to the recipient."}},"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":{"params":{"_tx":"Withdrawal transaction to finalize."}},"isOutputFinalized(uint256)":{"params":{"_l2OutputIndex":"Index of the L2 output to check."},"returns":{"_0":"Whether or not the output is finalized."}},"minimumGasLimit(uint64)":{"params":{"_byteCount":"Number of bytes in the calldata."},"returns":{"_0":"The minimum gas limit for a deposit."}},"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":{"params":{"_l2OutputIndex":"L2 output index to prove against.","_outputRootProof":"Inclusion proof of the L2ToL1MessagePasser contract's storage root.","_tx":"Withdrawal transaction to finalize.","_withdrawalProof":"Inclusion proof of the withdrawal in L2ToL1MessagePasser contract."}}},"version":1},"userdoc":{"kind":"user","methods":{"GUARDIAN()":{"notice":"Address that has the ability to pause and unpause withdrawals. This will be removed in the future, use `guardian` instead."},"L2_ORACLE()":{"notice":"Address of the L2OutputOracle contract. This will be removed in the future, use `l2Oracle` instead."},"SYSTEM_CONFIG()":{"notice":"Address of the SystemConfig contract. This will be removed in the future, use `systemConfig` instead."},"depositTransaction(address,uint256,uint64,bool,bytes)":{"notice":"Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in deriving deposit transactions. Note that if a deposit is made by a contract, its address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider using the CrossDomainMessenger contracts for a simpler developer experience."},"donateETH()":{"notice":"Accepts ETH value without triggering a deposit to L2. This function mainly exists for the sake of the migration between the legacy Optimism system and Bedrock."},"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":{"notice":"Finalizes a withdrawal transaction."},"finalizeWithdrawalTransactions((uint256,address,address,uint256,uint256,bytes)[])":{"notice":"Batch finalizes withdrawal transactions. This method is necessary because it is not possible to check whether msg.sender is a message relayer via the Multicall contract."},"finalizedWithdrawals(bytes32)":{"notice":"A list of withdrawal hashes which have been successfully finalized."},"guardian()":{"notice":"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain."},"initialize(bool)":{"notice":"Initializer."},"isOutputFinalized(uint256)":{"notice":"Determine if a given output is finalized. Reverts if the call to L2_ORACLE.getL2Output reverts. Returns a boolean otherwise."},"l2Oracle()":{"notice":"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain."},"l2Sender()":{"notice":"Address of the L2 account which initiated a withdrawal in this transaction. If the of this variable is the default L2 sender address, then we are NOT inside of a call to finalizeWithdrawalTransaction."},"messageRelayer()":{"notice":"Message relayer to allowed immediate withdraw."},"minimumGasLimit(uint64)":{"notice":"Computes the minimum gas limit for a deposit. The minimum gas limit linearly increases based on the size of the calldata. This is to prevent users from creating L2 resource usage without paying for it. This function can be used when interacting with the portal to ensure forwards compatibility."},"params()":{"notice":"EIP-1559 style gas parameters."},"pause()":{"notice":"Pauses withdrawals."},"paused()":{"notice":"Determines if cross domain messaging is paused. When set to true, withdrawals are paused. This may be removed in the future."},"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":{"notice":"Proves a withdrawal transaction."},"provenWithdrawals(bytes32)":{"notice":"A mapping of withdrawal hashes to `ProvenWithdrawal` data."},"setMessageRelayer(address)":{"notice":"Set a new message relayer address. If the zero address is set, no immediate relay of withdrawal messages."},"systemConfig()":{"notice":"Getter function for the address of the SystemConfig on this chain.Address of the SystemConfig on this chain."},"unpause()":{"notice":"Unpauses withdrawals."},"version()":{"notice":"Semantic version."}},"version":1}},"settings":{"remappings":["@cwia/=lib/clones-with-immutable-args/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","clones-with-immutable-args/=lib/clones-with-immutable-args/src/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-contracts/=lib/safe-contracts/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":10000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/oasys/L1/messaging/OasysPortal.sol":"OasysPortal"},"libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0","urls":["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929","dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7","urls":["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689","dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d","urls":["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c","dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"],"license":"MIT"},"src/L1/L2OutputOracle.sol":{"keccak256":"0xa7e6b43deedf1d59dd1006b585e2c027d859fe2518412a6cd068f3e76f6063ca","urls":["bzz-raw://59998bc7c49ab9ea9a30f5ccf96fc593eb7b79905b1c844e9b4a50dbc0ad6e0c","dweb:/ipfs/QmS4kaaR9Y8ctqgwpxQEnSoWW1HFruJkwGqpxepD86c5Sz"],"license":"MIT"},"src/L1/OptimismPortal.sol":{"keccak256":"0x56b14bb1f86d258dac18aa115035429bbdd046fa87d370f09a6360dd99b7c0cc","urls":["bzz-raw://a2d8fe61d3174c1a69c73a991856a8d284b59df066870fae6230eb0699930065","dweb:/ipfs/Qma85DqtywWX1ELvjsDpBUY5WnyYCpzxq7SuXqLAUY8Vip"],"license":"MIT"},"src/L1/ResourceMetering.sol":{"keccak256":"0xa4d524f2a5e91a0b63a62603e712001c51c77e8371b93cbb576bcb7d074b7588","urls":["bzz-raw://d6d8141b6c6dc72d2e684c1ae388c005fd78c9ca7fc9c15dddebd227ca4fd730","dweb:/ipfs/QmPfJrR4qssu769TDWJnxdTozqKtZUxiY8fs95bhfECTvG"],"license":"MIT"},"src/L1/SystemConfig.sol":{"keccak256":"0x5c6346060b3e8d3bf4289b20fd869a66fbad8f69dc0b095845f990066b6c4d2b","urls":["bzz-raw://161277a9935cc567d76096a9a3ffc54632fda2020e02b4c5dc5541bfad3d166f","dweb:/ipfs/QmXiDP2A4MPsN9VDNf9YbqbQQTU2J5tffWbJHg45f9LJyN"],"license":"MIT"},"src/libraries/Arithmetic.sol":{"keccak256":"0x06a5a8b00527843f0cfc1bb3c0661316966a6cc432f88be31f23cde78cd07560","urls":["bzz-raw://d5209e78e5415c0bf8b350362a825cc56152811abd6fcf2df3d4fa47766d3dee","dweb:/ipfs/Qmf43xyc4Um32NmccayDfhm8kSnS2mhHXpPZnwABJS7cWm"],"license":"MIT"},"src/libraries/Burn.sol":{"keccak256":"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010","urls":["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f","dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"],"license":"MIT"},"src/libraries/Bytes.sol":{"keccak256":"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859","urls":["bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782","dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x8fcbc468fa4924f81538d4a6674031e12b62b61a88e869fdf099158a0d0c6a19","urls":["bzz-raw://fc7b9bca6c12fdd38e556650ec1eda3cccb0de4d474d2e97904cbd483b147359","dweb:/ipfs/QmW4oKjDtHJj4cNfMhMLDteQEHSUuZtwrrFUJRnZCbQTJd"],"license":"MIT"},"src/libraries/Encoding.sol":{"keccak256":"0xd5bbcb7da113e69562498d9543765e03912558ad66348682c2049c31e19f9d9b","urls":["bzz-raw://afc6656ea10062c0c9d0817bb8683636caebf9222c9c102f29ea54fff74a2f93","dweb:/ipfs/QmTNWtMgrTRHM6XtdUmA8bMZcuFpXoFCXgXR5vRihZWLuW"],"license":"MIT"},"src/libraries/Hashing.sol":{"keccak256":"0x44e2b2dcfffc39c0fc95ccd3c2118c7e7585fadf3dca327877d5756c7d4b21c3","urls":["bzz-raw://6c89e0d9cfcb08a0d3c46c85367a32bbd9703468ba4c0c5bb6e124c1d173b26b","dweb:/ipfs/QmaY3nQHBBhHK1wrurVXiEeNL8hfZ1pRmhpqW44tFDJnDf"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f","urls":["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a","dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"],"license":"MIT"},"src/libraries/Storage.sol":{"keccak256":"0x902a0a815272a5b76c647d9e82101aca765e9835a6624d0857088b9da0f58afd","urls":["bzz-raw://9c39a697aacb0a2eac0bf1fbd7790d835a685c61006f6d3464e19cbc96a24480","dweb:/ipfs/QmV3T8ZTRWPB5CNuZjxwWQNoENd7W4SoBMnFG6Y6g6xYV4"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4","urls":["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e","dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"],"license":"MIT"},"src/libraries/rlp/RLPReader.sol":{"keccak256":"0x9ba74a3b0a11693e622380807d213d5d1250d974e18b2cd768da9cbe719a6778","urls":["bzz-raw://0808d721ed9e05707526ee134faa051d707a95ee6b8bd6e0b1972275da8e5723","dweb:/ipfs/QmcTTPu9xgckfWdbFUAcr2RAgk3J6vzyR4FpV798TjFMeN"],"license":"MIT"},"src/libraries/rlp/RLPWriter.sol":{"keccak256":"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6","urls":["bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b","dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV"],"license":"MIT"},"src/libraries/trie/MerkleTrie.sol":{"keccak256":"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c","urls":["bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74","dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE"],"license":"MIT"},"src/libraries/trie/SecureMerkleTrie.sol":{"keccak256":"0xeaff8315cfd21197bc6bc859c2decf5d4f4838c9c357c502cdf2b1eac863d288","urls":["bzz-raw://79dcdcaa560aea51d138da4f5dc553a1808b6de090b2dc1629f18375edbff681","dweb:/ipfs/QmbE4pUPhf5fLKW4W6cEjhQs55gEDvHmbmoBqkW1yz3bnw"],"license":"MIT"},"src/oasys/L1/interfaces/IOasysL2OutputOracle.sol":{"keccak256":"0x8b688f1c51237711ec9d0113d09add4570879582f10241ce8521e876f157d9d9","urls":["bzz-raw://96d870136c29175d5c804ee5c22219d0bf84138c7925b7d529c5901774acb4a0","dweb:/ipfs/QmXNBpw4HWU4SMptCqKKXC2wdCsCr3bhRJBDaU8W7pz6fU"],"license":"MIT"},"src/oasys/L1/messaging/OasysPortal.sol":{"keccak256":"0xdf28b39e6c0e4e97b450094297831765f48fa39486b6d5457d7a178ea4fe717d","urls":["bzz-raw://a32d79e916e299fab3e82ea4bc506ea2ce67d6993063157bfd94a78fff104a81","dweb:/ipfs/QmTU7D7eJd9yRSELZ9JjSFFZ4PzJDct2yP1Js9PELKEUNM"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"},"src/vendor/AddressAliasHelper.sol":{"keccak256":"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237","urls":["bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88","dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR"],"license":"Apache-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":41200,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":41203,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":48183,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"params","offset":0,"slot":"1","type":"t_struct(ResourceParams)48166_storage"},{"astId":48188,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"__gap","offset":0,"slot":"2","type":"t_array(t_uint256)48_storage"},{"astId":47243,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"l2Sender","offset":0,"slot":"50","type":"t_address"},{"astId":47248,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"finalizedWithdrawals","offset":0,"slot":"51","type":"t_mapping(t_bytes32,t_bool)"},{"astId":47254,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"provenWithdrawals","offset":0,"slot":"52","type":"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)47221_storage)"},{"astId":47257,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"paused","offset":0,"slot":"53","type":"t_bool"},{"astId":47262,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"__gap","offset":0,"slot":"54","type":"t_array(t_uint256)46_storage"},{"astId":56267,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"messageRelayer","offset":0,"slot":"100","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)46_storage":{"encoding":"inplace","label":"uint256[46]","numberOfBytes":"1472","base":"t_uint256"},"t_array(t_uint256)48_storage":{"encoding":"inplace","label":"uint256[48]","numberOfBytes":"1536","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_bytes32,t_bool)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)47221_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal)","numberOfBytes":"32","value":"t_struct(ProvenWithdrawal)47221_storage"},"t_struct(ProvenWithdrawal)47221_storage":{"encoding":"inplace","label":"struct OptimismPortal.ProvenWithdrawal","numberOfBytes":"64","members":[{"astId":47216,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"outputRoot","offset":0,"slot":"0","type":"t_bytes32"},{"astId":47218,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"timestamp","offset":0,"slot":"1","type":"t_uint128"},{"astId":47220,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"l2OutputIndex","offset":16,"slot":"1","type":"t_uint128"}]},"t_struct(ResourceParams)48166_storage":{"encoding":"inplace","label":"struct ResourceMetering.ResourceParams","numberOfBytes":"32","members":[{"astId":48161,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"prevBaseFee","offset":0,"slot":"0","type":"t_uint128"},{"astId":48163,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"prevBoughtGas","offset":16,"slot":"0","type":"t_uint64"},{"astId":48165,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"prevBlockNum","offset":24,"slot":"0","type":"t_uint64"}]},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"GUARDIAN()":{"notice":"Address that has the ability to pause and unpause withdrawals. This will be removed in the future, use `guardian` instead."},"L2_ORACLE()":{"notice":"Address of the L2OutputOracle contract. This will be removed in the future, use `l2Oracle` instead."},"SYSTEM_CONFIG()":{"notice":"Address of the SystemConfig contract. This will be removed in the future, use `systemConfig` instead."},"depositTransaction(address,uint256,uint64,bool,bytes)":{"notice":"Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in deriving deposit transactions. Note that if a deposit is made by a contract, its address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider using the CrossDomainMessenger contracts for a simpler developer experience."},"donateETH()":{"notice":"Accepts ETH value without triggering a deposit to L2. This function mainly exists for the sake of the migration between the legacy Optimism system and Bedrock."},"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":{"notice":"Finalizes a withdrawal transaction."},"finalizeWithdrawalTransactions((uint256,address,address,uint256,uint256,bytes)[])":{"notice":"Batch finalizes withdrawal transactions. This method is necessary because it is not possible to check whether msg.sender is a message relayer via the Multicall contract."},"finalizedWithdrawals(bytes32)":{"notice":"A list of withdrawal hashes which have been successfully finalized."},"guardian()":{"notice":"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain."},"initialize(bool)":{"notice":"Initializer."},"isOutputFinalized(uint256)":{"notice":"Determine if a given output is finalized. Reverts if the call to L2_ORACLE.getL2Output reverts. Returns a boolean otherwise."},"l2Oracle()":{"notice":"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain."},"l2Sender()":{"notice":"Address of the L2 account which initiated a withdrawal in this transaction. If the of this variable is the default L2 sender address, then we are NOT inside of a call to finalizeWithdrawalTransaction."},"messageRelayer()":{"notice":"Message relayer to allowed immediate withdraw."},"minimumGasLimit(uint64)":{"notice":"Computes the minimum gas limit for a deposit. The minimum gas limit linearly increases based on the size of the calldata. This is to prevent users from creating L2 resource usage without paying for it. This function can be used when interacting with the portal to ensure forwards compatibility."},"params()":{"notice":"EIP-1559 style gas parameters."},"pause()":{"notice":"Pauses withdrawals."},"paused()":{"notice":"Determines if cross domain messaging is paused. When set to true, withdrawals are paused. This may be removed in the future."},"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":{"notice":"Proves a withdrawal transaction."},"provenWithdrawals(bytes32)":{"notice":"A mapping of withdrawal hashes to `ProvenWithdrawal` data."},"setMessageRelayer(address)":{"notice":"Set a new message relayer address. If the zero address is set, no immediate relay of withdrawal messages."},"systemConfig()":{"notice":"Getter function for the address of the SystemConfig on this chain.Address of the SystemConfig on this chain."},"unpause()":{"notice":"Unpauses withdrawals."},"version()":{"notice":"Semantic version."}},"events":{"MessageRelayerSet(address)":{"notice":"Emitted when a new message relayer is set."},"Paused(address)":{"notice":"Emitted when the pause is triggered."},"TransactionDeposited(address,address,uint256,bytes)":{"notice":"Emitted when a transaction is deposited from L1 to L2. The parameters of this event are read by the rollup node and used to derive deposit transactions on L2."},"Unpaused(address)":{"notice":"Emitted when the pause is lifted."},"WithdrawalFinalized(bytes32,bool)":{"notice":"Emitted when a withdrawal transaction is finalized."},"WithdrawalProven(bytes32,address,address)":{"notice":"Emitted when a withdrawal transaction is proven."}},"notice":"The OasysPortal is a contract that extends OptimismPortal to enable fast messaging from L2 to L1."},"devdoc":{"version":1,"kind":"dev","methods":{"depositTransaction(address,uint256,uint64,bool,bytes)":{"params":{"_data":"Data to trigger the recipient with.","_gasLimit":"Amount of L2 gas to purchase by burning gas on L1.","_isCreation":"Whether or not the transaction is a contract creation.","_to":"Target address on L2.","_value":"ETH value to send to the recipient."}},"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":{"params":{"_tx":"Withdrawal transaction to finalize."}},"isOutputFinalized(uint256)":{"params":{"_l2OutputIndex":"Index of the L2 output to check."},"returns":{"_0":"Whether or not the output is finalized."}},"minimumGasLimit(uint64)":{"params":{"_byteCount":"Number of bytes in the calldata."},"returns":{"_0":"The minimum gas limit for a deposit."}},"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":{"params":{"_l2OutputIndex":"L2 output index to prove against.","_outputRootProof":"Inclusion proof of the L2ToL1MessagePasser contract's storage root.","_tx":"Withdrawal transaction to finalize.","_withdrawalProof":"Inclusion proof of the withdrawal in L2ToL1MessagePasser contract."}}},"events":{"MessageRelayerSet(address)":{"params":{"relayer":"The address of the new message relayer."}}}},"ast":{"absolutePath":"src/oasys/L1/messaging/OasysPortal.sol","id":56416,"exportedSymbols":{"Constants":[49942],"Hashing":[50457],"IOasysL2OutputOracle":[56193],"L2OutputOracle":[47181],"OasysPortal":[56415],"OptimismPortal":[47895],"SafeCall":[50629],"SystemConfig":[48941],"Types":[50745]},"nodeType":"SourceUnit","src":"32:3188:98","nodes":[{"id":56245,"nodeType":"PragmaDirective","src":"32:23:98","nodes":[],"literals":["solidity","0.8",".15"]},{"id":56247,"nodeType":"ImportDirective","src":"57:48:98","nodes":[],"absolutePath":"src/libraries/Types.sol","file":"src/libraries/Types.sol","nameLocation":"-1:-1:-1","scope":56416,"sourceUnit":50746,"symbolAliases":[{"foreign":{"id":56246,"name":"Types","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50745,"src":"66:5:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56249,"nodeType":"ImportDirective","src":"106:56:98","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":56416,"sourceUnit":49943,"symbolAliases":[{"foreign":{"id":56248,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49942,"src":"115:9:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56251,"nodeType":"ImportDirective","src":"163:54:98","nodes":[],"absolutePath":"src/libraries/SafeCall.sol","file":"src/libraries/SafeCall.sol","nameLocation":"-1:-1:-1","scope":56416,"sourceUnit":50630,"symbolAliases":[{"foreign":{"id":56250,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50629,"src":"172:8:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56253,"nodeType":"ImportDirective","src":"218:52:98","nodes":[],"absolutePath":"src/libraries/Hashing.sol","file":"src/libraries/Hashing.sol","nameLocation":"-1:-1:-1","scope":56416,"sourceUnit":50458,"symbolAliases":[{"foreign":{"id":56252,"name":"Hashing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50457,"src":"227:7:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56255,"nodeType":"ImportDirective","src":"271:59:98","nodes":[],"absolutePath":"src/L1/OptimismPortal.sol","file":"src/L1/OptimismPortal.sol","nameLocation":"-1:-1:-1","scope":56416,"sourceUnit":47896,"symbolAliases":[{"foreign":{"id":56254,"name":"OptimismPortal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47895,"src":"280:14:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56257,"nodeType":"ImportDirective","src":"331:59:98","nodes":[],"absolutePath":"src/L1/L2OutputOracle.sol","file":"src/L1/L2OutputOracle.sol","nameLocation":"-1:-1:-1","scope":56416,"sourceUnit":47182,"symbolAliases":[{"foreign":{"id":56256,"name":"L2OutputOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47181,"src":"340:14:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56259,"nodeType":"ImportDirective","src":"391:55:98","nodes":[],"absolutePath":"src/L1/SystemConfig.sol","file":"src/L1/SystemConfig.sol","nameLocation":"-1:-1:-1","scope":56416,"sourceUnit":48942,"symbolAliases":[{"foreign":{"id":56258,"name":"SystemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48941,"src":"400:12:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56261,"nodeType":"ImportDirective","src":"447:88:98","nodes":[],"absolutePath":"src/oasys/L1/interfaces/IOasysL2OutputOracle.sol","file":"src/oasys/L1/interfaces/IOasysL2OutputOracle.sol","nameLocation":"-1:-1:-1","scope":56416,"sourceUnit":56194,"symbolAliases":[{"foreign":{"id":56260,"name":"IOasysL2OutputOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56193,"src":"456:20:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56415,"nodeType":"ContractDefinition","src":"702:2517:98","nodes":[{"id":56267,"nodeType":"VariableDeclaration","src":"810:29:98","nodes":[],"constant":false,"documentation":{"id":56265,"nodeType":"StructuredDocumentation","src":"747:58:98","text":"@notice Message relayer to allowed immediate withdraw."},"functionSelector":"4f3b457e","mutability":"mutable","name":"messageRelayer","nameLocation":"825:14:98","scope":56415,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56266,"name":"address","nodeType":"ElementaryTypeName","src":"810:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":56272,"nodeType":"EventDefinition","src":"968:49:98","nodes":[],"anonymous":false,"documentation":{"id":56268,"nodeType":"StructuredDocumentation","src":"846:117:98","text":"@notice Emitted when a new message relayer is set.\n @param relayer The address of the new message relayer."},"eventSelector":"fce056bb1203f3a49718c0c063cdde76b64ede7be48768dcf101ca2fc1358cfe","name":"MessageRelayerSet","nameLocation":"974:17:98","parameters":{"id":56271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56270,"indexed":true,"mutability":"mutable","name":"relayer","nameLocation":"1008:7:98","nodeType":"VariableDeclaration","scope":56272,"src":"992:23:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56269,"name":"address","nodeType":"ElementaryTypeName","src":"992:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"991:25:98"}},{"id":56292,"nodeType":"FunctionDefinition","src":"1023:213:98","nodes":[],"body":{"id":56291,"nodeType":"Block","src":"1233:3:98","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":56285,"name":"_l2Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56275,"src":"1183:9:98","typeDescriptions":{"typeIdentifier":"t_contract$_L2OutputOracle_$47181","typeString":"contract L2OutputOracle"}},{"id":56286,"name":"_guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56277,"src":"1194:9:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56287,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56279,"src":"1205:7:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":56288,"name":"_systemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56282,"src":"1214:13:98","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$48941","typeString":"contract SystemConfig"}}],"id":56289,"kind":"baseConstructorSpecifier","modifierName":{"id":56284,"name":"OptimismPortal","nodeType":"IdentifierPath","referencedDeclaration":47895,"src":"1168:14:98"},"nodeType":"ModifierInvocation","src":"1168:60:98"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":56283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56275,"mutability":"mutable","name":"_l2Oracle","nameLocation":"1059:9:98","nodeType":"VariableDeclaration","scope":56292,"src":"1044:24:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_L2OutputOracle_$47181","typeString":"contract L2OutputOracle"},"typeName":{"id":56274,"nodeType":"UserDefinedTypeName","pathNode":{"id":56273,"name":"L2OutputOracle","nodeType":"IdentifierPath","referencedDeclaration":47181,"src":"1044:14:98"},"referencedDeclaration":47181,"src":"1044:14:98","typeDescriptions":{"typeIdentifier":"t_contract$_L2OutputOracle_$47181","typeString":"contract L2OutputOracle"}},"visibility":"internal"},{"constant":false,"id":56277,"mutability":"mutable","name":"_guardian","nameLocation":"1086:9:98","nodeType":"VariableDeclaration","scope":56292,"src":"1078:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56276,"name":"address","nodeType":"ElementaryTypeName","src":"1078:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56279,"mutability":"mutable","name":"_paused","nameLocation":"1110:7:98","nodeType":"VariableDeclaration","scope":56292,"src":"1105:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":56278,"name":"bool","nodeType":"ElementaryTypeName","src":"1105:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":56282,"mutability":"mutable","name":"_systemConfig","nameLocation":"1140:13:98","nodeType":"VariableDeclaration","scope":56292,"src":"1127:26:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$48941","typeString":"contract SystemConfig"},"typeName":{"id":56281,"nodeType":"UserDefinedTypeName","pathNode":{"id":56280,"name":"SystemConfig","nodeType":"IdentifierPath","referencedDeclaration":48941,"src":"1127:12:98"},"referencedDeclaration":48941,"src":"1127:12:98","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$48941","typeString":"contract SystemConfig"}},"visibility":"internal"}],"src":"1034:125:98"},"returnParameters":{"id":56290,"nodeType":"ParameterList","parameters":[],"src":"1233:0:98"},"scope":56415,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56306,"nodeType":"FunctionDefinition","src":"1277:92:98","nodes":[],"body":{"id":56305,"nodeType":"Block","src":"1327:42:98","nodes":[],"statements":[{"expression":{"arguments":[{"id":56302,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56295,"src":"1354:7:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":56299,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1337:5:98","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OasysPortal_$56415_$","typeString":"type(contract super OasysPortal)"}},"id":56301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":47367,"src":"1337:16:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":56303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1337:25:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56304,"nodeType":"ExpressionStatement","src":"1337:25:98"}]},"baseFunctions":[47367],"documentation":{"id":56293,"nodeType":"StructuredDocumentation","src":"1242:30:98","text":"@inheritdoc OptimismPortal"},"functionSelector":"d53a822f","implemented":true,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1286:10:98","overrides":{"id":56297,"nodeType":"OverrideSpecifier","overrides":[],"src":"1318:8:98"},"parameters":{"id":56296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56295,"mutability":"mutable","name":"_paused","nameLocation":"1302:7:98","nodeType":"VariableDeclaration","scope":56306,"src":"1297:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":56294,"name":"bool","nodeType":"ElementaryTypeName","src":"1297:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1296:14:98"},"returnParameters":{"id":56298,"nodeType":"ParameterList","parameters":[],"src":"1327:0:98"},"scope":56415,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56336,"nodeType":"FunctionDefinition","src":"1513:321:98","nodes":[],"body":{"id":56335,"nodeType":"Block","src":"1569:265:98","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":56313,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1587:3:98","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1587:10:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":56315,"name":"GUARDIAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47240,"src":"1601:8:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1587:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f61737973506f7274616c3a206f6e6c7920677561726469616e2063616e207365742061206e6577206d6573736167652072656c61796572","id":56317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1611:58:98","typeDescriptions":{"typeIdentifier":"t_stringliteral_47d0f58a330148cd3f29fa7e6280b351cacbcf60bb7399f85c308872c52e4fd9","typeString":"literal_string \"OasysPortal: only guardian can set a new message relayer\""},"value":"OasysPortal: only guardian can set a new message relayer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47d0f58a330148cd3f29fa7e6280b351cacbcf60bb7399f85c308872c52e4fd9","typeString":"literal_string \"OasysPortal: only guardian can set a new message relayer\""}],"id":56312,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1579:7:98","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":56318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1579:91:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56319,"nodeType":"ExpressionStatement","src":"1579:91:98"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56321,"name":"newRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56309,"src":"1688:10:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":56322,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56267,"src":"1702:14:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1688:28:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f61737973506f7274616c3a20616c726561647920736574","id":56324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1718:26:98","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4df827f34b3afa3ff98ae71fa6b422f561aa4902571bb209610a818accbf951","typeString":"literal_string \"OasysPortal: already set\""},"value":"OasysPortal: already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c4df827f34b3afa3ff98ae71fa6b422f561aa4902571bb209610a818accbf951","typeString":"literal_string \"OasysPortal: already set\""}],"id":56320,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1680:7:98","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":56325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1680:65:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56326,"nodeType":"ExpressionStatement","src":"1680:65:98"},{"expression":{"id":56329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":56327,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56267,"src":"1756:14:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":56328,"name":"newRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56309,"src":"1773:10:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1756:27:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":56330,"nodeType":"ExpressionStatement","src":"1756:27:98"},{"eventCall":{"arguments":[{"id":56332,"name":"newRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56309,"src":"1816:10:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56331,"name":"MessageRelayerSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56272,"src":"1798:17:98","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":56333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1798:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56334,"nodeType":"EmitStatement","src":"1793:34:98"}]},"documentation":{"id":56307,"nodeType":"StructuredDocumentation","src":"1375:133:98","text":"@notice Set a new message relayer address.\n If the zero address is set, no immediate relay of withdrawal messages."},"functionSelector":"6cfd26e9","implemented":true,"kind":"function","modifiers":[],"name":"setMessageRelayer","nameLocation":"1522:17:98","parameters":{"id":56310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56309,"mutability":"mutable","name":"newRelayer","nameLocation":"1548:10:98","nodeType":"VariableDeclaration","scope":56336,"src":"1540:18:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56308,"name":"address","nodeType":"ElementaryTypeName","src":"1540:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1539:20:98"},"returnParameters":{"id":56311,"nodeType":"ParameterList","parameters":[],"src":"1569:0:98"},"scope":56415,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":56368,"nodeType":"FunctionDefinition","src":"2058:248:98","nodes":[],"body":{"id":56367,"nodeType":"Block","src":"2152:154:98","nodes":[],"statements":[{"assignments":[56345],"declarations":[{"constant":false,"id":56345,"mutability":"mutable","name":"length","nameLocation":"2170:6:98","nodeType":"VariableDeclaration","scope":56367,"src":"2162:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56344,"name":"uint256","nodeType":"ElementaryTypeName","src":"2162:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56348,"initialValue":{"expression":{"id":56346,"name":"_txs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56341,"src":"2179:4:98","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalTransaction_$50744_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Types.WithdrawalTransaction calldata[] calldata"}},"id":56347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2179:11:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2162:28:98"},{"body":{"id":56365,"nodeType":"Block","src":"2237:63:98","statements":[{"expression":{"arguments":[{"baseExpression":{"id":56360,"name":"_txs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56341,"src":"2281:4:98","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalTransaction_$50744_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Types.WithdrawalTransaction calldata[] calldata"}},"id":56362,"indexExpression":{"id":56361,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56350,"src":"2286:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2281:7:98","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawalTransaction_$50744_calldata_ptr","typeString":"struct Types.WithdrawalTransaction calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_WithdrawalTransaction_$50744_calldata_ptr","typeString":"struct Types.WithdrawalTransaction calldata"}],"id":56359,"name":"finalizeWithdrawalTransaction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47768,"src":"2251:29:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_WithdrawalTransaction_$50744_memory_ptr_$returns$__$","typeString":"function (struct Types.WithdrawalTransaction memory)"}},"id":56363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2251:38:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56364,"nodeType":"ExpressionStatement","src":"2251:38:98"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56353,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56350,"src":"2220:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":56354,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56345,"src":"2224:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2220:10:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56366,"initializationExpression":{"assignments":[56350],"declarations":[{"constant":false,"id":56350,"mutability":"mutable","name":"i","nameLocation":"2213:1:98","nodeType":"VariableDeclaration","scope":56366,"src":"2205:9:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56349,"name":"uint256","nodeType":"ElementaryTypeName","src":"2205:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56352,"initialValue":{"hexValue":"30","id":56351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2217:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2205:13:98"},"loopExpression":{"expression":{"id":56357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2232:3:98","subExpression":{"id":56356,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56350,"src":"2232:1:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56358,"nodeType":"ExpressionStatement","src":"2232:3:98"},"nodeType":"ForStatement","src":"2200:100:98"}]},"documentation":{"id":56337,"nodeType":"StructuredDocumentation","src":"1840:213:98","text":"@notice Batch finalizes withdrawal transactions.\n This method is necessary because it is not possible to check\n whether msg.sender is a message relayer via the Multicall contract."},"functionSelector":"057bbee1","implemented":true,"kind":"function","modifiers":[],"name":"finalizeWithdrawalTransactions","nameLocation":"2067:30:98","parameters":{"id":56342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56341,"mutability":"mutable","name":"_txs","nameLocation":"2137:4:98","nodeType":"VariableDeclaration","scope":56368,"src":"2098:43:98","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalTransaction_$50744_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Types.WithdrawalTransaction[]"},"typeName":{"baseType":{"id":56339,"nodeType":"UserDefinedTypeName","pathNode":{"id":56338,"name":"Types.WithdrawalTransaction","nodeType":"IdentifierPath","referencedDeclaration":50744,"src":"2098:27:98"},"referencedDeclaration":50744,"src":"2098:27:98","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawalTransaction_$50744_storage_ptr","typeString":"struct Types.WithdrawalTransaction"}},"id":56340,"nodeType":"ArrayTypeName","src":"2098:29:98","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalTransaction_$50744_storage_$dyn_storage_ptr","typeString":"struct Types.WithdrawalTransaction[]"}},"visibility":"internal"}],"src":"2097:45:98"},"returnParameters":{"id":56343,"nodeType":"ParameterList","parameters":[],"src":"2152:0:98"},"scope":56415,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":56414,"nodeType":"FunctionDefinition","src":"2726:491:98","nodes":[],"body":{"id":56413,"nodeType":"Block","src":"2822:395:98","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":56387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56377,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56267,"src":"2836:14:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":56380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2862:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":56379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2854:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56378,"name":"address","nodeType":"ElementaryTypeName","src":"2854:7:98","typeDescriptions":{}}},"id":56381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2854:10:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2836:28:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":56383,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2868:3:98","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2868:10:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":56385,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56267,"src":"2882:14:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2868:28:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2836:60:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56407,"nodeType":"IfStatement","src":"2832:316:98","trueBody":{"id":56406,"nodeType":"Block","src":"2898:250:98","statements":[{"assignments":[56389],"declarations":[{"constant":false,"id":56389,"mutability":"mutable","name":"verified","nameLocation":"2980:8:98","nodeType":"VariableDeclaration","scope":56406,"src":"2972:16:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56388,"name":"uint256","nodeType":"ElementaryTypeName","src":"2972:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56398,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":56393,"name":"L2_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47233,"src":"3020:9:98","typeDescriptions":{"typeIdentifier":"t_contract$_L2OutputOracle_$47181","typeString":"contract L2OutputOracle"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_L2OutputOracle_$47181","typeString":"contract L2OutputOracle"}],"id":56392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3012:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56391,"name":"address","nodeType":"ElementaryTypeName","src":"3012:7:98","typeDescriptions":{}}},"id":56394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3012:18:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56390,"name":"IOasysL2OutputOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56193,"src":"2991:20:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOasysL2OutputOracle_$56193_$","typeString":"type(contract IOasysL2OutputOracle)"}},"id":56395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2991:40:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOasysL2OutputOracle_$56193","typeString":"contract IOasysL2OutputOracle"}},"id":56396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifiedL1Timestamp","nodeType":"MemberAccess","referencedDeclaration":56184,"src":"2991:60:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":56397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2991:62:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"2972:81:98"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56399,"name":"verified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56389,"src":"3071:8:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":56400,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56371,"src":"3082:10:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3071:21:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56405,"nodeType":"IfStatement","src":"3067:71:98","trueBody":{"id":56404,"nodeType":"Block","src":"3094:44:98","statements":[{"expression":{"hexValue":"74727565","id":56402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3119:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":56376,"id":56403,"nodeType":"Return","src":"3112:11:98"}]}}]}},{"expression":{"arguments":[{"id":56410,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56371,"src":"3199:10:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":56408,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3164:5:98","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OasysPortal_$56415_$","typeString":"type(contract super OasysPortal)"}},"id":56409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_isFinalizationPeriodElapsed","nodeType":"MemberAccess","referencedDeclaration":47894,"src":"3164:34:98","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":56411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3164:46:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":56376,"id":56412,"nodeType":"Return","src":"3157:53:98"}]},"baseFunctions":[47894],"documentation":{"id":56369,"nodeType":"StructuredDocumentation","src":"2312:409:98","text":"@notice Determines whether the finalization period has elapsed with respect to\n the provided block timestamp.\n If the caller is an authorized message relayer and the timestamp\n is immediately verified, no need to wait for the finalization period.\n @param _timestamp Timestamp to check.\n @return Whether or not the finalization period has elapsed."},"implemented":true,"kind":"function","modifiers":[],"name":"_isFinalizationPeriodElapsed","nameLocation":"2735:28:98","overrides":{"id":56373,"nodeType":"OverrideSpecifier","overrides":[],"src":"2798:8:98"},"parameters":{"id":56372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56371,"mutability":"mutable","name":"_timestamp","nameLocation":"2772:10:98","nodeType":"VariableDeclaration","scope":56414,"src":"2764:18:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56370,"name":"uint256","nodeType":"ElementaryTypeName","src":"2764:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2763:20:98"},"returnParameters":{"id":56376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56414,"src":"2816:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":56374,"name":"bool","nodeType":"ElementaryTypeName","src":"2816:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2815:6:98"},"scope":56415,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":56263,"name":"OptimismPortal","nodeType":"IdentifierPath","referencedDeclaration":47895,"src":"726:14:98"},"id":56264,"nodeType":"InheritanceSpecifier","src":"726:14:98"}],"canonicalName":"OasysPortal","contractDependencies":[],"contractKind":"contract","documentation":{"id":56262,"nodeType":"StructuredDocumentation","src":"537:165:98","text":"@custom:proxied\n @title OasysPortal\n @notice The OasysPortal is a contract that extends\n OptimismPortal to enable fast messaging from L2 to L1."},"fullyImplemented":true,"linearizedBaseContracts":[56415,47895,57804,48495,41344],"name":"OasysPortal","nameLocation":"711:11:98","scope":56416,"usedErrors":[]}],"license":"MIT"},"id":98} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_l2Oracle","type":"address","internalType":"contract L2OutputOracle"},{"name":"_guardian","type":"address","internalType":"address"},{"name":"_paused","type":"bool","internalType":"bool"},{"name":"_systemConfig","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"GUARDIAN","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"L2_ORACLE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract L2OutputOracle"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CONFIG","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"view"},{"type":"function","name":"depositTransaction","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"},{"name":"_gasLimit","type":"uint64","internalType":"uint64"},{"name":"_isCreation","type":"bool","internalType":"bool"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"donateETH","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"finalizeWithdrawalTransaction","inputs":[{"name":"_tx","type":"tuple","internalType":"struct Types.WithdrawalTransaction","components":[{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeWithdrawalTransactions","inputs":[{"name":"_txs","type":"tuple[]","internalType":"struct Types.WithdrawalTransaction[]","components":[{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizedWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"guardian","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_paused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializeWithRelayer","inputs":[{"name":"_paused","type":"bool","internalType":"bool"},{"name":"_messageRelayer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOutputFinalized","inputs":[{"name":"_l2OutputIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"l2Oracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract L2OutputOracle"}],"stateMutability":"view"},{"type":"function","name":"l2Sender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"messageRelayer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"minimumGasLimit","inputs":[{"name":"_byteCount","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"params","inputs":[],"outputs":[{"name":"prevBaseFee","type":"uint128","internalType":"uint128"},{"name":"prevBoughtGas","type":"uint64","internalType":"uint64"},{"name":"prevBlockNum","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proveWithdrawalTransaction","inputs":[{"name":"_tx","type":"tuple","internalType":"struct Types.WithdrawalTransaction","components":[{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"_l2OutputIndex","type":"uint256","internalType":"uint256"},{"name":"_outputRootProof","type":"tuple","internalType":"struct Types.OutputRootProof","components":[{"name":"version","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"messagePasserStorageRoot","type":"bytes32","internalType":"bytes32"},{"name":"latestBlockhash","type":"bytes32","internalType":"bytes32"}]},{"name":"_withdrawalProof","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"provenWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"outputRoot","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint128","internalType":"uint128"},{"name":"l2OutputIndex","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"setMessageRelayer","inputs":[{"name":"newRelayer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"systemConfig","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MessageRelayerSet","inputs":[{"name":"relayer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TransactionDeposited","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"version","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"opaqueData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"WithdrawalFinalized","inputs":[{"name":"withdrawalHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"success","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"WithdrawalProven","inputs":[{"name":"withdrawalHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60e06040523480156200001157600080fd5b50604051620056bb380380620056bb8339810160408190526200003491620002a2565b6001600160a01b0380851660805280841660c052811660a052838383836200005c826200006a565b50505050505050506200030e565b62000080816200008360201b62001bc81760201c565b50565b600054610100900460ff1615808015620000a45750600054600160ff909116105b80620000d45750620000c130620001da60201b62001d9a1760201c565b158015620000d4575060005460ff166001145b6200013d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000161576000805461ff0019166101001790555b603280546001600160a01b03191661dead1790556035805483151560ff199091161790556200018f620001e9565b8015620001d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620002565760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000134565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6001600160a01b03811681146200008057600080fd5b60008060008060808587031215620002b957600080fd5b8451620002c6816200028c565b6020860151909450620002d9816200028c565b60408601519093508015158114620002f057600080fd5b606086015190925062000303816200028c565b939692955090935050565b60805160a05160c05161531b620003a06000396000818161029a015281816103dd0152818161096a0152818161101b01526112770152600081816102520152818161066f01526123db0152600081816101d70152818161044301528181610b8501528181610d4c015281816111d30152818161152501528181611763015281816121c3015261258c015261531b6000f3fe6080604052600436106101995760003560e01c80638456cb59116100e1578063a35d99df1161008a578063e965084c11610064578063e965084c146105be578063e9e05c421461064a578063f04987501461065d578063fc69f6e81461069157600080fd5b8063a35d99df146104c4578063cff0ab96146104fd578063d53a822f1461059e57600080fd5b80639b5f694a116100bb5780639b5f694a146104345780639bf62d8214610467578063a14238e71461049457600080fd5b80638456cb59146103ff5780638b4c40b0146101be5780638c3152e91461041457600080fd5b80634f3b457e116101435780636cfd26e91161011d5780636cfd26e91461038b5780636dbffb78146103ab578063724c184c146103cb57600080fd5b80634f3b457e146102de57806354fd4d501461030b5780635c975abb1461036157600080fd5b80633f4ba83a116101745780633f4ba83a14610276578063452a93201461028b5780634870496f146102be57600080fd5b80621c2ff6146101c5578063057bbee11461022357806333d7e2bd1461024357600080fd5b366101c0576101be3334620186a06000604051806020016040528060008152506106b1565b005b600080fd5b3480156101d157600080fd5b506101f97f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561022f57600080fd5b506101be61023e36600461470b565b6108fe565b34801561024f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101f9565b34801561028257600080fd5b506101be610952565b34801561029757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101f9565b3480156102ca57600080fd5b506101be6102d93660046148eb565b610a5b565b3480156102ea57600080fd5b506064546101f99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561031757600080fd5b506103546040518060400160405280600681526020017f312e31312e30000000000000000000000000000000000000000000000000000081525081565b60405161021a91906149f2565b34801561036d57600080fd5b5060355461037b9060ff1681565b604051901515815260200161021a565b34801561039757600080fd5b506101be6103a6366004614a05565b611003565b3480156103b757600080fd5b5061037b6103c6366004614a20565b611188565b3480156103d757600080fd5b506101f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561040b57600080fd5b506101be61125f565b34801561042057600080fd5b506101be61042f366004614a39565b611365565b34801561044057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101f9565b34801561047357600080fd5b506032546101f99073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104a057600080fd5b5061037b6104af366004614a20565b60336020526000908152604090205460ff1681565b3480156104d057600080fd5b506104e46104df366004614a8e565b611b56565b60405167ffffffffffffffff909116815260200161021a565b34801561050957600080fd5b50600154610565906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161021a565b3480156105aa57600080fd5b506101be6105b9366004614ab9565b611b6f565b3480156105ca57600080fd5b5061061c6105d9366004614a20565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff928316602085015291169082015260600161021a565b6101be610658366004614ad4565b6106b1565b34801561066957600080fd5b506101f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561069d57600080fd5b506101be6106ac366004614b4d565b611b7b565b8260005a9050831561074e5773ffffffffffffffffffffffffffffffffffffffff87161561074e576040805162461bcd60e51b81526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6107588351611b56565b67ffffffffffffffff168567ffffffffffffffff1610156107e15760405162461bcd60e51b815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c00000000000000000000000000000000000000000000000000000000006064820152608401610745565b6201d4c0835111156108355760405162461bcd60e51b815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c6172676500006044820152606401610745565b33328114610856575033731111000000000000000000000000000000001111015b60003488888888604051602001610871959493929190614b80565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516108e191906149f2565b60405180910390a450506108f58282611db6565b50505050505050565b8060005b8181101561094c5761093a84848381811061091f5761091f614be5565b90506020028101906109319190614c14565b61042f90614c52565b8061094481614c8d565b915050610902565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109fd5760405162461bcd60e51b815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e706175736500000000000000000000000000000000000000000000006064820152608401610745565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff1615610aae5760405162461bcd60e51b815260206004820152601660248201527f4f7074696d69736d506f7274616c3a20706175736564000000000000000000006044820152606401610745565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610b535760405162461bcd60e51b815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610745565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190614ce5565b519050610c1f610c1a36869003860186614d4a565b6120c9565b8114610c935760405162461bcd60e51b815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610745565b6000610c9e87612125565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610dd05750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcc9190614ce5565b5114155b610e425760405162461bcd60e51b815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e0000000000000000006064820152608401610745565b6040805160208101849052600091810182905260600160408051601f1981840301815282825280516020918201209083018190529250610ecf910160408051601f19818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610ec5888a614db0565b8a60400135612155565b610f415760405162461bcd60e51b815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610745565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146110ae5760405162461bcd60e51b815260206004820152603860248201527f4f61737973506f7274616c3a206f6e6c7920677561726469616e2063616e207360448201527f65742061206e6577206d6573736167652072656c6179657200000000000000006064820152608401610745565b60645473ffffffffffffffffffffffffffffffffffffffff908116908216036111195760405162461bcd60e51b815260206004820152601860248201527f4f61737973506f7274616c3a20616c72656164792073657400000000000000006044820152606401610745565b606480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffce056bb1203f3a49718c0c063cdde76b64ede7be48768dcf101ca2fc1358cfe90600090a250565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000906112599073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190614ce5565b602001516fffffffffffffffffffffffffffffffff16612179565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461130a5760405162461bcd60e51b815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e207061757365000000000000000000000000000000000000000000000000006064820152608401610745565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610a51565b60355460ff16156113b85760405162461bcd60e51b815260206004820152601660248201527f4f7074696d69736d506f7274616c3a20706175736564000000000000000000006044820152606401610745565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146114475760405162461bcd60e51b815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610745565b600061145282612125565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036115235760405162461bcd60e51b815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e2079657400000000000000000000000000006064820152608401610745565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b29190614e34565b81602001516fffffffffffffffffffffffffffffffff1610156116635760405162461bcd60e51b815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a401610745565b61168281602001516fffffffffffffffffffffffffffffffff16612179565b61171a5760405162461bcd60e51b815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a401610745565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190614ce5565b82518151919250146118835760405162461bcd60e51b815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a401610745565b6118a281602001516fffffffffffffffffffffffffffffffff16612179565b61193a5760405162461bcd60e51b815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a401610745565b60008381526033602052604090205460ff16156119bf5760405162461bcd60e51b815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610745565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a0880151611a6193929190612280565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611ac690841515815260200190565b60405180910390a280158015611adc5750326001145b15611b4f5760405162461bcd60e51b815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610745565b5050505050565b6000611b63826010614e4d565b61125990615208614e7d565b611b7881611bc8565b50565b606480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055611bc482611b6f565b5050565b600054610100900460ff1615808015611be85750600054600160ff909116105b80611c025750303b158015611c02575060005460ff166001145b611c745760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610745565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611cd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611d346122de565b8015611bc457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611dec907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614ea9565b90506000611df86123a7565b90506000816020015160ff16826000015163ffffffff16611e199190614eef565b90508215611f5057600154600090611e50908390700100000000000000000000000000000000900467ffffffffffffffff16614f57565b90506000836040015160ff1683611e679190614fcb565b600154611e879084906fffffffffffffffffffffffffffffffff16614fcb565b611e919190614eef565b600154909150600090611ee290611ebb9084906fffffffffffffffffffffffffffffffff16615087565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff1661246d565b90506001861115611f1157611f0e611ebb82876040015160ff1660018a611f099190614ea9565b61248c565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611f83908490700100000000000000000000000000000000900467ffffffffffffffff16614e7d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16131561204c5760405162461bcd60e51b815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610745565b600154600090612078906fffffffffffffffffffffffffffffffff1667ffffffffffffffff88166150fb565b9050600061208a48633b9aca006124e1565b6120949083615138565b905060005a6120a39088614ea9565b9050808211156120bf576120bf6120ba8284614ea9565b6124f8565b5050505050505050565b60008160000151826020015183604001518460600151604051602001612108949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a0880151935160009761210897909695910161514c565b60008061216186612526565b905061216f81868686612558565b9695505050505050565b60645460009073ffffffffffffffffffffffffffffffffffffffff16158015906121ba575060645473ffffffffffffffffffffffffffffffffffffffff1633145b156122775760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b3bd5cf56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906151a3565b6fffffffffffffffffffffffffffffffff169050828111156122755750600192915050565b505b61125982612588565b600080600061229086600061262b565b9050806122c6576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff1661235b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610745565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246891906151e3565b905090565b600061248261247c8585612649565b83612659565b90505b9392505050565b6000670de0b6b3a76400006124cd6124a48583614eef565b6124b690670de0b6b3a7640000614f57565b6124c885670de0b6b3a7640000614fcb565b612668565b6124d79086614fcb565b6124829190614eef565b6000818310156124f15781612485565b5090919050565b6000805a90505b825a61250b9083614ea9565b10156125215761251a82614c8d565b91506124ff565b505050565b6060818051906020012060405160200161254291815260200190565b6040516020818303038152906040529050919050565b600061257f84612569878686612699565b8051602091820120825192909101919091201490565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126199190614e34565b6126239083615282565b421192915050565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818312156124f15781612485565b60008183126124f15781612485565b6000612485670de0b6b3a76400008361268086612fab565b61268a9190614fcb565b6126949190614eef565b6131d5565b606060008451116126ec5760405162461bcd60e51b815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b657900000000000000000000006044820152606401610745565b60006126f7846133fa565b90506000612704866134e6565b905060008460405160200161271b91815260200190565b60405160208183030381529060405290506000805b8451811015612f3c57600085828151811061274d5761274d614be5565b6020026020010151905084518311156127ce5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e6774680000000000000000000000000000000000006064820152608401610745565b8260000361286d578051805160209182012060405161281c926127f692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6128685760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610745565b612990565b8051516020116129095780518051602091820120604051612897926127f692910190815260200190565b6128685760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c2068617368000000000000000000000000000000000000000000000000006064820152608401610745565b8051845160208087019190912082519190920120146129905760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f65206861736800000000000000000000000000000000000000000000000000006064820152608401610745565b61299c60106001615282565b81602001515103612b445784518303612adc576129d681602001516010815181106129c9576129c9614be5565b6020026020010151613549565b96506000875111612a4f5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610745565b60018651612a5d9190614ea9565b8214612ad15760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610745565b505050505050612485565b6000858481518110612af057612af0614be5565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612b1b57612b1b614be5565b60200260200101519050612b2e81613675565b9550612b3b600186615282565b94505050612f29565b600281602001515103612ebb576000612b5c8261369a565b9050600081600081518110612b7357612b73614be5565b016020015160f81c90506000612b8a60028361529a565b612b959060026152bc565b90506000612ba6848360ff166136be565b90506000612bb48a896136be565b90506000612bc283836136f4565b905080835114612c3a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610745565b60ff851660021480612c4f575060ff85166003145b15612df05780825114612cca5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610745565b612ce487602001516001815181106129c9576129c9614be5565b9c5060008d5111612d5d5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610745565b60018c51612d6b9190614ea9565b8814612ddf5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610745565b505050505050505050505050612485565b60ff85161580612e03575060ff85166001145b15612e4257612e2f8760200151600181518110612e2257612e22614be5565b6020026020010151613675565b9950612e3b818a615282565b9850612eb0565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e2070726566697800000000000000000000000000006064820152608401610745565b505050505050612f29565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f64650000000000000000000000000000000000000000000000006064820152608401610745565b5080612f3481614c8d565b915050612730565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e74730000000000000000000000000000000000000000000000000000006064820152608401610745565b6000808213612ffc5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610745565b60006060613009846137a8565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361320657506000919050565b680755bf798b4a1bf1e5821261325e5760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610745565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156134185761341861474d565b60405190808252806020026020018201604052801561345d57816020015b60408051808201909152606080825260208201528152602001906001900390816134365790505b50915060005b818110156134df57604051806040016040528085838151811061348857613488614be5565b602002602001015181526020016134b78684815181106134aa576134aa614be5565b6020026020010151613864565b8152508382815181106134cc576134cc614be5565b6020908102919091010152600101613463565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b8381101561353e578060011b82018184015160001a8060041c8253600f811660018301535050600101613510565b509295945050505050565b6060600080600061355985613877565b919450925090506000816001811115613574576135746152df565b146135e75760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610745565b6135f18284615282565b8551146136665760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e6465720000000000000000000000006064820152608401610745565b61257f856020015184846141ac565b606060208260000151106136915761368c82613549565b611259565b61125982614240565b60606112596136b983602001516000815181106129c9576129c9614be5565b6134e6565b6060825182106136dd5750604080516020810190915260008152611259565b61248583838486516136ef9190614ea9565b614256565b600080825184511061370757825161370a565b83515b90505b8082108015613791575082828151811061372957613729614be5565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684838151811061376857613768614be5565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156137a15781600101915061370d565b5092915050565b60008082116137f95760405162461bcd60e51b815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610745565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060611259613872836143c2565b614491565b60008060008084600001511161391b5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610745565b6020840151805160001a607f81116139405760006001600094509450945050506141a5565b60b78111613b1a576000613955608083614ea9565b9050808760000151116139f65760405162461bcd60e51b815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a401610745565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613a6f57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613b075760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a401610745565b50600195509350600092506141a5915050565b60bf8111613e00576000613b2f60b783614ea9565b905080876000015111613bd05760405162461bcd60e51b815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a401610745565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613c945760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a401610745565b600184015160088302610100031c60378111613d3e5760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a401610745565b613d488184615282565b895111613de35760405162461bcd60e51b815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a401610745565b613dee836001615282565b97509550600094506141a59350505050565b60f78111613ec7576000613e1560c083614ea9565b905080876000015111613eb65760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a401610745565b6001955093508492506141a5915050565b6000613ed460f783614ea9565b905080876000015111613f755760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a401610745565b60018301517fff000000000000000000000000000000000000000000000000000000000000001660008190036140395760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a401610745565b600184015160088302610100031c603781116140e35760405162461bcd60e51b815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a401610745565b6140ed8184615282565b8951116141885760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a401610745565b614193836001615282565b97509550600194506141a59350505050565b9193909250565b60608167ffffffffffffffff8111156141c7576141c761474d565b6040519080825280601f01601f1916602001820160405280156141f1576020820181803683370190505b50905081156124855760006142068486615282565b90506020820160005b8481101561422757828101518282015260200161420f565b84811115614236576000858301525b5050509392505050565b60606112598260200151600084600001516141ac565b60608182601f0110156142ab5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610745565b8282840110156142fd5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610745565b818301845110156143505760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610745565b60608215801561436f57604051915060008252602082016040526143b9565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156143a8578051835260209283019201614390565b5050858452601f01601f1916604052505b50949350505050565b604080518082019091526000808252602082015260008251116144735760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610745565b50604080518082019091528151815260209182019181019190915290565b606060008060006144a185613877565b9194509250905060018160018111156144bc576144bc6152df565b1461452f5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610745565b845161453b8385615282565b146145ae5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e64657200000000000000000000000000006064820152608401610745565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816145c55790505093506000835b86518110156146b3576000806146386040518060400160405280858c6000015161461c9190614ea9565b8152602001858c602001516146319190615282565b9052613877565b5091509150604051806040016040528083836146549190615282565b8152602001848b602001516146699190615282565b81525088858151811061467e5761467e614be5565b6020908102919091010152614694600185615282565b93506146a08183615282565b6146aa9084615282565b925050506145f2565b50845250919392505050565b60008083601f8401126146d157600080fd5b50813567ffffffffffffffff8111156146e957600080fd5b6020830191508360208260051b850101111561470457600080fd5b9250929050565b6000806020838503121561471e57600080fd5b823567ffffffffffffffff81111561473557600080fd5b614741858286016146bf565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147a5576147a561474d565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146147d157600080fd5b919050565b600082601f8301126147e757600080fd5b813567ffffffffffffffff8111156148015761480161474d565b6148146020601f19601f8401160161477c565b81815284602083860101111561482957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561485857600080fd5b60405160c0810167ffffffffffffffff828210818311171561487c5761487c61474d565b8160405282935084358352614893602086016147ad565b60208401526148a4604086016147ad565b6040840152606085013560608401526080850135608084015260a08501359150808211156148d157600080fd5b506148de858286016147d6565b60a0830152505092915050565b600080600080600085870360e081121561490457600080fd5b863567ffffffffffffffff8082111561491c57600080fd5b6149288a838b01614846565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561496157600080fd5b60408901955060c089013592508083111561497b57600080fd5b5050614989888289016146bf565b969995985093965092949392505050565b60005b838110156149b557818101518382015260200161499d565b8381111561094c5750506000910152565b600081518084526149de81602086016020860161499a565b601f01601f19169290920160200192915050565b60208152600061248560208301846149c6565b600060208284031215614a1757600080fd5b612485826147ad565b600060208284031215614a3257600080fd5b5035919050565b600060208284031215614a4b57600080fd5b813567ffffffffffffffff811115614a6257600080fd5b614a6e84828501614846565b949350505050565b803567ffffffffffffffff811681146147d157600080fd5b600060208284031215614aa057600080fd5b61248582614a76565b803580151581146147d157600080fd5b600060208284031215614acb57600080fd5b61248582614aa9565b600080600080600060a08688031215614aec57600080fd5b614af5866147ad565b945060208601359350614b0a60408701614a76565b9250614b1860608701614aa9565b9150608086013567ffffffffffffffff811115614b3457600080fd5b614b40888289016147d6565b9150509295509295909350565b60008060408385031215614b6057600080fd5b614b6983614aa9565b9150614b77602084016147ad565b90509250929050565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614bd481604985016020870161499a565b919091016049019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614c4857600080fd5b9190910192915050565b60006112593683614846565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614cbe57614cbe614c5e565b5060010190565b80516fffffffffffffffffffffffffffffffff811681146147d157600080fd5b600060608284031215614cf757600080fd5b6040516060810181811067ffffffffffffffff82111715614d1a57614d1a61474d565b60405282518152614d2d60208401614cc5565b6020820152614d3e60408401614cc5565b60408201529392505050565b600060808284031215614d5c57600080fd5b6040516080810181811067ffffffffffffffff82111715614d7f57614d7f61474d565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614dcb57614dcb61474d565b8360051b6020614ddc81830161477c565b868152918501918181019036841115614df457600080fd5b865b84811015614e2857803586811115614e0e5760008081fd5b614e1a36828b016147d6565b845250918301918301614df6565b50979650505050505050565b600060208284031215614e4657600080fd5b5051919050565b600067ffffffffffffffff80831681851681830481118215151615614e7457614e74614c5e565b02949350505050565b600067ffffffffffffffff808316818516808303821115614ea057614ea0614c5e565b01949350505050565b600082821015614ebb57614ebb614c5e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614efe57614efe614ec0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614f5257614f52614c5e565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614f9157614f91614c5e565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614fc557614fc5614c5e565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561500c5761500c614c5e565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561504757615047614c5e565b6000871292508782058712848416161561506357615063614c5e565b8785058712818416161561507957615079614c5e565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156150c1576150c1614c5e565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156150f5576150f5614c5e565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561513357615133614c5e565b500290565b60008261514757615147614ec0565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261519760c08301846149c6565b98975050505050505050565b6000602082840312156151b557600080fd5b61248582614cc5565b805163ffffffff811681146147d157600080fd5b805160ff811681146147d157600080fd5b600060c082840312156151f557600080fd5b60405160c0810181811067ffffffffffffffff821117156152185761521861474d565b604052615224836151be565b8152615232602084016151d2565b6020820152615243604084016151d2565b6040820152615254606084016151be565b6060820152615265608084016151be565b608082015261527660a08401614cc5565b60a08201529392505050565b6000821982111561529557615295614c5e565b500190565b600060ff8316806152ad576152ad614ec0565b8060ff84160691505092915050565b600060ff821660ff8416808210156152d6576152d6614c5e565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a","sourceMap":"702:3499:110:-:0;;;1023:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5710:21:53;;;;;5741:20;;;;;5771:29;;;;1183:9:110;1194;1205:7;1214:13;5810:19:53;1205:7:110;5810:10:53;:19::i;:::-;5601:235;;;;1023:213:110;;;;702:3499;;1277:92;1337:25;1354:7;1337:16;;;;;:25;;:::i;:::-;1277:92;:::o;5871:177:53:-;3100:19:26;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:26;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:26;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:26;;1149:2:133;3146:190:26;;;1131:21:133;1188:2;1168:18;;;1161:30;1227:34;1207:18;;;1200:62;-1:-1:-1;;;1278:18:133;;;1271:44;1332:19;;3146:190:26;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:26;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:26;;;;;3372:65;5942:8:53::1;:38:::0;;-1:-1:-1;;;;;;5942:38:53::1;1337:42:64;5942:38:53;::::0;;5990:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;5990:16:53;;::::1;;::::0;;6016:25:::1;:23;:25::i;:::-;3461:14:26::0;3457:99;;;3507:5;3491:21;;-1:-1:-1;;3491:21:26;;;3531:14;;-1:-1:-1;1514:36:133;;3531:14:26;;1502:2:133;1487:18;3531:14:26;;;;;;;3457:99;3090:472;5871:177:53;:::o;1175:320:34:-;-1:-1:-1;;;;;1465:19:34;;:23;;;1175:320::o;8362:180:55:-;4888:13:26;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:26;;1763:2:133;4880:69:26;;;1745:21:133;1802:2;1782:18;;;1775:30;1841:34;1821:18;;;1814:62;-1:-1:-1;;;1892:18:133;;;1885:41;1943:19;;4880:69:26;1561:407:133;4880:69:26;8442:93:55::1;::::0;;::::1;::::0;::::1;::::0;;8472:6:::1;8442:93:::0;;;-1:-1:-1;8442:93:55::1;::::0;::::1;::::0;8519:12:::1;-1:-1:-1::0;;;;;8442:93:55::1;::::0;;;;;;;-1:-1:-1;;;8433:102:55::1;;:6;:102:::0;8362:180::o;14:147:133:-;-1:-1:-1;;;;;105:31:133;;95:42;;85:70;;151:1;148;141:12;166:776;306:6;314;322;330;383:3;371:9;362:7;358:23;354:33;351:53;;;400:1;397;390:12;351:53;432:9;426:16;451:47;492:5;451:47;:::i;:::-;567:2;552:18;;546:25;517:5;;-1:-1:-1;580:49:133;546:25;580:49;:::i;:::-;700:2;685:18;;679:25;648:7;;-1:-1:-1;742:15:133;;735:23;723:36;;713:64;;773:1;770;763:12;713:64;848:2;833:18;;827:25;796:7;;-1:-1:-1;861:49:133;827:25;861:49;:::i;:::-;166:776;;;;-1:-1:-1;166:776:133;;-1:-1:-1;;166:776:133:o;1561:407::-;702:3499:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101995760003560e01c80638456cb59116100e1578063a35d99df1161008a578063e965084c11610064578063e965084c146105be578063e9e05c421461064a578063f04987501461065d578063fc69f6e81461069157600080fd5b8063a35d99df146104c4578063cff0ab96146104fd578063d53a822f1461059e57600080fd5b80639b5f694a116100bb5780639b5f694a146104345780639bf62d8214610467578063a14238e71461049457600080fd5b80638456cb59146103ff5780638b4c40b0146101be5780638c3152e91461041457600080fd5b80634f3b457e116101435780636cfd26e91161011d5780636cfd26e91461038b5780636dbffb78146103ab578063724c184c146103cb57600080fd5b80634f3b457e146102de57806354fd4d501461030b5780635c975abb1461036157600080fd5b80633f4ba83a116101745780633f4ba83a14610276578063452a93201461028b5780634870496f146102be57600080fd5b80621c2ff6146101c5578063057bbee11461022357806333d7e2bd1461024357600080fd5b366101c0576101be3334620186a06000604051806020016040528060008152506106b1565b005b600080fd5b3480156101d157600080fd5b506101f97f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561022f57600080fd5b506101be61023e36600461470b565b6108fe565b34801561024f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101f9565b34801561028257600080fd5b506101be610952565b34801561029757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101f9565b3480156102ca57600080fd5b506101be6102d93660046148eb565b610a5b565b3480156102ea57600080fd5b506064546101f99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561031757600080fd5b506103546040518060400160405280600681526020017f312e31312e30000000000000000000000000000000000000000000000000000081525081565b60405161021a91906149f2565b34801561036d57600080fd5b5060355461037b9060ff1681565b604051901515815260200161021a565b34801561039757600080fd5b506101be6103a6366004614a05565b611003565b3480156103b757600080fd5b5061037b6103c6366004614a20565b611188565b3480156103d757600080fd5b506101f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561040b57600080fd5b506101be61125f565b34801561042057600080fd5b506101be61042f366004614a39565b611365565b34801561044057600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101f9565b34801561047357600080fd5b506032546101f99073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104a057600080fd5b5061037b6104af366004614a20565b60336020526000908152604090205460ff1681565b3480156104d057600080fd5b506104e46104df366004614a8e565b611b56565b60405167ffffffffffffffff909116815260200161021a565b34801561050957600080fd5b50600154610565906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161021a565b3480156105aa57600080fd5b506101be6105b9366004614ab9565b611b6f565b3480156105ca57600080fd5b5061061c6105d9366004614a20565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff928316602085015291169082015260600161021a565b6101be610658366004614ad4565b6106b1565b34801561066957600080fd5b506101f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561069d57600080fd5b506101be6106ac366004614b4d565b611b7b565b8260005a9050831561074e5773ffffffffffffffffffffffffffffffffffffffff87161561074e576040805162461bcd60e51b81526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6107588351611b56565b67ffffffffffffffff168567ffffffffffffffff1610156107e15760405162461bcd60e51b815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c00000000000000000000000000000000000000000000000000000000006064820152608401610745565b6201d4c0835111156108355760405162461bcd60e51b815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c6172676500006044820152606401610745565b33328114610856575033731111000000000000000000000000000000001111015b60003488888888604051602001610871959493929190614b80565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516108e191906149f2565b60405180910390a450506108f58282611db6565b50505050505050565b8060005b8181101561094c5761093a84848381811061091f5761091f614be5565b90506020028101906109319190614c14565b61042f90614c52565b8061094481614c8d565b915050610902565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109fd5760405162461bcd60e51b815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e706175736500000000000000000000000000000000000000000000006064820152608401610745565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff1615610aae5760405162461bcd60e51b815260206004820152601660248201527f4f7074696d69736d506f7274616c3a20706175736564000000000000000000006044820152606401610745565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610b535760405162461bcd60e51b815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610745565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c059190614ce5565b519050610c1f610c1a36869003860186614d4a565b6120c9565b8114610c935760405162461bcd60e51b815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610745565b6000610c9e87612125565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610dd05750805160408083015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcc9190614ce5565b5114155b610e425760405162461bcd60e51b815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e0000000000000000006064820152608401610745565b6040805160208101849052600091810182905260600160408051601f1981840301815282825280516020918201209083018190529250610ecf910160408051601f19818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610ec5888a614db0565b8a60400135612155565b610f415760405162461bcd60e51b815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610745565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146110ae5760405162461bcd60e51b815260206004820152603860248201527f4f61737973506f7274616c3a206f6e6c7920677561726469616e2063616e207360448201527f65742061206e6577206d6573736167652072656c6179657200000000000000006064820152608401610745565b60645473ffffffffffffffffffffffffffffffffffffffff908116908216036111195760405162461bcd60e51b815260206004820152601860248201527f4f61737973506f7274616c3a20616c72656164792073657400000000000000006044820152606401610745565b606480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffce056bb1203f3a49718c0c063cdde76b64ede7be48768dcf101ca2fc1358cfe90600090a250565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018290526000906112599073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190614ce5565b602001516fffffffffffffffffffffffffffffffff16612179565b92915050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461130a5760405162461bcd60e51b815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e207061757365000000000000000000000000000000000000000000000000006064820152608401610745565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610a51565b60355460ff16156113b85760405162461bcd60e51b815260206004820152601660248201527f4f7074696d69736d506f7274616c3a20706175736564000000000000000000006044820152606401610745565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146114475760405162461bcd60e51b815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610745565b600061145282612125565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036115235760405162461bcd60e51b815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e2079657400000000000000000000000000006064820152608401610745565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b29190614e34565b81602001516fffffffffffffffffffffffffffffffff1610156116635760405162461bcd60e51b815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a401610745565b61168281602001516fffffffffffffffffffffffffffffffff16612179565b61171a5760405162461bcd60e51b815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a401610745565b60408181015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190614ce5565b82518151919250146118835760405162461bcd60e51b815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a401610745565b6118a281602001516fffffffffffffffffffffffffffffffff16612179565b61193a5760405162461bcd60e51b815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a401610745565b60008381526033602052604090205460ff16156119bf5760405162461bcd60e51b815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610745565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a0880151611a6193929190612280565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611ac690841515815260200190565b60405180910390a280158015611adc5750326001145b15611b4f5760405162461bcd60e51b815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610745565b5050505050565b6000611b63826010614e4d565b61125990615208614e7d565b611b7881611bc8565b50565b606480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055611bc482611b6f565b5050565b600054610100900460ff1615808015611be85750600054600160ff909116105b80611c025750303b158015611c02575060005460ff166001145b611c745760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610745565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611cd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055603580548315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116179055611d346122de565b8015611bc457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611dec907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614ea9565b90506000611df86123a7565b90506000816020015160ff16826000015163ffffffff16611e199190614eef565b90508215611f5057600154600090611e50908390700100000000000000000000000000000000900467ffffffffffffffff16614f57565b90506000836040015160ff1683611e679190614fcb565b600154611e879084906fffffffffffffffffffffffffffffffff16614fcb565b611e919190614eef565b600154909150600090611ee290611ebb9084906fffffffffffffffffffffffffffffffff16615087565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff1661246d565b90506001861115611f1157611f0e611ebb82876040015160ff1660018a611f099190614ea9565b61248c565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611f83908490700100000000000000000000000000000000900467ffffffffffffffff16614e7d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16131561204c5760405162461bcd60e51b815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d697400006064820152608401610745565b600154600090612078906fffffffffffffffffffffffffffffffff1667ffffffffffffffff88166150fb565b9050600061208a48633b9aca006124e1565b6120949083615138565b905060005a6120a39088614ea9565b9050808211156120bf576120bf6120ba8284614ea9565b6124f8565b5050505050505050565b60008160000151826020015183604001518460600151604051602001612108949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a0880151935160009761210897909695910161514c565b60008061216186612526565b905061216f81868686612558565b9695505050505050565b60645460009073ffffffffffffffffffffffffffffffffffffffff16158015906121ba575060645473ffffffffffffffffffffffffffffffffffffffff1633145b156122775760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b3bd5cf56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906151a3565b6fffffffffffffffffffffffffffffffff169050828111156122755750600192915050565b505b61125982612588565b600080600061229086600061262b565b9050806122c6576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff1661235b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610745565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cc731b026040518163ffffffff1660e01b815260040160c060405180830381865afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246891906151e3565b905090565b600061248261247c8585612649565b83612659565b90505b9392505050565b6000670de0b6b3a76400006124cd6124a48583614eef565b6124b690670de0b6b3a7640000614f57565b6124c885670de0b6b3a7640000614fcb565b612668565b6124d79086614fcb565b6124829190614eef565b6000818310156124f15781612485565b5090919050565b6000805a90505b825a61250b9083614ea9565b10156125215761251a82614c8d565b91506124ff565b505050565b6060818051906020012060405160200161254291815260200190565b6040516020818303038152906040529050919050565b600061257f84612569878686612699565b8051602091820120825192909101919091201490565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126199190614e34565b6126239083615282565b421192915050565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818312156124f15781612485565b60008183126124f15781612485565b6000612485670de0b6b3a76400008361268086612fab565b61268a9190614fcb565b6126949190614eef565b6131d5565b606060008451116126ec5760405162461bcd60e51b815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b657900000000000000000000006044820152606401610745565b60006126f7846133fa565b90506000612704866134e6565b905060008460405160200161271b91815260200190565b60405160208183030381529060405290506000805b8451811015612f3c57600085828151811061274d5761274d614be5565b6020026020010151905084518311156127ce5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e6774680000000000000000000000000000000000006064820152608401610745565b8260000361286d578051805160209182012060405161281c926127f692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6128685760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610745565b612990565b8051516020116129095780518051602091820120604051612897926127f692910190815260200190565b6128685760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c2068617368000000000000000000000000000000000000000000000000006064820152608401610745565b8051845160208087019190912082519190920120146129905760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f65206861736800000000000000000000000000000000000000000000000000006064820152608401610745565b61299c60106001615282565b81602001515103612b445784518303612adc576129d681602001516010815181106129c9576129c9614be5565b6020026020010151613549565b96506000875111612a4f5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610745565b60018651612a5d9190614ea9565b8214612ad15760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610745565b505050505050612485565b6000858481518110612af057612af0614be5565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612b1b57612b1b614be5565b60200260200101519050612b2e81613675565b9550612b3b600186615282565b94505050612f29565b600281602001515103612ebb576000612b5c8261369a565b9050600081600081518110612b7357612b73614be5565b016020015160f81c90506000612b8a60028361529a565b612b959060026152bc565b90506000612ba6848360ff166136be565b90506000612bb48a896136be565b90506000612bc283836136f4565b905080835114612c3a5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610745565b60ff851660021480612c4f575060ff85166003145b15612df05780825114612cca5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610745565b612ce487602001516001815181106129c9576129c9614be5565b9c5060008d5111612d5d5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610745565b60018c51612d6b9190614ea9565b8814612ddf5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610745565b505050505050505050505050612485565b60ff85161580612e03575060ff85166001145b15612e4257612e2f8760200151600181518110612e2257612e22614be5565b6020026020010151613675565b9950612e3b818a615282565b9850612eb0565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e2070726566697800000000000000000000000000006064820152608401610745565b505050505050612f29565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f64650000000000000000000000000000000000000000000000006064820152608401610745565b5080612f3481614c8d565b915050612730565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e74730000000000000000000000000000000000000000000000000000006064820152608401610745565b6000808213612ffc5760405162461bcd60e51b815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610745565b60006060613009846137a8565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361320657506000919050565b680755bf798b4a1bf1e5821261325e5760405162461bcd60e51b815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610745565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156134185761341861474d565b60405190808252806020026020018201604052801561345d57816020015b60408051808201909152606080825260208201528152602001906001900390816134365790505b50915060005b818110156134df57604051806040016040528085838151811061348857613488614be5565b602002602001015181526020016134b78684815181106134aa576134aa614be5565b6020026020010151613864565b8152508382815181106134cc576134cc614be5565b6020908102919091010152600101613463565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b8381101561353e578060011b82018184015160001a8060041c8253600f811660018301535050600101613510565b509295945050505050565b6060600080600061355985613877565b919450925090506000816001811115613574576135746152df565b146135e75760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610745565b6135f18284615282565b8551146136665760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e6465720000000000000000000000006064820152608401610745565b61257f856020015184846141ac565b606060208260000151106136915761368c82613549565b611259565b61125982614240565b60606112596136b983602001516000815181106129c9576129c9614be5565b6134e6565b6060825182106136dd5750604080516020810190915260008152611259565b61248583838486516136ef9190614ea9565b614256565b600080825184511061370757825161370a565b83515b90505b8082108015613791575082828151811061372957613729614be5565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684838151811061376857613768614be5565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156137a15781600101915061370d565b5092915050565b60008082116137f95760405162461bcd60e51b815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610745565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060611259613872836143c2565b614491565b60008060008084600001511161391b5760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610745565b6020840151805160001a607f81116139405760006001600094509450945050506141a5565b60b78111613b1a576000613955608083614ea9565b9050808760000151116139f65760405162461bcd60e51b815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a401610745565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613a6f57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613b075760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a401610745565b50600195509350600092506141a5915050565b60bf8111613e00576000613b2f60b783614ea9565b905080876000015111613bd05760405162461bcd60e51b815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a401610745565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613c945760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a401610745565b600184015160088302610100031c60378111613d3e5760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a401610745565b613d488184615282565b895111613de35760405162461bcd60e51b815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a401610745565b613dee836001615282565b97509550600094506141a59350505050565b60f78111613ec7576000613e1560c083614ea9565b905080876000015111613eb65760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a401610745565b6001955093508492506141a5915050565b6000613ed460f783614ea9565b905080876000015111613f755760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a401610745565b60018301517fff000000000000000000000000000000000000000000000000000000000000001660008190036140395760405162461bcd60e51b815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a401610745565b600184015160088302610100031c603781116140e35760405162461bcd60e51b815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a401610745565b6140ed8184615282565b8951116141885760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a401610745565b614193836001615282565b97509550600194506141a59350505050565b9193909250565b60608167ffffffffffffffff8111156141c7576141c761474d565b6040519080825280601f01601f1916602001820160405280156141f1576020820181803683370190505b50905081156124855760006142068486615282565b90506020820160005b8481101561422757828101518282015260200161420f565b84811115614236576000858301525b5050509392505050565b60606112598260200151600084600001516141ac565b60608182601f0110156142ab5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610745565b8282840110156142fd5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610745565b818301845110156143505760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610745565b60608215801561436f57604051915060008252602082016040526143b9565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156143a8578051835260209283019201614390565b5050858452601f01601f1916604052505b50949350505050565b604080518082019091526000808252602082015260008251116144735760405162461bcd60e51b815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610745565b50604080518082019091528151815260209182019181019190915290565b606060008060006144a185613877565b9194509250905060018160018111156144bc576144bc6152df565b1461452f5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610745565b845161453b8385615282565b146145ae5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e64657200000000000000000000000000006064820152608401610745565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816145c55790505093506000835b86518110156146b3576000806146386040518060400160405280858c6000015161461c9190614ea9565b8152602001858c602001516146319190615282565b9052613877565b5091509150604051806040016040528083836146549190615282565b8152602001848b602001516146699190615282565b81525088858151811061467e5761467e614be5565b6020908102919091010152614694600185615282565b93506146a08183615282565b6146aa9084615282565b925050506145f2565b50845250919392505050565b60008083601f8401126146d157600080fd5b50813567ffffffffffffffff8111156146e957600080fd5b6020830191508360208260051b850101111561470457600080fd5b9250929050565b6000806020838503121561471e57600080fd5b823567ffffffffffffffff81111561473557600080fd5b614741858286016146bf565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147a5576147a561474d565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146147d157600080fd5b919050565b600082601f8301126147e757600080fd5b813567ffffffffffffffff8111156148015761480161474d565b6148146020601f19601f8401160161477c565b81815284602083860101111561482957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561485857600080fd5b60405160c0810167ffffffffffffffff828210818311171561487c5761487c61474d565b8160405282935084358352614893602086016147ad565b60208401526148a4604086016147ad565b6040840152606085013560608401526080850135608084015260a08501359150808211156148d157600080fd5b506148de858286016147d6565b60a0830152505092915050565b600080600080600085870360e081121561490457600080fd5b863567ffffffffffffffff8082111561491c57600080fd5b6149288a838b01614846565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561496157600080fd5b60408901955060c089013592508083111561497b57600080fd5b5050614989888289016146bf565b969995985093965092949392505050565b60005b838110156149b557818101518382015260200161499d565b8381111561094c5750506000910152565b600081518084526149de81602086016020860161499a565b601f01601f19169290920160200192915050565b60208152600061248560208301846149c6565b600060208284031215614a1757600080fd5b612485826147ad565b600060208284031215614a3257600080fd5b5035919050565b600060208284031215614a4b57600080fd5b813567ffffffffffffffff811115614a6257600080fd5b614a6e84828501614846565b949350505050565b803567ffffffffffffffff811681146147d157600080fd5b600060208284031215614aa057600080fd5b61248582614a76565b803580151581146147d157600080fd5b600060208284031215614acb57600080fd5b61248582614aa9565b600080600080600060a08688031215614aec57600080fd5b614af5866147ad565b945060208601359350614b0a60408701614a76565b9250614b1860608701614aa9565b9150608086013567ffffffffffffffff811115614b3457600080fd5b614b40888289016147d6565b9150509295509295909350565b60008060408385031215614b6057600080fd5b614b6983614aa9565b9150614b77602084016147ad565b90509250929050565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614bd481604985016020870161499a565b919091016049019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614c4857600080fd5b9190910192915050565b60006112593683614846565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614cbe57614cbe614c5e565b5060010190565b80516fffffffffffffffffffffffffffffffff811681146147d157600080fd5b600060608284031215614cf757600080fd5b6040516060810181811067ffffffffffffffff82111715614d1a57614d1a61474d565b60405282518152614d2d60208401614cc5565b6020820152614d3e60408401614cc5565b60408201529392505050565b600060808284031215614d5c57600080fd5b6040516080810181811067ffffffffffffffff82111715614d7f57614d7f61474d565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614dcb57614dcb61474d565b8360051b6020614ddc81830161477c565b868152918501918181019036841115614df457600080fd5b865b84811015614e2857803586811115614e0e5760008081fd5b614e1a36828b016147d6565b845250918301918301614df6565b50979650505050505050565b600060208284031215614e4657600080fd5b5051919050565b600067ffffffffffffffff80831681851681830481118215151615614e7457614e74614c5e565b02949350505050565b600067ffffffffffffffff808316818516808303821115614ea057614ea0614c5e565b01949350505050565b600082821015614ebb57614ebb614c5e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614efe57614efe614ec0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614f5257614f52614c5e565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614f9157614f91614c5e565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614fc557614fc5614c5e565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561500c5761500c614c5e565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561504757615047614c5e565b6000871292508782058712848416161561506357615063614c5e565b8785058712818416161561507957615079614c5e565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156150c1576150c1614c5e565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156150f5576150f5614c5e565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561513357615133614c5e565b500290565b60008261514757615147614ec0565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261519760c08301846149c6565b98975050505050505050565b6000602082840312156151b557600080fd5b61248582614cc5565b805163ffffffff811681146147d157600080fd5b805160ff811681146147d157600080fd5b600060c082840312156151f557600080fd5b60405160c0810181811067ffffffffffffffff821117156152185761521861474d565b604052615224836151be565b8152615232602084016151d2565b6020820152615243604084016151d2565b6040820152615254606084016151be565b6060820152615265608084016151be565b608082015261527660a08401614cc5565b60a08201529392505050565b6000821982111561529557615295614c5e565b500190565b600060ff8316806152ad576152ad614ec0565b8060ff84160691505092915050565b600060ff821660ff8416808210156152d6576152d6614c5e565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a","sourceMap":"702:3499:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8278:86:53;8297:10;8309:9;1866:7;8347:5;8354:9;;;;;;;;;;;;8278:18;:86::i;:::-;702:3499:110;;;;;2035:41:53;;;;;;;;;;;;;;;;;;214:42:133;202:55;;;184:74;;172:2;157:18;2035:41:53;;;;;;;;2275:248:110;;;;;;;;;;-1:-1:-1;2275:248:110;;;;;:::i;:::-;;:::i;6438:96:53:-;;;;;;;;;;-1:-1:-1;6514:13:53;6438:96;;7027:180;;;;;;;;;;;;;:::i;6686:82::-;;;;;;;;;;-1:-1:-1;6753:8:53;6686:82;;9452:3746;;;;;;;;;;-1:-1:-1;9452:3746:53;;;;;:::i;:::-;;:::i;810:29:110:-;;;;;;;;;;-1:-1:-1;810:29:110;;;;;;;;5242:41:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3246:18::-;;;;;;;;;;-1:-1:-1;3246:18:53;;;;;;;;;;;5921:14:133;;5914:22;5896:41;;5884:2;5869:18;3246::53;5756:187:133;1730:321:110;;;;;;;;;;-1:-1:-1;1730:321:110;;;;;:::i;:::-;;:::i;21149:181:53:-;;;;;;;;;;-1:-1:-1;21149:181:53;;;;;:::i;:::-;;:::i;2468:33::-;;;;;;;;;;;;;;;6810:173;;;;;;;;;;;;;:::i;13311:4839::-;;;;;;;;;;-1:-1:-1;13311:4839:53;;;;;:::i;:::-;;:::i;6200:90::-;;;;;;;;;;-1:-1:-1;6274:9:53;6200:90;;2757:23;;;;;;;;;;-1:-1:-1;2757:23:53;;;;;;;;2871:52;;;;;;;;;;-1:-1:-1;2871:52:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;7700:120;;;;;;;;;;-1:-1:-1;7700:120:53;;;;;:::i;:::-;;:::i;:::-;;;7427:18:133;7415:31;;;7397:50;;7385:2;7370:18;7700:120:53;7253:200:133;2999:28:55;;;;;;;;;;-1:-1:-1;2999:28:55;;;;;;;;;;;;;;;;;;;;;;;;;7686:34:133;7674:47;;;7656:66;;7741:18;7795:15;;;7790:2;7775:18;;7768:43;7847:15;;7827:18;;;7820:43;7644:2;7629:18;2999:28:55;7458:411:133;1277:92:110;;;;;;;;;;-1:-1:-1;1277:92:110;;;;;:::i;:::-;;:::i;3005:61:53:-;;;;;;;;;;-1:-1:-1;3005:61:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8426:25:133;;;8470:34;8540:15;;;8535:2;8520:18;;8513:43;8592:15;;8572:18;;;8565:43;8414:2;8399:18;3005:61:53;8224:390:133;18880:1971:53;;;;;;:::i;:::-;;:::i;2240:43::-;;;;;;;;;;;;;;;1431:155:110;;;;;;;;;;-1:-1:-1;1431:155:110;;;;;:::i;:::-;;:::i;18880:1971:53:-;19086:9;3417:18:55;3438:9;3417:30;;19240:11:53::1;19236:136;;;19275:17;::::0;::::1;::::0;19267:94:::1;;;::::0;;-1:-1:-1;;;19267:94:53;;9689:2:133;19267:94:53::1;::::0;::::1;9671:21:133::0;9708:18;;;9701:30;;;;9767:34;9747:18;;;9740:62;9838:34;9818:18;;;9811:62;9890:19;;19267:94:53::1;;;;;;;;;19540:37;19563:5;:12;19540:15;:37::i;:::-;19527:50;;:9;:50;;;;19519:98;;;::::0;-1:-1:-1;;;19519:98:53;;10122:2:133;19519:98:53::1;::::0;::::1;10104:21:133::0;10161:2;10141:18;;;10134:30;10200:34;10180:18;;;10173:62;10271:5;10251:18;;;10244:33;10294:19;;19519:98:53::1;9920:399:133::0;19519:98:53::1;20012:7;19996:5;:12;:23;;19988:66;;;::::0;-1:-1:-1;;;19988:66:53;;10526:2:133;19988:66:53::1;::::0;::::1;10508:21:133::0;10565:2;10545:18;;;10538:30;10604:32;10584:18;;;10577:60;10654:18;;19988:66:53::1;10324:354:133::0;19988:66:53::1;20160:10;20198:9;20184:23:::0;::::1;20180:108;;-1:-1:-1::0;20266:10:53::1;741:42:123::0;1213:27;20180:108:53::1;20545:23;20588:9;20599:6;20607:9;20618:11;20631:5;20571:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20545:92;;1716:1;20811:3;20784:60;;20805:4;20784:60;;;20833:10;20784:60;;;;;;:::i;:::-;;;;;;;;19101:1750;;3548:29:55::0;3557:7;3566:10;3548:8;:29::i;:::-;3339:245;18880:1971:53;;;;;;:::o;2275:248:110:-;2396:4;2379:14;2417:100;2441:6;2437:1;:10;2417:100;;;2468:38;2498:4;;2503:1;2498:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2468:38;;;:::i;:::-;2449:3;;;;:::i;:::-;;;;2417:100;;;;2369:154;2275:248;;:::o;7027:180:53:-;7073:10;:22;7087:8;7073:22;;7065:76;;;;-1:-1:-1;;;7065:76:53;;12978:2:133;7065:76:53;;;12960:21:133;13017:2;12997:18;;;12990:30;13056:34;13036:18;;;13029:62;13127:11;13107:18;;;13100:39;13156:19;;7065:76:53;12776:405:133;7065:76:53;7151:6;:14;;;;;;7180:20;;7189:10;184:74:133;;7180:20:53;;172:2:133;157:18;7180:20:53;;;;;;;;7027:180::o;9452:3746::-;5112:6;;;;:15;5104:50;;;;-1:-1:-1;;;5104:50:53;;13388:2:133;5104:50:53;;;13370:21:133;13427:2;13407:18;;;13400:30;13466:24;13446:18;;;13439:52;13508:18;;5104:50:53;13186:346:133;5104:50:53;9982:4:::1;9960:27;;:3;:10;;;:27;;::::0;9952:103:::1;;;::::0;-1:-1:-1;;;9952:103:53;;13739:2:133;9952:103:53::1;::::0;::::1;13721:21:133::0;13778:2;13758:18;;;13751:30;13817:34;13797:18;;;13790:62;13888:33;13868:18;;;13861:61;13939:19;;9952:103:53::1;13537:427:133::0;9952:103:53::1;10253:37;::::0;;;;::::1;::::0;::::1;14115:25:133::0;;;10232:18:53::1;::::0;10253:9:::1;:21;;::::0;::::1;::::0;14088:18:133;;10253:37:53::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48:::0;;-1:-1:-1;10435:45:53::1;;;::::0;;::::1;::::0;::::1;10463:16:::0;10435:45:::1;:::i;:::-;:27;:45::i;:::-;10421:10;:59;10400:135;;;::::0;-1:-1:-1;;;10400:135:53;;15823:2:133;10400:135:53::1;::::0;::::1;15805:21:133::0;15862:2;15842:18;;;15835:30;15901:34;15881:18;;;15874:62;15972:11;15952:18;;;15945:39;16001:19;;10400:135:53::1;15621:405:133::0;10400:135:53::1;10646:22;10671:27;10694:3;10671:22;:27::i;:::-;10708:40;10751:33:::0;;;:17:::1;:33;::::0;;;;;;;;10708:76;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;;::::0;;;;;;;10646:52;;-1:-1:-1;10708:76:53;11338:31;;:146:::1;;-1:-1:-1::0;11457:27:53;;11411:30:::1;::::0;;::::1;::::0;11389:53;;;;;16207:34:133;16195:47;;;11389:53:53::1;::::0;::::1;16177:66:133::0;11389:9:53::1;:21;;::::0;::::1;::::0;16150:18:133;;11389:53:53::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64:::0;:95:::1;;11338:146;11317:248;;;::::0;-1:-1:-1;;;11317:248:53;;16456:2:133;11317:248:53::1;::::0;::::1;16438:21:133::0;16495:2;16475:18;;;16468:30;16534:34;16514:18;;;16507:62;16605:25;16585:18;;;16578:53;16648:19;;11317:248:53::1;16254:419:133::0;11317:248:53::1;11845:147;::::0;;::::1;::::0;::::1;16852:25:133::0;;;11801:18:53::1;16893::133::0;;;16886:34;;;16825:18;;11845:147:53::1;::::0;;-1:-1:-1;;11845:147:53;;::::1;::::0;;;;;;11822:180;;11845:147:::1;11822:180:::0;;::::1;::::0;12410:22;;::::1;14115:25:133::0;;;11822:180:53;-1:-1:-1;12355:161:53::1;::::0;14088:18:133;12410:22:53::1;::::0;;-1:-1:-1;;12410:22:53;;::::1;::::0;;;12355:161;;::::1;::::0;;;::::1;::::0;;::::1;12410:22;12355:161:::0;::::1;::::0;12410:22;12355:161:::1;12443:16:::0;;12355:161:::1;:::i;:::-;12461:16;:41;;;12355:37;:161::i;:::-;12334:258;;;::::0;-1:-1:-1;;;12334:258:53;;18254:2:133;12334:258:53::1;::::0;::::1;18236:21:133::0;18293:2;18273:18;;;18266:30;18332:34;18312:18;;;18305:62;18403:20;18383:18;;;18376:48;18441:19;;12334:258:53::1;18052:414:133::0;12334:258:53::1;12910:165;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;12996:15;12910:165:::0;::::1;;::::0;;::::1;::::0;;;;;::::1;::::0;;;;;;-1:-1:-1;12874:33:53;;;:17:::1;:33:::0;;;;;:201;;;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;;::::1;::::0;;;;13180:10;;::::1;::::0;13168;;::::1;::::0;13135:56;;::::1;::::0;;::::1;::::0;;;::::1;::::0;12892:14;;13135:56:::1;::::0;-1:-1:-1;13135:56:53::1;9715:3483;;;;9452:3746:::0;;;;;:::o;1730:321:110:-;1804:10;:22;1818:8;1804:22;;1796:91;;;;-1:-1:-1;;;1796:91:110;;18673:2:133;1796:91:110;;;18655:21:133;18712:2;18692:18;;;18685:30;18751:34;18731:18;;;18724:62;18822:26;18802:18;;;18795:54;18866:19;;1796:91:110;18471:420:133;1796:91:110;1919:14;;;;;;1905:28;;;;1897:65;;;;-1:-1:-1;;;1897:65:110;;19098:2:133;1897:65:110;;;19080:21:133;19137:2;19117:18;;;19110:30;19176:26;19156:18;;;19149:54;19220:18;;1897:65:110;18896:348:133;1897:65:110;1973:14;:27;;;;;;;;;;;;;2015:29;;;;-1:-1:-1;;2015:29:110;1730:321;:::o;21149:181:53:-;21275:37;;;;;;;;14115:25:133;;;21223:4:53;;21246:77;;21275:21;:9;:21;;;;14088:18:133;;21275:37:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;;21246:77;;:28;:77::i;:::-;21239:84;21149:181;-1:-1:-1;;21149:181:53:o;6810:173::-;6854:10;:22;6868:8;6854:22;;6846:74;;;;-1:-1:-1;;;6846:74:53;;19451:2:133;6846:74:53;;;19433:21:133;19490:2;19470:18;;;19463:30;19529:34;19509:18;;;19502:62;19600:9;19580:18;;;19573:37;19627:19;;6846:74:53;19249:403:133;6846:74:53;6930:6;:13;;;;6939:4;6930:13;;;6958:18;;6965:10;184:74:133;;6958:18:53;;172:2:133;157:18;6958::53;14:250:133;13311:4839:53;5112:6;;;;:15;5104:50;;;;-1:-1:-1;;;5104:50:53;;13388:2:133;5104:50:53;;;13370:21:133;13427:2;13407:18;;;13400:30;13466:24;13446:18;;;13439:52;13508:18;;5104:50:53;13186:346:133;5104:50:53;13677:8:::1;::::0;:39:::1;:8;1337:42:64;13677:39:53;13656:137;;;::::0;-1:-1:-1;;;13656:137:53;;19859:2:133;13656:137:53::1;::::0;::::1;19841:21:133::0;19898:2;19878:18;;;19871:30;19937:34;19917:18;;;19910:62;20008:33;19988:18;;;19981:61;20059:19;;13656:137:53::1;19657:427:133::0;13656:137:53::1;13876:22;13901:27;13924:3;13901:22;:27::i;:::-;13938:40;13981:33:::0;;;:17:::1;:33;::::0;;;;;;;13938:76;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;;::::0;;;;;;;13876:52;;-1:-1:-1;14264:31:53;;14256:94:::1;;;::::0;-1:-1:-1;;;14256:94:53;;20291:2:133;14256:94:53::1;::::0;::::1;20273:21:133::0;20330:2;20310:18;;;20303:30;20369:34;20349:18;;;20342:62;20440:20;20420:18;;;20413:48;20478:19;;14256:94:53::1;20089:414:133::0;14256:94:53::1;14667:9;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14637:16;:26;;;:59;;;;14616:181;;;::::0;-1:-1:-1;;;14616:181:53;;20899:2:133;14616:181:53::1;::::0;::::1;20881:21:133::0;20938:2;20918:18;;;20911:30;20977:34;20957:18;;;20950:62;21048:34;21028:18;;;21021:62;21120:13;21099:19;;;21092:42;21151:19;;14616:181:53::1;20697:479:133::0;14616:181:53::1;15187:56;15216:16;:26;;;15187:56;;:28;:56::i;:::-;15166:172;;;::::0;-1:-1:-1;;;15166:172:53;;21383:2:133;15166:172:53::1;::::0;::::1;21365:21:133::0;21422:2;21402:18;;;21395:30;21461:34;21441:18;;;21434:62;21532:34;21512:18;;;21505:62;21604:7;21583:19;;;21576:36;21629:19;;15166:172:53::1;21181:473:133::0;15166:172:53::1;15570:30;::::0;;::::1;::::0;15548:53;;;;;16207:34:133;16195:47;;;15548:53:53::1;::::0;::::1;16177:66:133::0;15509:36:53::1;::::0;15548:9:::1;:21;;::::0;::::1;::::0;16150:18:133;;15548:53:53::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15912:27:::0;;15889:19;;15509:92;;-1:-1:-1;15889:50:53::1;15868:170;;;::::0;-1:-1:-1;;;15868:170:53;;21861:2:133;15868:170:53::1;::::0;::::1;21843:21:133::0;21900:2;21880:18;;;21873:30;21939:34;21919:18;;;21912:62;22010:34;21990:18;;;21983:62;22082:11;22061:19;;;22054:40;22111:19;;15868:170:53::1;21659:477:133::0;15868:170:53::1;16137:48;16166:8;:18;;;16137:48;;:28;:48::i;:::-;16116:162;;;::::0;-1:-1:-1;;;16116:162:53;;22343:2:133;16116:162:53::1;::::0;::::1;22325:21:133::0;22382:2;22362:18;;;22355:30;22421:34;22401:18;;;22394:62;22492:34;22472:18;;;22465:62;22564:5;22543:19;;;22536:34;22587:19;;16116:162:53::1;22141:471:133::0;16116:162:53::1;16394:36;::::0;;;:20:::1;:36;::::0;;;;;::::1;;:45;16386:111;;;::::0;-1:-1:-1;;;16386:111:53;;22819:2:133;16386:111:53::1;::::0;::::1;22801:21:133::0;22858:2;22838:18;;;22831:30;22897:34;22877:18;;;22870:62;22968:23;22948:18;;;22941:51;23009:19;;16386:111:53::1;22617:417:133::0;16386:111:53::1;16577:36;::::0;;;:20:::1;:36;::::0;;;;;;;:43;;;::::1;16616:4;16577:43;::::0;;16725:10;;::::1;::::0;16714:8:::1;:21:::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;17394:10;::::1;::::0;17406:12:::1;::::0;::::1;::::0;17420:9:::1;::::0;::::1;::::0;17431:8:::1;::::0;::::1;::::0;17370:70:::1;::::0;17394:10;17406:12;17420:9;17370:23:::1;:70::i;:::-;17508:8;:38:::0;;;::::1;1337:42:64;17508:38:53;::::0;;17705:44:::1;::::0;17355:85;;-1:-1:-1;17725:14:53;;17705:44:::1;::::0;::::1;::::0;17355:85;5921:14:133;5914:22;5896:41;;5884:2;5869:18;;5756:187;17705:44:53::1;;;;;;;;18013:16:::0;::::1;::::0;::::1;:61;;-1:-1:-1::0;18033:9:53::1;1015:1:64;18033:41:53;18013:61;18009:135;;;18090:43;::::0;-1:-1:-1;;;18090:43:53;;23241:2:133;18090:43:53::1;::::0;::::1;23223:21:133::0;23280:2;23260:18;;;23253:30;23319:34;23299:18;;;23292:62;23390:3;23370:18;;;23363:31;23411:19;;18090:43:53::1;23039:397:133::0;18009:135:53::1;13411:4739;;;;13311:4839:::0;:::o;7700:120::-;7765:6;7790:15;:10;7803:2;7790:15;:::i;:::-;:23;;7808:5;7790:23;:::i;1277:92:110:-;1337:25;1354:7;1337:16;:25::i;:::-;1277:92;:::o;1431:155::-;1518:14;:32;;;;;;;;;;1560:19;1571:7;1560:10;:19::i;:::-;1431:155;;:::o;5871:177:53:-;3100:19:26;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:26;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:26;1465:19:34;:23;;;3208:55:26;;-1:-1:-1;3246:12:26;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:26;;24159:2:133;3146:190:26;;;24141:21:133;24198:2;24178:18;;;24171:30;24237:34;24217:18;;;24210:62;24308:16;24288:18;;;24281:44;24342:19;;3146:190:26;23957:410:133;3146:190:26;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;5942:8:53::1;:38:::0;;;::::1;1337:42:64;5942:38:53;::::0;;5990:6:::1;:16:::0;;;::::1;;::::0;;;::::1;;::::0;;6016:25:::1;:23;:25::i;:::-;3461:14:26::0;3457:99;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;24524:36:133;;3531:14:26;;24512:2:133;24497:18;3531:14:26;;;;;;;3090:472;5871:177:53;:::o;1175:320:34:-;1465:19;;;:23;;;1175:320::o;3817:4037:55:-;3984:6;:19;3949:17;;3969:34;;3984:19;;;;;3969:12;:34;:::i;:::-;3949:54;;4014:28;4045:17;:15;:17::i;:::-;4014:48;;4072:26;4171:6;:27;;;4163:36;;4128:6;:23;;;4120:32;;4113:87;;;;:::i;:::-;4072:128;-1:-1:-1;4215:13:55;;4211:2229;;4572:6;:20;4535:19;;4557:59;;4597:19;;4572:20;;;;;4557:59;:::i;:::-;4535:81;;4630:19;4761:6;:34;;;4753:43;;4724:19;:73;;;;:::i;:::-;4668:6;:18;4653:50;;4691:12;;4668:18;;4653:50;:::i;:::-;4652:146;;;;:::i;:::-;5017:6;:18;4630:168;;-1:-1:-1;4939:17:55;;4959:232;;5002:50;;4630:168;;5017:18;;5002:50;:::i;:::-;5091:6;:21;;;5083:30;;5153:6;:21;;;5145:30;;4959:16;:232::i;:::-;4939:252;;5468:1;5456:9;:13;5452:741;;;5741:437;5788:239;5845:10;5910:6;:34;;;5902:43;;6002:1;5990:9;:13;;;;:::i;:::-;5788:16;:239::i;5741:437::-;5728:450;;5452:741;6286:49;;6387:42;6349:24;6416:12;6387:42;;;6286:6;6387:42;-1:-1:-1;;4211:2229:55;6534:6;:31;;6558:7;;6534:6;:20;;:31;;6558:7;;6534:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6652:6;:23;;;6644:32;;6611:6;:20;;;;;;;;;;;;6603:29;;6596:81;;6575:190;;;;-1:-1:-1;;;6575:190:55;;26811:2:133;6575:190:55;;;26793:21:133;26850:2;26830:18;;;26823:30;26889:34;26869:18;;;26862:62;26960:32;26940:18;;;26933:60;27010:19;;6575:190:55;26609:426:133;6575:190:55;6877:6;:18;6827:20;;6850:46;;6877:18;;6850:16;;;:46;:::i;:::-;6827:69;;7378:15;7411:31;7420:13;7435:6;7411:8;:31::i;:::-;7396:46;;:12;:46;:::i;:::-;7378:64;;7722:15;7754:9;7740:23;;:11;:23;:::i;:::-;7722:41;;7787:7;7777;:17;7773:75;;;7810:27;7819:17;7829:7;7819;:17;:::i;:::-;7810:8;:27::i;:::-;3881:3973;;;;;;3817:4037;;:::o;4937:384:66:-;5036:7;5113:16;:24;;;5155:16;:26;;;5199:16;:41;;;5258:16;:32;;;5085:219;;;;;;;;;;27629:25:133;;;27685:2;27670:18;;27663:34;;;;27728:2;27713:18;;27706:34;27771:2;27756:18;;27749:34;27616:3;27601:19;;27398:391;5085:219:66;;;;;;;;;;;;;5062:252;;;;;;5055:259;;4937:384;;;:::o;4432:211::-;4566:9;;4577:10;;;;;4589;;;;;4601:9;;;;4612:12;;;;4626:8;;;;4555:80;;4519:7;;4555:80;;4566:9;;4577:10;4626:8;4555:80;;:::i;1041:343:74:-;1234:11;1261:16;1280:19;1294:4;1280:13;:19::i;:::-;1261:38;;1318:59;1350:3;1355:6;1363;1371:5;1318:31;:59::i;:::-;1309:68;1041:343;-1:-1:-1;;;;;;1041:343:74:o;2943:1256:110:-;3053:14;;3033:4;;3053:28;:14;:28;;;;:60;;-1:-1:-1;3099:14:110;;;;3085:10;:28;3053:60;3049:1081;;;3954:16;4002:9;3973:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3954:81;;;;4064:10;4053:8;:21;4049:71;;;-1:-1:-1;4101:4:110;;2943:1256;-1:-1:-1;;2943:1256:110:o;4049:71::-;3115:1015;3049:1081;4146:46;4181:10;4146:34;:46::i;4419:2320:68:-;4589:4;4609:13;4632:15;4650:21;4660:7;4669:1;4650:9;:21::i;:::-;4632:39;;4782:10;4772:1146;;4894:10;4891:1;4884:21;5009:2;5005;4998:14;5747:56;5743:2;5736:68;5900:3;5896:2;5889:15;4772:1146;6666:4;6630;6589:9;6583:16;6549:2;6538:9;6534:18;6491:6;6449:7;6415:5;6389:309;6361:337;4419:2320;-1:-1:-1;;;;;;;4419:2320:68:o;8362:180:55:-;4888:13:26;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:26;;28870:2:133;4880:69:26;;;28852:21:133;28909:2;28889:18;;;28882:30;28948:34;28928:18;;;28921:62;29019:13;28999:18;;;28992:41;29050:19;;4880:69:26;28668:407:133;4880:69:26;8442:93:55::1;::::0;;::::1;::::0;::::1;::::0;;8472:6:::1;8442:93:::0;;;-1:-1:-1;8442:93:55::1;::::0;::::1;::::0;8519:12:::1;8442:93;;::::0;;;;;;;8433:102;::::1;;:6;:102:::0;8362:180::o;8911:153:53:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9027:13:53;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9020:37;;8911:153;:::o;537:161:61:-;616:6;641:50;656:28;671:6;679:4;656:14;:28::i;:::-;686:4;641:14;:50::i;:::-;634:57;;537:161;;;;;;:::o;1040:228::-;1138:6;1257:4;1180:72;1213:19;1220:12;1257:4;1213:19;:::i;:::-;1205:28;;:4;:28;:::i;:::-;1235:16;:9;1247:4;1235:16;:::i;:::-;1180:24;:72::i;:::-;1164:89;;:12;:89;:::i;:::-;1163:98;;;;:::i;413:105:41:-;471:7;502:1;497;:6;;:14;;510:1;497:14;;;-1:-1:-1;506:1:41;;490:21;-1:-1:-1;413:105:41:o;407:192:62:-;461:9;484:18;505:9;484:30;;524:69;556:7;544:9;531:22;;:10;:22;:::i;:::-;:32;524:69;;;579:3;;;:::i;:::-;;;524:69;;;451:148;;407:192;:::o;2052:142:74:-;2116:18;2181:4;2171:15;;;;;;2154:33;;;;;;30439:19:133;;30483:2;30474:12;;30310:182;2154:33:74;;;;;;;;;;;;;2146:41;;2052:142;;;:::o;2253:281:73:-;2446:11;2482:45;2494:6;2502:24;2506:4;2512:6;2520:5;2502:3;:24::i;:::-;6693:17:63;;;;;;;6672;;;;;;;;;;:38;;6569:148;2482:45:73;2473:54;2253:281;-1:-1:-1;;;;;2253:281:73:o;21583:189:53:-;21672:4;21726:9;:37;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21713:52;;:10;:52;:::i;:::-;21695:15;:70;;21583:189;-1:-1:-1;;21583:189:53:o;3615:365:68:-;3696:4;3712:15;3931:2;3916:12;3909:5;3905:24;3901:33;3896:2;3887:7;3883:16;3879:56;3874:2;3867:5;3863:14;3860:76;3853:84;;3615:365;-1:-1:-1;;;;3615:365:68:o;311:102:42:-;367:6;397:1;392;:6;;:14;;405:1;392:14;;491:101;547:6;576:1;572;:5;:13;;584:1;572:13;;1208:273:45;1267:6;1391:36;491:4;1410:1;1399:8;1405:1;1399:5;:8::i;:::-;:12;;;;:::i;:::-;1398:28;;;;:::i;:::-;1391:6;:36::i;2830:6314:73:-;2923:19;2976:1;2962:4;:11;:15;2954:49;;;;-1:-1:-1;;;2954:49:73;;30832:2:133;2954:49:73;;;30814:21:133;30871:2;30851:18;;;30844:30;30910:23;30890:18;;;30883:51;30951:18;;2954:49:73;30630:345:133;2954:49:73;3014:23;3040:19;3052:6;3040:11;:19::i;:::-;3014:45;;3069:16;3088:21;3104:4;3088:15;:21::i;:::-;3069:40;;3119:26;3165:5;3148:23;;;;;;30439:19:133;;30483:2;30474:12;;30310:182;3148:23:73;;;;;;;;;;;;;3119:52;;3181:23;3295:9;3290:5790;3314:5;:12;3310:1;:16;3290:5790;;;3347:27;3377:5;3383:1;3377:8;;;;;;;;:::i;:::-;;;;;;;3347:38;;3516:3;:10;3497:15;:29;;3489:88;;;;-1:-1:-1;;;3489:88:73;;31182:2:133;3489:88:73;;;31164:21:133;31221:2;31201:18;;;31194:30;31260:34;31240:18;;;31233:62;31331:16;31311:18;;;31304:44;31365:19;;3489:88:73;30980:410:133;3489:88:73;3596:15;3615:1;3596:20;3592:837;;3768:19;;3758:30;;;;;;;3741:48;;3729:76;;3741:48;;3758:30;3741:48;30439:19:133;;;30483:2;30474:12;;30310:182;3741:48:73;;;;;;;;;;;;;3791:13;6693:17:63;;;;;;;6672;;;;;;;;;;:38;;6569:148;3729:76:73;3700:176;;;;-1:-1:-1;;;3700:176:73;;31597:2:133;3700:176:73;;;31579:21:133;31636:2;31616:18;;;31609:30;31675:31;31655:18;;;31648:59;31724:18;;3700:176:73;31395:353:133;3700:176:73;3592:837;;;3901:19;;:26;3931:2;-1:-1:-1;3897:532:73;;4097:19;;4087:30;;;;;;;4070:48;;4058:76;;4070:48;;4087:30;4070:48;30439:19:133;;;30483:2;30474:12;;30310:182;4058:76:73;4029:186;;;;-1:-1:-1;;;4029:186:73;;31955:2:133;4029:186:73;;;31937:21:133;31994:2;31974:18;;;31967:30;32033:34;32013:18;;;32006:62;32104:9;32084:18;;;32077:37;32131:19;;4029:186:73;31753:403:133;3897:532:73;4336:19;;6693:17:63;;;;;;;;;;6672;;;;;;;:38;4316:98:73;;;;-1:-1:-1;;;4316:98:73;;32363:2:133;4316:98:73;;;32345:21:133;32402:2;32382:18;;;32375:30;32441:34;32421:18;;;32414:62;32512:8;32492:18;;;32485:36;32538:19;;4316:98:73;32161:402:133;4316:98:73;936:14;803:2;949:1;936:14;:::i;:::-;4447:11;:19;;;:26;:48;4443:4627;;4538:3;:10;4519:15;:29;4515:1346;;5047:52;5067:11;:19;;;803:2;5067:31;;;;;;;;:::i;:::-;;;;;;;5047:19;:52::i;:::-;5038:61;;5145:1;5129:6;:13;:17;5121:89;;;;-1:-1:-1;;;5121:89:73;;32770:2:133;5121:89:73;;;32752:21:133;32809:2;32789:18;;;32782:30;32848:34;32828:18;;;32821:62;32919:29;32899:18;;;32892:57;32966:19;;5121:89:73;32568:423:133;5121:89:73;5322:1;5307:5;:12;:16;;;;:::i;:::-;5302:1;:21;5294:92;;;;-1:-1:-1;;;5294:92:73;;33198:2:133;5294:92:73;;;33180:21:133;33237:2;33217:18;;;33210:30;33276:34;33256:18;;;33249:62;33347:28;33327:18;;;33320:56;33393:19;;5294:92:73;32996:422:133;5294:92:73;5409:13;;;;;;;;4515:1346;5609:15;5633:3;5637:15;5633:20;;;;;;;;:::i;:::-;;;;;;;;;5627:27;;5609:45;;5676:33;5712:11;:19;;;5732:9;5712:30;;;;;;;;;;:::i;:::-;;;;;;;5676:66;;5780:20;5791:8;5780:10;:20::i;:::-;5764:36;-1:-1:-1;5822:20:73;5841:1;5822:20;;:::i;:::-;;;5447:414;;4443:4627;;;1105:1;5885:11;:19;;;:26;:59;5881:3189;;5964:17;5984:25;5997:11;5984:12;:25::i;:::-;5964:45;;6027:12;6048:4;6053:1;6048:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6074:12:73;6094:10;6103:1;6048:7;6094:10;:::i;:::-;6089:16;;:1;:16;:::i;:::-;6074:31;;6123:26;6152:25;6164:4;6170:6;6152:25;;:11;:25::i;:::-;6123:54;;6195:25;6223:33;6235:3;6240:15;6223:11;:33::i;:::-;6195:61;;6274:26;6303:51;6326:13;6341:12;6303:22;:51::i;:::-;6274:80;;6661:18;6637:13;:20;:42;6608:171;;;;-1:-1:-1;;;6608:171:73;;33987:2:133;6608:171:73;;;33969:21:133;34026:2;34006:18;;;33999:30;34065:34;34045:18;;;34038:62;34136:28;34116:18;;;34109:56;34182:19;;6608:171:73;33785:422:133;6608:171:73;6802:26;;;1447:1;6802:26;;:55;;-1:-1:-1;6832:25:73;;;1553:1;6832:25;6802:55;6798:2169;;;7498:18;7475:12;:19;:41;7442:185;;;;-1:-1:-1;;;7442:185:73;;34414:2:133;7442:185:73;;;34396:21:133;34453:2;34433:18;;;34426:30;34492:34;34472:18;;;34465:62;34563:31;34543:18;;;34536:59;34612:19;;7442:185:73;34212:425:133;7442:185:73;7985:43;8005:11;:19;;;8025:1;8005:22;;;;;;;;:::i;7985:43::-;7976:52;;8074:1;8058:6;:13;:17;8050:87;;;;-1:-1:-1;;;8050:87:73;;34844:2:133;8050:87:73;;;34826:21:133;34883:2;34863:18;;;34856:30;34922:34;34902:18;;;34895:62;34993:27;34973:18;;;34966:55;35038:19;;8050:87:73;34642:421:133;8050:87:73;8249:1;8234:5;:12;:16;;;;:::i;:::-;8229:1;:21;8221:90;;;;-1:-1:-1;;;8221:90:73;;35270:2:133;8221:90:73;;;35252:21:133;35309:2;35289:18;;;35282:30;35348:34;35328:18;;;35321:62;35419:26;35399:18;;;35392:54;35463:19;;8221:90:73;35068:420:133;8221:90:73;8334:13;;;;;;;;;;;;;;6798:2169;8376:31;;;;;:65;;-1:-1:-1;8411:30:73;;;1339:1;8411:30;8376:65;8372:595;;;8748:34;8759:11;:19;;;8779:1;8759:22;;;;;;;;:::i;:::-;;;;;;;8748:10;:34::i;:::-;8732:50;-1:-1:-1;8804:37:73;8823:18;8804:37;;:::i;:::-;;;8372:595;;;8888:60;;-1:-1:-1;;;8888:60:73;;35695:2:133;8888:60:73;;;35677:21:133;35734:2;35714:18;;;35707:30;35773:34;35753:18;;;35746:62;35844:20;35824:18;;;35817:48;35882:19;;8888:60:73;35493:414:133;8372:595:73;5946:3035;;;;;;5881:3189;;;9005:50;;-1:-1:-1;;;9005:50:73;;36114:2:133;9005:50:73;;;36096:21:133;36153:2;36133:18;;;36126:30;36192:34;36172:18;;;36165:62;36263:10;36243:18;;;36236:38;36291:19;;9005:50:73;35912:404:133;5881:3189:73;-1:-1:-1;3328:3:73;;;;:::i;:::-;;;;3290:5790;;;-1:-1:-1;9090:47:73;;-1:-1:-1;;;9090:47:73;;36523:2:133;9090:47:73;;;36505:21:133;36562:2;36542:18;;;36535:30;36601:34;36581:18;;;36574:62;36672:7;36652:18;;;36645:35;36697:19;;9090:47:73;36321:401:133;4596:2947:45;4644:8;4700:1;4696;:5;4688:27;;;;-1:-1:-1;;;4688:27:45;;36929:2:133;4688:27:45;;;36911:21:133;36968:1;36948:18;;;36941:29;37006:11;36986:18;;;36979:39;37035:18;;4688:27:45;36727:332:133;4688:27:45;5107:8;5145:2;5125:16;5138:1;5125:4;:16::i;:::-;5118:29;5175:3;:7;;;5161:22;;;;5208:17;;;6001:31;5997:35;;6052:5;;5459:2;6051:13;;;6068:32;6050:50;6120:5;;6119:13;;6136:33;6118:51;6189:5;;6188:13;;6205:33;6187:51;6258:5;;6257:13;;6274:33;6256:51;6327:5;;6326:13;;6343:32;6325:50;6395:5;;6394:13;;6411:30;6393:48;5398:31;5394:35;;5449:5;;5448:13;;5465:32;5447:50;5517:5;;5516:13;;5533:32;5515:50;5585:5;;5584:13;;5583:50;;5653:5;;5652:13;;5651:50;;5721:5;;5720:13;;;5719:50;;5787:5;;;:46;;6735:10;7125:43;7120:48;7232:71;:75;;;;7227:80;;;;7380:72;7375:77;7523:3;7517:9;;;-1:-1:-1;;4596:2947:45:o;1487:3103::-;1536:8;1718:21;1713:1;:26;1709:40;;-1:-1:-1;1748:1:45;;1487:3103;-1:-1:-1;1487:3103:45:o;1709:40::-;1948:21;1943:1;:26;1939:54;;1971:22;;-1:-1:-1;;;1971:22:45;;37266:2:133;1971:22:45;;;37248:21:133;37305:2;37285:18;;;37278:30;37344:14;37324:18;;;37317:42;37376:18;;1971:22:45;37064:336:133;1939:54:45;2266:5;2260:2;2255:7;;;2254:17;;-1:-1:-1;2535:8:45;2601:2;2559:29;2548:7;;;2547:41;2591:5;2547:49;2546:57;;2629:29;2625:33;;2621:37;;;3300:35;;;3355:5;;2935:2;3354:13;;;3371:32;3353:50;3423:5;;3422:13;;3421:51;;3492:5;;3491:13;;3508:34;3490:52;3562:5;;3561:13;;3560:53;;3633:5;;3632:13;;3649:35;3631:53;2941:32;2874:31;2870:35;;2925:5;;2924:13;;2923:50;;;2998:5;;;:40;;3058:5;3057:13;;;3074:35;3056:53;3127:5;;;3136:40;3127:50;4002:10;4502:49;4489:62;4564:3;:7;;;;4488:84;;;;;;-1:-1:-1;;1487:3103:45:o;9434:390:73:-;9553:13;;9500:24;;9553:13;9585:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;9585:22:73;;;;;;;;;;;;;;;;9576:31;;9622:9;9617:201;9641:6;9637:1;:10;9617:201;;;9676:72;;;;;;;;9696:6;9703:1;9696:9;;;;;;;;:::i;:::-;;;;;;;9676:72;;;;9716:29;9735:6;9742:1;9735:9;;;;;;;;:::i;:::-;;;;;;;9716:18;:29::i;:::-;9676:72;;;9664:6;9671:1;9664:9;;;;;;;;:::i;:::-;;;;;;;;;;:84;9790:3;;9617:201;;;;9526:298;9434:390;;;:::o;4332:1978:63:-;4395:12;4419:21;4550:4;4544:11;4532:23;;4663:6;4657:13;4836:11;4830:4;4826:22;5195:4;5180:13;5176:24;5169:4;5165:9;5161:40;5151:8;5147:55;5141:4;5134:69;5293:13;5283:8;5276:31;;5434:4;5426:6;5422:17;5571:4;5561:8;5557:19;5662:4;5647:622;5675:11;5672:1;5669:18;5647:622;;;5854:1;5848:4;5844:12;5830;5826:31;5996:1;5984:10;5980:18;5974:25;5968:4;5963:37;6119:1;6113:4;6109:12;6101:6;6093:29;6249:4;6246:1;6242:12;6235:4;6227:6;6223:17;6215:40;-1:-1:-1;;5702:4:63;5695:12;5647:622;;;-1:-1:-1;6295:8:63;;4332:1978;-1:-1:-1;;;;;4332:1978:63:o;3993:464:71:-;4055:17;4085:18;4105;4125:20;4149:18;4163:3;4149:13;:18::i;:::-;4084:83;;-1:-1:-1;4084:83:71;-1:-1:-1;4084:83:71;-1:-1:-1;4198:21:71;4186:8;:33;;;;;;;;:::i;:::-;;4178:103;;;;-1:-1:-1;;;4178:103:71;;37796:2:133;4178:103:71;;;37778:21:133;37835:2;37815:18;;;37808:30;37874:34;37854:18;;;37847:62;37945:27;37925:18;;;37918:55;37990:19;;4178:103:71;37594:421:133;4178:103:71;4314:23;4327:10;4314;:23;:::i;:::-;4300:10;;:37;4292:102;;;;-1:-1:-1;;;4292:102:71;;38222:2:133;4292:102:71;;;38204:21:133;38261:2;38241:18;;;38234:30;38300:34;38280:18;;;38273:62;38371:22;38351:18;;;38344:50;38411:19;;4292:102:71;38020:416:133;4292:102:71;4412:38;4418:3;:7;;;4427:10;4439;4412:5;:38::i;10121:193:73:-;10195:16;10244:2;10229:5;:12;;;:17;:78;;10281:26;10301:5;10281:19;:26::i;:::-;10229:78;;;10249:29;10272:5;10249:22;:29::i;10495:172::-;10562:21;10606:54;10622:37;10642:5;:13;;;10656:1;10642:16;;;;;;;;:::i;10622:37::-;10606:15;:54::i;3805:237:63:-;3880:12;3918:6;:13;3908:6;:23;3904:70;;-1:-1:-1;3954:9:63;;;;;;;;;-1:-1:-1;3954:9:63;;3947:16;;3904:70;3990:45;3996:6;4004;4028;4012;:13;:22;;;;:::i;:::-;3990:5;:45::i;10892:321:73:-;10980:15;11007:11;11034:2;:9;11022:2;:9;:21;11021:47;;11059:2;:9;11021:47;;;11047:2;:9;11021:47;11007:61;;11078:129;11095:3;11085:7;:13;:43;;;;;11117:2;11120:7;11117:11;;;;;;;;:::i;:::-;;;;;;;;;11102:26;;;:2;11105:7;11102:11;;;;;;;;:::i;:::-;;;;;;;:26;11085:43;11078:129;;;11173:9;;;;;11078:129;;;10997:216;10892:321;;;;:::o;15328:575:45:-;15376:9;15409:1;15405;:5;15397:27;;;;-1:-1:-1;;;15397:27:45;;36929:2:133;15397:27:45;;;36911:21:133;36968:1;36948:18;;;36941:29;37006:11;36986:18;;;36979:39;37035:18;;15397:27:45;36727:332:133;15397:27:45;-1:-1:-1;15821:1:45;15473:34;-1:-1:-1;;15467:1:45;15463:49;15566:9;;;15546:18;15543:33;15540:1;15536:41;15530:48;15624:9;;;15612:10;15609:25;15606:1;15602:33;15596:40;15678:9;;;15670:6;15667:21;15664:1;15660:29;15654:36;15730:9;;;15724:4;15721:19;15718:1;15714:27;;;15708:34;;;15781:9;;;15776:3;15773:18;15770:1;15766:26;15760:33;15832:9;;;15824:18;;;15817:26;;15811:33;15876:9;;;-1:-1:-1;15862:25:45;;15328:575::o;3732:130:71:-;3791:21;3831:24;3840:14;3850:3;3840:9;:14::i;:::-;3831:8;:24::i;5246:4079::-;5335:15;5352;5369:17;5705:1;5692:3;:10;;;:14;5684:101;;;;-1:-1:-1;;;5684:101:71;;38643:2:133;5684:101:71;;;38625:21:133;38682:2;38662:18;;;38655:30;38721:34;38701:18;;;38694:62;38792:34;38772:18;;;38765:62;38864:12;38843:19;;;38836:41;38894:19;;5684:101:71;38441:478:133;5684:101:71;5816:7;;;;5898:10;;5796:17;5890:19;5943:4;5933:14;;5929:3390;;5999:1;6002;6005:21;5991:36;;;;;;;;;;5929:3390;6058:4;6048:6;:14;6044:3275;;6164:14;6181:13;6190:4;6181:6;:13;:::i;:::-;6164:30;;6247:6;6234:3;:10;;;:19;6209:140;;;;-1:-1:-1;;;6209:140:71;;39126:2:133;6209:140:71;;;39108:21:133;39165:2;39145:18;;;39138:30;39204:34;39184:18;;;39177:62;39275:34;39255:18;;;39248:62;39347:16;39326:19;;;39319:45;39381:19;;6209:140:71;38924:482:133;6209:140:71;6471:1;6462:11;;;6456:18;6476:14;6452:39;;6544:11;;;;:41;;-1:-1:-1;6559:26:71;;;;;;6544:41;6519:177;;;;-1:-1:-1;;;6519:177:71;;39613:2:133;6519:177:71;;;39595:21:133;39652:2;39632:18;;;39625:30;39691:34;39671:18;;;39664:62;39762:34;39742:18;;;39735:62;39834:15;39813:19;;;39806:44;39867:19;;6519:177:71;39411:481:133;6519:177:71;-1:-1:-1;6719:1:71;;-1:-1:-1;6722:6:71;-1:-1:-1;6730:21:71;;-1:-1:-1;6711:41:71;;-1:-1:-1;;6711:41:71;6044:3275;6783:4;6773:6;:14;6769:2550;;6831:19;6853:13;6862:4;6853:6;:13;:::i;:::-;6831:35;;6919:11;6906:3;:10;;;:24;6881:164;;;;-1:-1:-1;;;6881:164:71;;40099:2:133;6881:164:71;;;40081:21:133;40138:2;40118:18;;;40111:30;40177:34;40157:18;;;40150:62;40248:34;40228:18;;;40221:62;40320:19;40299;;;40292:48;40357:19;;6881:164:71;39897:485:133;6881:164:71;7167:1;7158:11;;7152:18;7172:14;7148:39;7060:25;7240:26;;;7215:143;;;;-1:-1:-1;;;7215:143:71;;40589:2:133;7215:143:71;;;40571:21:133;40628:2;40608:18;;;40601:30;40667:34;40647:18;;;40640:62;40738:34;40718:18;;;40711:62;40810:12;40789:19;;;40782:41;40840:19;;7215:143:71;40387:478:133;7215:143:71;7488:1;7479:11;;7473:18;7455:1;7451:19;;7446:3;7442:29;7438:54;7537:2;7528:11;;7520:96;;;;-1:-1:-1;;;7520:96:71;;41072:2:133;7520:96:71;;;41054:21:133;41111:2;41091:18;;;41084:30;41150:34;41130:18;;;41123:62;41221:34;41201:18;;;41194:62;41293:10;41272:19;;;41265:39;41321:19;;7520:96:71;40870:476:133;7520:96:71;7669:20;7683:6;7669:11;:20;:::i;:::-;7656:10;;:33;7631:168;;;;-1:-1:-1;;;7631:168:71;;41553:2:133;7631:168:71;;;41535:21:133;41592:2;41572:18;;;41565:30;41631:34;41611:18;;;41604:62;41702:34;41682:18;;;41675:62;41774:14;41753:19;;;41746:43;41806:19;;7631:168:71;41351:480:133;7631:168:71;7822:15;7826:11;7822:1;:15;:::i;:::-;7814:55;-1:-1:-1;7839:6:71;-1:-1:-1;7847:21:71;;-1:-1:-1;7814:55:71;;-1:-1:-1;;;;7814:55:71;6769:2550;7900:4;7890:6;:14;7886:1433;;8003:15;8021:13;8030:4;8021:6;:13;:::i;:::-;8003:31;;8070:7;8057:3;:10;;;:20;8049:107;;;;-1:-1:-1;;;8049:107:71;;42038:2:133;8049:107:71;;;42020:21:133;42077:2;42057:18;;;42050:30;42116:34;42096:18;;;42089:62;42187:34;42167:18;;;42160:62;42259:12;42238:19;;;42231:41;42289:19;;8049:107:71;41836:478:133;8049:107:71;8179:1;;-1:-1:-1;8182:7:71;-1:-1:-1;8179:1:71;;-1:-1:-1;8171:42:71;;-1:-1:-1;;8171:42:71;7886:1433;8270:20;8293:13;8302:4;8293:6;:13;:::i;:::-;8270:36;;8359:12;8346:3;:10;;;:25;8321:161;;;;-1:-1:-1;;;8321:161:71;;42521:2:133;8321:161:71;;;42503:21:133;42560:2;42540:18;;;42533:30;42599:34;42579:18;;;42572:62;42670:34;42650:18;;;42643:62;42742:15;42721:19;;;42714:44;42775:19;;8321:161:71;42319:481:133;8321:161:71;8604:1;8595:11;;8589:18;8609:14;8585:39;8497:25;8677:26;;;8652:141;;;;-1:-1:-1;;;8652:141:71;;43007:2:133;8652:141:71;;;42989:21:133;43046:2;43026:18;;;43019:30;43085:34;43065:18;;;43058:62;43156:34;43136:18;;;43129:62;43228:10;43207:19;;;43200:39;43256:19;;8652:141:71;42805:476:133;8652:141:71;8926:1;8917:11;;8911:18;8892:1;8888:20;;8883:3;8879:30;8875:55;8976:2;8966:12;;8958:95;;;;-1:-1:-1;;;8958:95:71;;43488:2:133;8958:95:71;;;43470:21:133;43527:2;43507:18;;;43500:30;43566:34;43546:18;;;43539:62;43637:34;43617:18;;;43610:62;43709:8;43688:19;;;43681:37;43735:19;;8958:95:71;43286:474:133;8958:95:71;9106:22;9121:7;9106:12;:22;:::i;:::-;9093:10;;:35;9068:168;;;;-1:-1:-1;;;9068:168:71;;43967:2:133;9068:168:71;;;43949:21:133;44006:2;43986:18;;;43979:30;44045:34;44025:18;;;44018:62;44116:34;44096:18;;;44089:62;44188:12;44167:19;;;44160:41;44218:19;;9068:168:71;43765:478:133;9068:168:71;9259:16;9263:12;9259:1;:16;:::i;:::-;9251:57;-1:-1:-1;9277:7:71;-1:-1:-1;9286:21:71;;-1:-1:-1;9251:57:71;;-1:-1:-1;;;;9251:57:71;5246:4079;;;;;;:::o;9585:780::-;9676:17;9722:7;9712:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9712:18:71;-1:-1:-1;9705:25:71;-1:-1:-1;9740:54:71;;9772:11;9740:54;10053:11;10067:36;10096:7;10088:4;10067:36;:::i;:::-;10053:50;;10158:2;10152:4;10148:13;10183:1;10197:87;10211:7;10208:1;10205:14;10197:87;;;10269:11;;;10263:18;10249:12;;;10242:40;10234:2;10227:10;10197:87;;;10307:7;10304:1;10301:14;10298:51;;;10345:1;10335:7;10329:4;10325:18;10318:29;10298:51;;;10122:237;9585:780;;;;;:::o;4847:137::-;4912:17;4948:29;4954:3;:7;;;4963:1;4966:3;:10;;;4948:5;:29::i;660:2816:63:-;752:12;824:7;808;818:2;808:12;:23;;800:50;;;;-1:-1:-1;;;800:50:63;;44450:2:133;800:50:63;;;44432:21:133;44489:2;44469:18;;;44462:30;44528:16;44508:18;;;44501:44;44562:18;;800:50:63;44248:338:133;800:50:63;892:6;881:7;872:6;:16;:26;;864:53;;;;-1:-1:-1;;;864:53:63;;44450:2:133;864:53:63;;;44432:21:133;44489:2;44469:18;;;44462:30;44528:16;44508:18;;;44501:44;44562:18;;864:53:63;44248:338:133;864:53:63;965:7;956:6;:16;939:6;:13;:33;;931:63;;;;-1:-1:-1;;;931:63:63;;44793:2:133;931:63:63;;;44775:21:133;44832:2;44812:18;;;44805:30;44871:19;44851:18;;;44844:47;44908:18;;931:63:63;44591:341:133;931:63:63;1015:22;1078:15;;1106:1931;;;;3178:4;3172:11;3159:24;;3365:1;3354:9;3347:20;3413:4;3402:9;3398:20;3392:4;3385:34;1071:2362;;1106:1931;1288:4;1282:11;1269:24;;1947:2;1938:7;1934:16;2329:9;2322:17;2316:4;2312:28;2300:9;2289;2285:25;2281:60;2377:7;2373:2;2369:16;2629:6;2615:9;2608:17;2602:4;2598:28;2586:9;2578:6;2574:22;2570:57;2566:70;2403:389;2662:3;2658:2;2655:11;2403:389;;;2780:9;;2769:21;;2703:4;2695:13;;;;2735;2403:389;;;-1:-1:-1;;2810:26:63;;;3018:2;3001:11;-1:-1:-1;;2997:25:63;2991:4;2984:39;-1:-1:-1;1071:2362:63;-1:-1:-1;3460:9:63;660:2816;-1:-1:-1;;;;660:2816:63:o;1298:390:71:-;-1:-1:-1;;;;;;;;;;;;;;;;;1453:1:71;1440:3;:10;:14;1432:101;;;;-1:-1:-1;;;1432:101:71;;38643:2:133;1432:101:71;;;38625:21:133;38682:2;38662:18;;;38655:30;38721:34;38701:18;;;38694:62;38792:34;38772:18;;;38765:62;38864:12;38843:19;;;38836:41;38894:19;;1432:101:71;38441:478:133;1432:101:71;-1:-1:-1;1640:41:71;;;;;;;;;1658:10;;1640:41;;1610:2;1601:12;;;1640:41;;;;;;;;1298:390::o;1840:1740::-;1901:21;1935:18;1955;1975:20;1999:18;2013:3;1999:13;:18::i;:::-;1934:83;;-1:-1:-1;1934:83:71;-1:-1:-1;1934:83:71;-1:-1:-1;2048:21:71;2036:8;:33;;;;;;;;:::i;:::-;;2028:102;;;;-1:-1:-1;;;2028:102:71;;45139:2:133;2028:102:71;;;45121:21:133;45178:2;45158:18;;;45151:30;45217:34;45197:18;;;45190:62;45288:26;45268:18;;;45261:54;45332:19;;2028:102:71;44937:420:133;2028:102:71;2176:10;;2149:23;2162:10;2149;:23;:::i;:::-;:37;2141:100;;;;-1:-1:-1;;;2141:100:71;;45564:2:133;2141:100:71;;;45546:21:133;45603:2;45583:18;;;45576:30;45642:34;45622:18;;;45615:62;45713:20;45693:18;;;45686:48;45751:19;;2141:100:71;45362:414:133;2141:100:71;2651:30;;;1123:2;2651:30;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2651:30:71;;;;;;;;;;;;;;-1:-1:-1;2644:37:71;-1:-1:-1;2692:17:71;2740:10;2760:681;2776:10;;2767:19;;2760:681;;;2803:18;2823;2846:150;2877:105;;;;;;;;2908:6;2895:3;:10;;;:19;;;;:::i;:::-;2877:105;;;;2972:6;2961:3;:7;;;2940:38;;;;:::i;:::-;2877:105;;2846:13;:150::i;:::-;2802:194;;;;;3201:153;;;;;;;;3248:10;3235;:23;;;;:::i;:::-;3201:153;;;;3332:6;3321:3;:7;;;3300:38;;;;:::i;:::-;3201:153;;;3183:4;3188:9;3183:15;;;;;;;;:::i;:::-;;;;;;;;;;:171;3369:14;3382:1;3369:14;;:::i;:::-;;-1:-1:-1;3407:23:71;3420:10;3407;:23;:::i;:::-;3397:33;;;;:::i;:::-;;;2788:653;;2760:681;;;-1:-1:-1;3541:23:71;;-1:-1:-1;3548:4:71;;1840:1740;-1:-1:-1;;;1840:1740:71:o;269:397:133:-;362:8;372:6;426:3;419:4;411:6;407:17;403:27;393:55;;444:1;441;434:12;393:55;-1:-1:-1;467:20:133;;510:18;499:30;;496:50;;;542:1;539;532:12;496:50;579:4;571:6;567:17;555:29;;639:3;632:4;622:6;619:1;615:14;607:6;603:27;599:38;596:47;593:67;;;656:1;653;646:12;593:67;269:397;;;;;:::o;671:509::-;799:6;807;860:2;848:9;839:7;835:23;831:32;828:52;;;876:1;873;866:12;828:52;916:9;903:23;949:18;941:6;938:30;935:50;;;981:1;978;971:12;935:50;1020:100;1112:7;1103:6;1092:9;1088:22;1020:100;:::i;:::-;1139:8;;994:126;;-1:-1:-1;671:509:133;-1:-1:-1;;;;671:509:133:o;1669:184::-;1721:77;1718:1;1711:88;1818:4;1815:1;1808:15;1842:4;1839:1;1832:15;1858:334;1929:2;1923:9;1985:2;1975:13;;-1:-1:-1;;1971:86:133;1959:99;;2088:18;2073:34;;2109:22;;;2070:62;2067:88;;;2135:18;;:::i;:::-;2171:2;2164:22;1858:334;;-1:-1:-1;1858:334:133:o;2197:196::-;2265:20;;2325:42;2314:54;;2304:65;;2294:93;;2383:1;2380;2373:12;2294:93;2197:196;;;:::o;2398:589::-;2440:5;2493:3;2486:4;2478:6;2474:17;2470:27;2460:55;;2511:1;2508;2501:12;2460:55;2547:6;2534:20;2573:18;2569:2;2566:26;2563:52;;;2595:18;;:::i;:::-;2639:114;2747:4;-1:-1:-1;;2671:4:133;2667:2;2663:13;2659:86;2655:97;2639:114;:::i;:::-;2778:2;2769:7;2762:19;2824:3;2817:4;2812:2;2804:6;2800:15;2796:26;2793:35;2790:55;;;2841:1;2838;2831:12;2790:55;2906:2;2899:4;2891:6;2887:17;2880:4;2871:7;2867:18;2854:55;2954:1;2929:16;;;2947:4;2925:27;2918:38;;;;2933:7;2398:589;-1:-1:-1;;;2398:589:133:o;2992:898::-;3060:5;3108:4;3096:9;3091:3;3087:19;3083:30;3080:50;;;3126:1;3123;3116:12;3080:50;3159:2;3153:9;3201:4;3193:6;3189:17;3225:18;3293:6;3281:10;3278:22;3273:2;3261:10;3258:18;3255:46;3252:72;;;3304:18;;:::i;:::-;3344:10;3340:2;3333:22;3373:6;3364:15;;3416:9;3403:23;3395:6;3388:39;3460:38;3494:2;3483:9;3479:18;3460:38;:::i;:::-;3455:2;3447:6;3443:15;3436:63;3532:38;3566:2;3555:9;3551:18;3532:38;:::i;:::-;3527:2;3519:6;3515:15;3508:63;3632:2;3621:9;3617:18;3604:32;3599:2;3591:6;3587:15;3580:57;3699:3;3688:9;3684:19;3671:33;3665:3;3657:6;3653:16;3646:59;3756:3;3745:9;3741:19;3728:33;3714:47;;3784:2;3776:6;3773:14;3770:34;;;3800:1;3797;3790:12;3770:34;;3838:45;3879:3;3870:6;3859:9;3855:22;3838:45;:::i;:::-;3832:3;3824:6;3820:16;3813:71;;;2992:898;;;;:::o;3895:1046::-;4095:6;4103;4111;4119;4127;4171:9;4162:7;4158:23;4201:3;4197:2;4193:12;4190:32;;;4218:1;4215;4208:12;4190:32;4258:9;4245:23;4287:18;4328:2;4320:6;4317:14;4314:34;;;4344:1;4341;4334:12;4314:34;4367:72;4431:7;4422:6;4411:9;4407:22;4367:72;:::i;:::-;4357:82;;4486:2;4475:9;4471:18;4458:32;4448:42;;4583:3;4514:66;4510:2;4506:75;4502:85;4499:105;;;4600:1;4597;4590:12;4499:105;4638:2;4627:9;4623:18;4613:28;;4694:3;4683:9;4679:19;4666:33;4650:49;;4724:2;4714:8;4711:16;4708:36;;;4740:1;4737;4730:12;4708:36;;;4779:102;4873:7;4862:8;4851:9;4847:24;4779:102;:::i;:::-;3895:1046;;;;-1:-1:-1;3895:1046:133;;-1:-1:-1;4900:8:133;;4753:128;3895:1046;-1:-1:-1;;;3895:1046:133:o;4946:258::-;5018:1;5028:113;5042:6;5039:1;5036:13;5028:113;;;5118:11;;;5112:18;5099:11;;;5092:39;5064:2;5057:10;5028:113;;;5159:6;5156:1;5153:13;5150:48;;;-1:-1:-1;;5194:1:133;5176:16;;5169:27;4946:258::o;5209:317::-;5251:3;5289:5;5283:12;5316:6;5311:3;5304:19;5332:63;5388:6;5381:4;5376:3;5372:14;5365:4;5358:5;5354:16;5332:63;:::i;:::-;5440:2;5428:15;-1:-1:-1;;5424:88:133;5415:98;;;;5515:4;5411:109;;5209:317;-1:-1:-1;;5209:317:133:o;5531:220::-;5680:2;5669:9;5662:21;5643:4;5700:45;5741:2;5730:9;5726:18;5718:6;5700:45;:::i;5948:186::-;6007:6;6060:2;6048:9;6039:7;6035:23;6031:32;6028:52;;;6076:1;6073;6066:12;6028:52;6099:29;6118:9;6099:29;:::i;6139:180::-;6198:6;6251:2;6239:9;6230:7;6226:23;6222:32;6219:52;;;6267:1;6264;6257:12;6219:52;-1:-1:-1;6290:23:133;;6139:180;-1:-1:-1;6139:180:133:o;6324:374::-;6423:6;6476:2;6464:9;6455:7;6451:23;6447:32;6444:52;;;6492:1;6489;6482:12;6444:52;6532:9;6519:23;6565:18;6557:6;6554:30;6551:50;;;6597:1;6594;6587:12;6551:50;6620:72;6684:7;6675:6;6664:9;6660:22;6620:72;:::i;:::-;6610:82;6324:374;-1:-1:-1;;;;6324:374:133:o;6888:171::-;6955:20;;7015:18;7004:30;;6994:41;;6984:69;;7049:1;7046;7039:12;7064:184;7122:6;7175:2;7163:9;7154:7;7150:23;7146:32;7143:52;;;7191:1;7188;7181:12;7143:52;7214:28;7232:9;7214:28;:::i;7874:160::-;7939:20;;7995:13;;7988:21;7978:32;;7968:60;;8024:1;8021;8014:12;8039:180;8095:6;8148:2;8136:9;8127:7;8123:23;8119:32;8116:52;;;8164:1;8161;8154:12;8116:52;8187:26;8203:9;8187:26;:::i;8619:604::-;8719:6;8727;8735;8743;8751;8804:3;8792:9;8783:7;8779:23;8775:33;8772:53;;;8821:1;8818;8811:12;8772:53;8844:29;8863:9;8844:29;:::i;:::-;8834:39;;8920:2;8909:9;8905:18;8892:32;8882:42;;8943:37;8976:2;8965:9;8961:18;8943:37;:::i;:::-;8933:47;;8999:35;9030:2;9019:9;9015:18;8999:35;:::i;:::-;8989:45;;9085:3;9074:9;9070:19;9057:33;9113:18;9105:6;9102:30;9099:50;;;9145:1;9142;9135:12;9099:50;9168:49;9209:7;9200:6;9189:9;9185:22;9168:49;:::i;:::-;9158:59;;;8619:604;;;;;;;;:::o;9228:254::-;9293:6;9301;9354:2;9342:9;9333:7;9329:23;9325:32;9322:52;;;9370:1;9367;9360:12;9322:52;9393:26;9409:9;9393:26;:::i;:::-;9383:36;;9438:38;9472:2;9461:9;9457:18;9438:38;:::i;:::-;9428:48;;9228:254;;;;;:::o;10683:642::-;10946:6;10941:3;10934:19;10983:6;10978:2;10973:3;10969:12;10962:28;11042:66;11033:6;11028:3;11024:16;11020:89;11015:2;11010:3;11006:12;10999:111;11163:6;11156:14;11149:22;11144:3;11140:32;11135:2;11130:3;11126:12;11119:54;10916:3;11202:6;11196:13;11218:60;11271:6;11266:2;11261:3;11257:12;11252:2;11244:6;11240:15;11218:60;:::i;:::-;11298:16;;;;11316:2;11294:25;;10683:642;-1:-1:-1;;;;;;10683:642:133:o;11553:184::-;11605:77;11602:1;11595:88;11702:4;11699:1;11692:15;11726:4;11723:1;11716:15;11742:398;11850:4;11908:11;11895:25;11998:66;11987:8;11971:14;11967:29;11963:102;11943:18;11939:127;11929:155;;12080:1;12077;12070:12;11929:155;12101:33;;;;;11742:398;-1:-1:-1;;11742:398:133:o;12145:237::-;12277:9;12314:62;12361:14;12354:5;12314:62;:::i;12387:184::-;12439:77;12436:1;12429:88;12536:4;12533:1;12526:15;12560:4;12557:1;12550:15;12576:195;12615:3;12646:66;12639:5;12636:77;12633:103;;12716:18;;:::i;:::-;-1:-1:-1;12763:1:133;12752:13;;12576:195::o;14151:192::-;14230:13;;14283:34;14272:46;;14262:57;;14252:85;;14333:1;14330;14323:12;14348:616;14451:6;14504:2;14492:9;14483:7;14479:23;14475:32;14472:52;;;14520:1;14517;14510:12;14472:52;14553:2;14547:9;14595:2;14587:6;14583:15;14664:6;14652:10;14649:22;14628:18;14616:10;14613:34;14610:62;14607:88;;;14675:18;;:::i;:::-;14711:2;14704:22;14750:16;;14735:32;;14800:49;14845:2;14830:18;;14800:49;:::i;:::-;14795:2;14787:6;14783:15;14776:74;14883:49;14928:2;14917:9;14913:18;14883:49;:::i;:::-;14878:2;14866:15;;14859:74;14870:6;14348:616;-1:-1:-1;;;14348:616:133:o;14969:647::-;15062:6;15115:3;15103:9;15094:7;15090:23;15086:33;15083:53;;;15132:1;15129;15122:12;15083:53;15165:2;15159:9;15207:3;15199:6;15195:16;15277:6;15265:10;15262:22;15241:18;15229:10;15226:34;15223:62;15220:88;;;15288:18;;:::i;:::-;15328:10;15324:2;15317:22;;15376:9;15363:23;15355:6;15348:39;15448:2;15437:9;15433:18;15420:32;15415:2;15407:6;15403:15;15396:57;15514:2;15503:9;15499:18;15486:32;15481:2;15473:6;15469:15;15462:57;15580:2;15569:9;15565:18;15552:32;15547:2;15539:6;15535:15;15528:57;15604:6;15594:16;;;14969:647;;;;:::o;17113:934::-;17249:9;17283:18;17324:2;17316:6;17313:14;17310:40;;;17330:18;;:::i;:::-;17376:6;17373:1;17369:14;17402:4;17426:28;17450:2;17446;17442:11;17426:28;:::i;:::-;17488:19;;;17558:14;;;;17523:12;;;;17595:14;17584:26;;17581:46;;;17623:1;17620;17613:12;17581:46;17647:5;17661:353;17677:6;17672:3;17669:15;17661:353;;;17763:3;17750:17;17799:2;17786:11;17783:19;17780:109;;;17843:1;17872:2;17868;17861:14;17780:109;17914:57;17956:14;17942:11;17935:5;17931:23;17914:57;:::i;:::-;17902:70;;-1:-1:-1;17992:12:133;;;;17694;;17661:353;;;-1:-1:-1;18036:5:133;17113:934;-1:-1:-1;;;;;;;17113:934:133:o;20508:184::-;20578:6;20631:2;20619:9;20610:7;20606:23;20602:32;20599:52;;;20647:1;20644;20637:12;20599:52;-1:-1:-1;20670:16:133;;20508:184;-1:-1:-1;20508:184:133:o;23441:270::-;23480:7;23512:18;23557:2;23554:1;23550:10;23587:2;23584:1;23580:10;23643:3;23639:2;23635:12;23630:3;23627:21;23620:3;23613:11;23606:19;23602:47;23599:73;;;23652:18;;:::i;:::-;23692:13;;23441:270;-1:-1:-1;;;;23441:270:133:o;23716:236::-;23755:3;23783:18;23828:2;23825:1;23821:10;23858:2;23855:1;23851:10;23889:3;23885:2;23881:12;23876:3;23873:21;23870:47;;;23897:18;;:::i;:::-;23933:13;;23716:236;-1:-1:-1;;;;23716:236:133:o;24571:125::-;24611:4;24639:1;24636;24633:8;24630:34;;;24644:18;;:::i;:::-;-1:-1:-1;24681:9:133;;24571:125::o;24701:184::-;24753:77;24750:1;24743:88;24850:4;24847:1;24840:15;24874:4;24871:1;24864:15;24890:308;24929:1;24955;24945:35;;24960:18;;:::i;:::-;25077:66;25074:1;25071:73;25002:66;24999:1;24996:73;24992:153;24989:179;;;25148:18;;:::i;:::-;-1:-1:-1;25182:10:133;;24890:308::o;25203:369::-;25242:4;25278:1;25275;25271:9;25387:1;25319:66;25315:74;25312:1;25308:82;25303:2;25296:10;25292:99;25289:125;;;25394:18;;:::i;:::-;25513:1;25445:66;25441:74;25438:1;25434:82;25430:2;25426:91;25423:117;;;25520:18;;:::i;:::-;-1:-1:-1;;25557:9:133;;25203:369::o;25577:655::-;25616:7;25648:66;25740:1;25737;25733:9;25768:1;25765;25761:9;25813:1;25809:2;25805:10;25802:1;25799:17;25794:2;25790;25786:11;25782:35;25779:61;;;25820:18;;:::i;:::-;25859:66;25951:1;25948;25944:9;25998:1;25994:2;25989:11;25986:1;25982:19;25977:2;25973;25969:11;25965:37;25962:63;;;26005:18;;:::i;:::-;26051:1;26048;26044:9;26034:19;;26098:1;26094:2;26089:11;26086:1;26082:19;26077:2;26073;26069:11;26065:37;26062:63;;;26105:18;;:::i;:::-;26170:1;26166:2;26161:11;26158:1;26154:19;26149:2;26145;26141:11;26137:37;26134:63;;;26177:18;;:::i;:::-;-1:-1:-1;;;26217:9:133;;;;;25577:655;-1:-1:-1;;;25577:655:133:o;26237:367::-;26276:3;26311:1;26308;26304:9;26420:1;26352:66;26348:74;26345:1;26341:82;26336:2;26329:10;26325:99;26322:125;;;26427:18;;:::i;:::-;26546:1;26478:66;26474:74;26471:1;26467:82;26463:2;26459:91;26456:117;;;26553:18;;:::i;:::-;-1:-1:-1;;26589:9:133;;26237:367::o;27040:228::-;27080:7;27206:1;27138:66;27134:74;27131:1;27128:81;27123:1;27116:9;27109:17;27105:105;27102:131;;;27213:18;;:::i;:::-;-1:-1:-1;27253:9:133;;27040:228::o;27273:120::-;27313:1;27339;27329:35;;27344:18;;:::i;:::-;-1:-1:-1;27378:9:133;;27273:120::o;27794:656::-;28081:6;28070:9;28063:25;28044:4;28107:42;28197:2;28189:6;28185:15;28180:2;28169:9;28165:18;28158:43;28249:2;28241:6;28237:15;28232:2;28221:9;28217:18;28210:43;;28289:6;28284:2;28273:9;28269:18;28262:34;28333:6;28327:3;28316:9;28312:19;28305:35;28377:3;28371;28360:9;28356:19;28349:32;28398:46;28439:3;28428:9;28424:19;28416:6;28398:46;:::i;:::-;28390:54;27794:656;-1:-1:-1;;;;;;;;27794:656:133:o;28455:208::-;28525:6;28578:2;28566:9;28557:7;28553:23;28549:32;28546:52;;;28594:1;28591;28584:12;28546:52;28617:40;28647:9;28617:40;:::i;29080:167::-;29158:13;;29211:10;29200:22;;29190:33;;29180:61;;29237:1;29234;29227:12;29252:160;29329:13;;29382:4;29371:16;;29361:27;;29351:55;;29402:1;29399;29392:12;29417:888;29520:6;29573:3;29561:9;29552:7;29548:23;29544:33;29541:53;;;29590:1;29587;29580:12;29541:53;29623:2;29617:9;29665:3;29657:6;29653:16;29735:6;29723:10;29720:22;29699:18;29687:10;29684:34;29681:62;29678:88;;;29746:18;;:::i;:::-;29782:2;29775:22;29821:39;29850:9;29821:39;:::i;:::-;29813:6;29806:55;29894:47;29937:2;29926:9;29922:18;29894:47;:::i;:::-;29889:2;29881:6;29877:15;29870:72;29975:47;30018:2;30007:9;30003:18;29975:47;:::i;:::-;29970:2;29962:6;29958:15;29951:72;30056:48;30100:2;30089:9;30085:18;30056:48;:::i;:::-;30051:2;30043:6;30039:15;30032:73;30139:49;30183:3;30172:9;30168:19;30139:49;:::i;:::-;30133:3;30125:6;30121:16;30114:75;30223:50;30268:3;30257:9;30253:19;30223:50;:::i;:::-;30217:3;30205:16;;30198:76;30209:6;29417:888;-1:-1:-1;;;29417:888:133:o;30497:128::-;30537:3;30568:1;30564:6;30561:1;30558:13;30555:39;;;30574:18;;:::i;:::-;-1:-1:-1;30610:9:133;;30497:128::o;33423:157::-;33453:1;33487:4;33484:1;33480:12;33511:3;33501:37;;33518:18;;:::i;:::-;33570:3;33563:4;33560:1;33556:12;33552:22;33547:27;;;33423:157;;;;:::o;33585:195::-;33623:4;33660;33657:1;33653:12;33692:4;33689:1;33685:12;33717:3;33712;33709:12;33706:38;;;33724:18;;:::i;:::-;33761:13;;;33585:195;-1:-1:-1;;;33585:195:133:o;37405:184::-;37457:77;37454:1;37447:88;37554:4;37551:1;37544:15;37578:4;37575:1;37568:15","linkReferences":{},"immutableReferences":{"52227":[{"start":471,"length":32},{"start":1091,"length":32},{"start":2949,"length":32},{"start":3404,"length":32},{"start":4563,"length":32},{"start":5413,"length":32},{"start":5987,"length":32},{"start":8643,"length":32},{"start":9612,"length":32}],"52231":[{"start":594,"length":32},{"start":1647,"length":32},{"start":9179,"length":32}],"52234":[{"start":666,"length":32},{"start":989,"length":32},{"start":2410,"length":32},{"start":4123,"length":32},{"start":4727,"length":32}]}},"methodIdentifiers":{"GUARDIAN()":"724c184c","L2_ORACLE()":"001c2ff6","SYSTEM_CONFIG()":"f0498750","depositTransaction(address,uint256,uint64,bool,bytes)":"e9e05c42","donateETH()":"8b4c40b0","finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":"8c3152e9","finalizeWithdrawalTransactions((uint256,address,address,uint256,uint256,bytes)[])":"057bbee1","finalizedWithdrawals(bytes32)":"a14238e7","guardian()":"452a9320","initialize(bool)":"d53a822f","initializeWithRelayer(bool,address)":"fc69f6e8","isOutputFinalized(uint256)":"6dbffb78","l2Oracle()":"9b5f694a","l2Sender()":"9bf62d82","messageRelayer()":"4f3b457e","minimumGasLimit(uint64)":"a35d99df","params()":"cff0ab96","pause()":"8456cb59","paused()":"5c975abb","proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":"4870496f","provenWithdrawals(bytes32)":"e965084c","setMessageRelayer(address)":"6cfd26e9","systemConfig()":"33d7e2bd","unpause()":"3f4ba83a","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"},{\"internalType\":\"contract SystemConfig\",\"name\":\"_systemConfig\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"MessageRelayerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"opaqueData\",\"type\":\"bytes\"}],\"name\":\"TransactionDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"WithdrawalFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"WithdrawalProven\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GUARDIAN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONFIG\",\"outputs\":[{\"internalType\":\"contract SystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isCreation\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"depositTransaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"donateETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"}],\"name\":\"finalizeWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.WithdrawalTransaction[]\",\"name\":\"_txs\",\"type\":\"tuple[]\"}],\"name\":\"finalizeWithdrawalTransactions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"finalizedWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_messageRelayer\",\"type\":\"address\"}],\"name\":\"initializeWithRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"isOutputFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Oracle\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageRelayer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_byteCount\",\"type\":\"uint64\"}],\"name\":\"minimumGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"params\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"prevBaseFee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"prevBoughtGas\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNum\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"latestBlockhash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.OutputRootProof\",\"name\":\"_outputRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"_withdrawalProof\",\"type\":\"bytes[]\"}],\"name\":\"proveWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"provenWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2OutputIndex\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRelayer\",\"type\":\"address\"}],\"name\":\"setMessageRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"systemConfig\",\"outputs\":[{\"internalType\":\"contract SystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:proxied\":\"@title OasysPortal\",\"events\":{\"MessageRelayerSet(address)\":{\"params\":{\"relayer\":\"The address of the new message relayer.\"}}},\"kind\":\"dev\",\"methods\":{\"depositTransaction(address,uint256,uint64,bool,bytes)\":{\"params\":{\"_data\":\"Data to trigger the recipient with.\",\"_gasLimit\":\"Amount of L2 gas to purchase by burning gas on L1.\",\"_isCreation\":\"Whether or not the transaction is a contract creation.\",\"_to\":\"Target address on L2.\",\"_value\":\"ETH value to send to the recipient.\"}},\"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"_tx\":\"Withdrawal transaction to finalize.\"}},\"isOutputFinalized(uint256)\":{\"params\":{\"_l2OutputIndex\":\"Index of the L2 output to check.\"},\"returns\":{\"_0\":\"Whether or not the output is finalized.\"}},\"minimumGasLimit(uint64)\":{\"params\":{\"_byteCount\":\"Number of bytes in the calldata.\"},\"returns\":{\"_0\":\"The minimum gas limit for a deposit.\"}},\"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])\":{\"params\":{\"_l2OutputIndex\":\"L2 output index to prove against.\",\"_outputRootProof\":\"Inclusion proof of the L2ToL1MessagePasser contract's storage root.\",\"_tx\":\"Withdrawal transaction to finalize.\",\"_withdrawalProof\":\"Inclusion proof of the withdrawal in L2ToL1MessagePasser contract.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"MessageRelayerSet(address)\":{\"notice\":\"Emitted when a new message relayer is set.\"},\"Paused(address)\":{\"notice\":\"Emitted when the pause is triggered.\"},\"TransactionDeposited(address,address,uint256,bytes)\":{\"notice\":\"Emitted when a transaction is deposited from L1 to L2. The parameters of this event are read by the rollup node and used to derive deposit transactions on L2.\"},\"Unpaused(address)\":{\"notice\":\"Emitted when the pause is lifted.\"},\"WithdrawalFinalized(bytes32,bool)\":{\"notice\":\"Emitted when a withdrawal transaction is finalized.\"},\"WithdrawalProven(bytes32,address,address)\":{\"notice\":\"Emitted when a withdrawal transaction is proven.\"}},\"kind\":\"user\",\"methods\":{\"GUARDIAN()\":{\"notice\":\"Address that has the ability to pause and unpause withdrawals. This will be removed in the future, use `guardian` instead.\"},\"L2_ORACLE()\":{\"notice\":\"Address of the L2OutputOracle contract. This will be removed in the future, use `l2Oracle` instead.\"},\"SYSTEM_CONFIG()\":{\"notice\":\"Address of the SystemConfig contract. This will be removed in the future, use `systemConfig` instead.\"},\"depositTransaction(address,uint256,uint64,bool,bytes)\":{\"notice\":\"Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in deriving deposit transactions. Note that if a deposit is made by a contract, its address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider using the CrossDomainMessenger contracts for a simpler developer experience.\"},\"donateETH()\":{\"notice\":\"Accepts ETH value without triggering a deposit to L2. This function mainly exists for the sake of the migration between the legacy Optimism system and Bedrock.\"},\"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"Finalizes a withdrawal transaction.\"},\"finalizeWithdrawalTransactions((uint256,address,address,uint256,uint256,bytes)[])\":{\"notice\":\"Batch finalizes withdrawal transactions. This method is necessary because it is not possible to check whether msg.sender is a message relayer via the Multicall contract.\"},\"finalizedWithdrawals(bytes32)\":{\"notice\":\"A list of withdrawal hashes which have been successfully finalized.\"},\"guardian()\":{\"notice\":\"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain.\"},\"initialize(bool)\":{\"notice\":\"Initializer.\"},\"initializeWithRelayer(bool,address)\":{\"notice\":\"Initalize with setting messager relayer\"},\"isOutputFinalized(uint256)\":{\"notice\":\"Determine if a given output is finalized. Reverts if the call to L2_ORACLE.getL2Output reverts. Returns a boolean otherwise.\"},\"l2Oracle()\":{\"notice\":\"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain.\"},\"l2Sender()\":{\"notice\":\"Address of the L2 account which initiated a withdrawal in this transaction. If the of this variable is the default L2 sender address, then we are NOT inside of a call to finalizeWithdrawalTransaction.\"},\"messageRelayer()\":{\"notice\":\"Message relayer to allowed immediate withdraw.\"},\"minimumGasLimit(uint64)\":{\"notice\":\"Computes the minimum gas limit for a deposit. The minimum gas limit linearly increases based on the size of the calldata. This is to prevent users from creating L2 resource usage without paying for it. This function can be used when interacting with the portal to ensure forwards compatibility.\"},\"params()\":{\"notice\":\"EIP-1559 style gas parameters.\"},\"pause()\":{\"notice\":\"Pauses withdrawals.\"},\"paused()\":{\"notice\":\"Determines if cross domain messaging is paused. When set to true, withdrawals are paused. This may be removed in the future.\"},\"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])\":{\"notice\":\"Proves a withdrawal transaction.\"},\"provenWithdrawals(bytes32)\":{\"notice\":\"A mapping of withdrawal hashes to `ProvenWithdrawal` data.\"},\"setMessageRelayer(address)\":{\"notice\":\"Set a new message relayer address. If the zero address is set, no immediate relay of withdrawal messages.\"},\"systemConfig()\":{\"notice\":\"Getter function for the address of the SystemConfig on this chain.Address of the SystemConfig on this chain.\"},\"unpause()\":{\"notice\":\"Unpauses withdrawals.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"The OasysPortal is a contract that extends OptimismPortal to enable fast messaging from L2 to L1.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/oasys/L1/messaging/OasysPortal.sol\":\"OasysPortal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@cwia/=lib/clones-with-immutable-args/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":clones-with-immutable-args/=lib/clones-with-immutable-args/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/L2OutputOracle.sol\":{\"keccak256\":\"0xa7e6b43deedf1d59dd1006b585e2c027d859fe2518412a6cd068f3e76f6063ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59998bc7c49ab9ea9a30f5ccf96fc593eb7b79905b1c844e9b4a50dbc0ad6e0c\",\"dweb:/ipfs/QmS4kaaR9Y8ctqgwpxQEnSoWW1HFruJkwGqpxepD86c5Sz\"]},\"src/L1/OptimismPortal.sol\":{\"keccak256\":\"0x56b14bb1f86d258dac18aa115035429bbdd046fa87d370f09a6360dd99b7c0cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2d8fe61d3174c1a69c73a991856a8d284b59df066870fae6230eb0699930065\",\"dweb:/ipfs/Qma85DqtywWX1ELvjsDpBUY5WnyYCpzxq7SuXqLAUY8Vip\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xa4d524f2a5e91a0b63a62603e712001c51c77e8371b93cbb576bcb7d074b7588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6d8141b6c6dc72d2e684c1ae388c005fd78c9ca7fc9c15dddebd227ca4fd730\",\"dweb:/ipfs/QmPfJrR4qssu769TDWJnxdTozqKtZUxiY8fs95bhfECTvG\"]},\"src/L1/SystemConfig.sol\":{\"keccak256\":\"0x5c6346060b3e8d3bf4289b20fd869a66fbad8f69dc0b095845f990066b6c4d2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161277a9935cc567d76096a9a3ffc54632fda2020e02b4c5dc5541bfad3d166f\",\"dweb:/ipfs/QmXiDP2A4MPsN9VDNf9YbqbQQTU2J5tffWbJHg45f9LJyN\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x06a5a8b00527843f0cfc1bb3c0661316966a6cc432f88be31f23cde78cd07560\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5209e78e5415c0bf8b350362a825cc56152811abd6fcf2df3d4fa47766d3dee\",\"dweb:/ipfs/Qmf43xyc4Um32NmccayDfhm8kSnS2mhHXpPZnwABJS7cWm\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Bytes.sol\":{\"keccak256\":\"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782\",\"dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x8fcbc468fa4924f81538d4a6674031e12b62b61a88e869fdf099158a0d0c6a19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc7b9bca6c12fdd38e556650ec1eda3cccb0de4d474d2e97904cbd483b147359\",\"dweb:/ipfs/QmW4oKjDtHJj4cNfMhMLDteQEHSUuZtwrrFUJRnZCbQTJd\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0xd5bbcb7da113e69562498d9543765e03912558ad66348682c2049c31e19f9d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afc6656ea10062c0c9d0817bb8683636caebf9222c9c102f29ea54fff74a2f93\",\"dweb:/ipfs/QmTNWtMgrTRHM6XtdUmA8bMZcuFpXoFCXgXR5vRihZWLuW\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x44e2b2dcfffc39c0fc95ccd3c2118c7e7585fadf3dca327877d5756c7d4b21c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c89e0d9cfcb08a0d3c46c85367a32bbd9703468ba4c0c5bb6e124c1d173b26b\",\"dweb:/ipfs/QmaY3nQHBBhHK1wrurVXiEeNL8hfZ1pRmhpqW44tFDJnDf\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/libraries/Storage.sol\":{\"keccak256\":\"0x902a0a815272a5b76c647d9e82101aca765e9835a6624d0857088b9da0f58afd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c39a697aacb0a2eac0bf1fbd7790d835a685c61006f6d3464e19cbc96a24480\",\"dweb:/ipfs/QmV3T8ZTRWPB5CNuZjxwWQNoENd7W4SoBMnFG6Y6g6xYV4\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/libraries/rlp/RLPReader.sol\":{\"keccak256\":\"0x9ba74a3b0a11693e622380807d213d5d1250d974e18b2cd768da9cbe719a6778\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0808d721ed9e05707526ee134faa051d707a95ee6b8bd6e0b1972275da8e5723\",\"dweb:/ipfs/QmcTTPu9xgckfWdbFUAcr2RAgk3J6vzyR4FpV798TjFMeN\"]},\"src/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b\",\"dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV\"]},\"src/libraries/trie/MerkleTrie.sol\":{\"keccak256\":\"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74\",\"dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE\"]},\"src/libraries/trie/SecureMerkleTrie.sol\":{\"keccak256\":\"0xeaff8315cfd21197bc6bc859c2decf5d4f4838c9c357c502cdf2b1eac863d288\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79dcdcaa560aea51d138da4f5dc553a1808b6de090b2dc1629f18375edbff681\",\"dweb:/ipfs/QmbE4pUPhf5fLKW4W6cEjhQs55gEDvHmbmoBqkW1yz3bnw\"]},\"src/oasys/L1/interfaces/IOasysL2OutputOracle.sol\":{\"keccak256\":\"0x8b688f1c51237711ec9d0113d09add4570879582f10241ce8521e876f157d9d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96d870136c29175d5c804ee5c22219d0bf84138c7925b7d529c5901774acb4a0\",\"dweb:/ipfs/QmXNBpw4HWU4SMptCqKKXC2wdCsCr3bhRJBDaU8W7pz6fU\"]},\"src/oasys/L1/messaging/OasysPortal.sol\":{\"keccak256\":\"0x17c2141ac0a4255eedd436c9789d6753fc4785e7611afea2d13cc39cad66c3f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82599ec06d2729ba9742c1f8318fd5226e1a89bb12f911e87f777b4fa0046b0c\",\"dweb:/ipfs/QmPux2StJ8u6Eaq1HSf5qAdGgRghGTXJoRALfAFg8LJQh1\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract L2OutputOracle","name":"_l2Oracle","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"bool","name":"_paused","type":"bool"},{"internalType":"contract SystemConfig","name":"_systemConfig","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"relayer","type":"address","indexed":true}],"type":"event","name":"MessageRelayerSet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"version","type":"uint256","indexed":true},{"internalType":"bytes","name":"opaqueData","type":"bytes","indexed":false}],"type":"event","name":"TransactionDeposited","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalHash","type":"bytes32","indexed":true},{"internalType":"bool","name":"success","type":"bool","indexed":false}],"type":"event","name":"WithdrawalFinalized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"withdrawalHash","type":"bytes32","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"WithdrawalProven","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"GUARDIAN","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"L2_ORACLE","outputs":[{"internalType":"contract L2OutputOracle","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CONFIG","outputs":[{"internalType":"contract SystemConfig","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint64","name":"_gasLimit","type":"uint64"},{"internalType":"bool","name":"_isCreation","type":"bool"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"depositTransaction"},{"inputs":[],"stateMutability":"payable","type":"function","name":"donateETH"},{"inputs":[{"internalType":"struct Types.WithdrawalTransaction","name":"_tx","type":"tuple","components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdrawalTransaction"},{"inputs":[{"internalType":"struct Types.WithdrawalTransaction[]","name":"_txs","type":"tuple[]","components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdrawalTransactions"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"finalizedWithdrawals","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"},{"internalType":"address","name":"_messageRelayer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initializeWithRelayer"},{"inputs":[{"internalType":"uint256","name":"_l2OutputIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"isOutputFinalized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2Oracle","outputs":[{"internalType":"contract L2OutputOracle","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2Sender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messageRelayer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"_byteCount","type":"uint64"}],"stateMutability":"pure","type":"function","name":"minimumGasLimit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"params","outputs":[{"internalType":"uint128","name":"prevBaseFee","type":"uint128"},{"internalType":"uint64","name":"prevBoughtGas","type":"uint64"},{"internalType":"uint64","name":"prevBlockNum","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct Types.WithdrawalTransaction","name":"_tx","type":"tuple","components":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"internalType":"uint256","name":"_l2OutputIndex","type":"uint256"},{"internalType":"struct Types.OutputRootProof","name":"_outputRootProof","type":"tuple","components":[{"internalType":"bytes32","name":"version","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"bytes32","name":"messagePasserStorageRoot","type":"bytes32"},{"internalType":"bytes32","name":"latestBlockhash","type":"bytes32"}]},{"internalType":"bytes[]","name":"_withdrawalProof","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"proveWithdrawalTransaction"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"provenWithdrawals","outputs":[{"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"internalType":"uint128","name":"timestamp","type":"uint128"},{"internalType":"uint128","name":"l2OutputIndex","type":"uint128"}]},{"inputs":[{"internalType":"address","name":"newRelayer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMessageRelayer"},{"inputs":[],"stateMutability":"view","type":"function","name":"systemConfig","outputs":[{"internalType":"contract SystemConfig","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"depositTransaction(address,uint256,uint64,bool,bytes)":{"params":{"_data":"Data to trigger the recipient with.","_gasLimit":"Amount of L2 gas to purchase by burning gas on L1.","_isCreation":"Whether or not the transaction is a contract creation.","_to":"Target address on L2.","_value":"ETH value to send to the recipient."}},"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":{"params":{"_tx":"Withdrawal transaction to finalize."}},"isOutputFinalized(uint256)":{"params":{"_l2OutputIndex":"Index of the L2 output to check."},"returns":{"_0":"Whether or not the output is finalized."}},"minimumGasLimit(uint64)":{"params":{"_byteCount":"Number of bytes in the calldata."},"returns":{"_0":"The minimum gas limit for a deposit."}},"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":{"params":{"_l2OutputIndex":"L2 output index to prove against.","_outputRootProof":"Inclusion proof of the L2ToL1MessagePasser contract's storage root.","_tx":"Withdrawal transaction to finalize.","_withdrawalProof":"Inclusion proof of the withdrawal in L2ToL1MessagePasser contract."}}},"version":1},"userdoc":{"kind":"user","methods":{"GUARDIAN()":{"notice":"Address that has the ability to pause and unpause withdrawals. This will be removed in the future, use `guardian` instead."},"L2_ORACLE()":{"notice":"Address of the L2OutputOracle contract. This will be removed in the future, use `l2Oracle` instead."},"SYSTEM_CONFIG()":{"notice":"Address of the SystemConfig contract. This will be removed in the future, use `systemConfig` instead."},"depositTransaction(address,uint256,uint64,bool,bytes)":{"notice":"Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in deriving deposit transactions. Note that if a deposit is made by a contract, its address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider using the CrossDomainMessenger contracts for a simpler developer experience."},"donateETH()":{"notice":"Accepts ETH value without triggering a deposit to L2. This function mainly exists for the sake of the migration between the legacy Optimism system and Bedrock."},"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":{"notice":"Finalizes a withdrawal transaction."},"finalizeWithdrawalTransactions((uint256,address,address,uint256,uint256,bytes)[])":{"notice":"Batch finalizes withdrawal transactions. This method is necessary because it is not possible to check whether msg.sender is a message relayer via the Multicall contract."},"finalizedWithdrawals(bytes32)":{"notice":"A list of withdrawal hashes which have been successfully finalized."},"guardian()":{"notice":"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain."},"initialize(bool)":{"notice":"Initializer."},"initializeWithRelayer(bool,address)":{"notice":"Initalize with setting messager relayer"},"isOutputFinalized(uint256)":{"notice":"Determine if a given output is finalized. Reverts if the call to L2_ORACLE.getL2Output reverts. Returns a boolean otherwise."},"l2Oracle()":{"notice":"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain."},"l2Sender()":{"notice":"Address of the L2 account which initiated a withdrawal in this transaction. If the of this variable is the default L2 sender address, then we are NOT inside of a call to finalizeWithdrawalTransaction."},"messageRelayer()":{"notice":"Message relayer to allowed immediate withdraw."},"minimumGasLimit(uint64)":{"notice":"Computes the minimum gas limit for a deposit. The minimum gas limit linearly increases based on the size of the calldata. This is to prevent users from creating L2 resource usage without paying for it. This function can be used when interacting with the portal to ensure forwards compatibility."},"params()":{"notice":"EIP-1559 style gas parameters."},"pause()":{"notice":"Pauses withdrawals."},"paused()":{"notice":"Determines if cross domain messaging is paused. When set to true, withdrawals are paused. This may be removed in the future."},"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":{"notice":"Proves a withdrawal transaction."},"provenWithdrawals(bytes32)":{"notice":"A mapping of withdrawal hashes to `ProvenWithdrawal` data."},"setMessageRelayer(address)":{"notice":"Set a new message relayer address. If the zero address is set, no immediate relay of withdrawal messages."},"systemConfig()":{"notice":"Getter function for the address of the SystemConfig on this chain.Address of the SystemConfig on this chain."},"unpause()":{"notice":"Unpauses withdrawals."},"version()":{"notice":"Semantic version."}},"version":1}},"settings":{"remappings":["@cwia/=lib/clones-with-immutable-args/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","clones-with-immutable-args/=lib/clones-with-immutable-args/src/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-contracts/=lib/safe-contracts/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":10000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/oasys/L1/messaging/OasysPortal.sol":"OasysPortal"},"libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0","urls":["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929","dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7","urls":["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689","dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d","urls":["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c","dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"],"license":"MIT"},"src/L1/L2OutputOracle.sol":{"keccak256":"0xa7e6b43deedf1d59dd1006b585e2c027d859fe2518412a6cd068f3e76f6063ca","urls":["bzz-raw://59998bc7c49ab9ea9a30f5ccf96fc593eb7b79905b1c844e9b4a50dbc0ad6e0c","dweb:/ipfs/QmS4kaaR9Y8ctqgwpxQEnSoWW1HFruJkwGqpxepD86c5Sz"],"license":"MIT"},"src/L1/OptimismPortal.sol":{"keccak256":"0x56b14bb1f86d258dac18aa115035429bbdd046fa87d370f09a6360dd99b7c0cc","urls":["bzz-raw://a2d8fe61d3174c1a69c73a991856a8d284b59df066870fae6230eb0699930065","dweb:/ipfs/Qma85DqtywWX1ELvjsDpBUY5WnyYCpzxq7SuXqLAUY8Vip"],"license":"MIT"},"src/L1/ResourceMetering.sol":{"keccak256":"0xa4d524f2a5e91a0b63a62603e712001c51c77e8371b93cbb576bcb7d074b7588","urls":["bzz-raw://d6d8141b6c6dc72d2e684c1ae388c005fd78c9ca7fc9c15dddebd227ca4fd730","dweb:/ipfs/QmPfJrR4qssu769TDWJnxdTozqKtZUxiY8fs95bhfECTvG"],"license":"MIT"},"src/L1/SystemConfig.sol":{"keccak256":"0x5c6346060b3e8d3bf4289b20fd869a66fbad8f69dc0b095845f990066b6c4d2b","urls":["bzz-raw://161277a9935cc567d76096a9a3ffc54632fda2020e02b4c5dc5541bfad3d166f","dweb:/ipfs/QmXiDP2A4MPsN9VDNf9YbqbQQTU2J5tffWbJHg45f9LJyN"],"license":"MIT"},"src/libraries/Arithmetic.sol":{"keccak256":"0x06a5a8b00527843f0cfc1bb3c0661316966a6cc432f88be31f23cde78cd07560","urls":["bzz-raw://d5209e78e5415c0bf8b350362a825cc56152811abd6fcf2df3d4fa47766d3dee","dweb:/ipfs/Qmf43xyc4Um32NmccayDfhm8kSnS2mhHXpPZnwABJS7cWm"],"license":"MIT"},"src/libraries/Burn.sol":{"keccak256":"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010","urls":["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f","dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"],"license":"MIT"},"src/libraries/Bytes.sol":{"keccak256":"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859","urls":["bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782","dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x8fcbc468fa4924f81538d4a6674031e12b62b61a88e869fdf099158a0d0c6a19","urls":["bzz-raw://fc7b9bca6c12fdd38e556650ec1eda3cccb0de4d474d2e97904cbd483b147359","dweb:/ipfs/QmW4oKjDtHJj4cNfMhMLDteQEHSUuZtwrrFUJRnZCbQTJd"],"license":"MIT"},"src/libraries/Encoding.sol":{"keccak256":"0xd5bbcb7da113e69562498d9543765e03912558ad66348682c2049c31e19f9d9b","urls":["bzz-raw://afc6656ea10062c0c9d0817bb8683636caebf9222c9c102f29ea54fff74a2f93","dweb:/ipfs/QmTNWtMgrTRHM6XtdUmA8bMZcuFpXoFCXgXR5vRihZWLuW"],"license":"MIT"},"src/libraries/Hashing.sol":{"keccak256":"0x44e2b2dcfffc39c0fc95ccd3c2118c7e7585fadf3dca327877d5756c7d4b21c3","urls":["bzz-raw://6c89e0d9cfcb08a0d3c46c85367a32bbd9703468ba4c0c5bb6e124c1d173b26b","dweb:/ipfs/QmaY3nQHBBhHK1wrurVXiEeNL8hfZ1pRmhpqW44tFDJnDf"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f","urls":["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a","dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"],"license":"MIT"},"src/libraries/Storage.sol":{"keccak256":"0x902a0a815272a5b76c647d9e82101aca765e9835a6624d0857088b9da0f58afd","urls":["bzz-raw://9c39a697aacb0a2eac0bf1fbd7790d835a685c61006f6d3464e19cbc96a24480","dweb:/ipfs/QmV3T8ZTRWPB5CNuZjxwWQNoENd7W4SoBMnFG6Y6g6xYV4"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4","urls":["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e","dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"],"license":"MIT"},"src/libraries/rlp/RLPReader.sol":{"keccak256":"0x9ba74a3b0a11693e622380807d213d5d1250d974e18b2cd768da9cbe719a6778","urls":["bzz-raw://0808d721ed9e05707526ee134faa051d707a95ee6b8bd6e0b1972275da8e5723","dweb:/ipfs/QmcTTPu9xgckfWdbFUAcr2RAgk3J6vzyR4FpV798TjFMeN"],"license":"MIT"},"src/libraries/rlp/RLPWriter.sol":{"keccak256":"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6","urls":["bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b","dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV"],"license":"MIT"},"src/libraries/trie/MerkleTrie.sol":{"keccak256":"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c","urls":["bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74","dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE"],"license":"MIT"},"src/libraries/trie/SecureMerkleTrie.sol":{"keccak256":"0xeaff8315cfd21197bc6bc859c2decf5d4f4838c9c357c502cdf2b1eac863d288","urls":["bzz-raw://79dcdcaa560aea51d138da4f5dc553a1808b6de090b2dc1629f18375edbff681","dweb:/ipfs/QmbE4pUPhf5fLKW4W6cEjhQs55gEDvHmbmoBqkW1yz3bnw"],"license":"MIT"},"src/oasys/L1/interfaces/IOasysL2OutputOracle.sol":{"keccak256":"0x8b688f1c51237711ec9d0113d09add4570879582f10241ce8521e876f157d9d9","urls":["bzz-raw://96d870136c29175d5c804ee5c22219d0bf84138c7925b7d529c5901774acb4a0","dweb:/ipfs/QmXNBpw4HWU4SMptCqKKXC2wdCsCr3bhRJBDaU8W7pz6fU"],"license":"MIT"},"src/oasys/L1/messaging/OasysPortal.sol":{"keccak256":"0x17c2141ac0a4255eedd436c9789d6753fc4785e7611afea2d13cc39cad66c3f5","urls":["bzz-raw://82599ec06d2729ba9742c1f8318fd5226e1a89bb12f911e87f777b4fa0046b0c","dweb:/ipfs/QmPux2StJ8u6Eaq1HSf5qAdGgRghGTXJoRALfAFg8LJQh1"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"},"src/vendor/AddressAliasHelper.sol":{"keccak256":"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237","urls":["bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88","dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR"],"license":"Apache-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":45286,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":45289,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":53177,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"params","offset":0,"slot":"1","type":"t_struct(ResourceParams)53160_storage"},{"astId":53182,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"__gap","offset":0,"slot":"2","type":"t_array(t_uint256)48_storage"},{"astId":52237,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"l2Sender","offset":0,"slot":"50","type":"t_address"},{"astId":52242,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"finalizedWithdrawals","offset":0,"slot":"51","type":"t_mapping(t_bytes32,t_bool)"},{"astId":52248,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"provenWithdrawals","offset":0,"slot":"52","type":"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)52215_storage)"},{"astId":52251,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"paused","offset":0,"slot":"53","type":"t_bool"},{"astId":52256,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"__gap","offset":0,"slot":"54","type":"t_array(t_uint256)46_storage"},{"astId":61964,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"messageRelayer","offset":0,"slot":"100","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)46_storage":{"encoding":"inplace","label":"uint256[46]","numberOfBytes":"1472","base":"t_uint256"},"t_array(t_uint256)48_storage":{"encoding":"inplace","label":"uint256[48]","numberOfBytes":"1536","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_bytes32,t_bool)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)52215_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal)","numberOfBytes":"32","value":"t_struct(ProvenWithdrawal)52215_storage"},"t_struct(ProvenWithdrawal)52215_storage":{"encoding":"inplace","label":"struct OptimismPortal.ProvenWithdrawal","numberOfBytes":"64","members":[{"astId":52210,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"outputRoot","offset":0,"slot":"0","type":"t_bytes32"},{"astId":52212,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"timestamp","offset":0,"slot":"1","type":"t_uint128"},{"astId":52214,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"l2OutputIndex","offset":16,"slot":"1","type":"t_uint128"}]},"t_struct(ResourceParams)53160_storage":{"encoding":"inplace","label":"struct ResourceMetering.ResourceParams","numberOfBytes":"32","members":[{"astId":53155,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"prevBaseFee","offset":0,"slot":"0","type":"t_uint128"},{"astId":53157,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"prevBoughtGas","offset":16,"slot":"0","type":"t_uint64"},{"astId":53159,"contract":"src/oasys/L1/messaging/OasysPortal.sol:OasysPortal","label":"prevBlockNum","offset":24,"slot":"0","type":"t_uint64"}]},"t_uint128":{"encoding":"inplace","label":"uint128","numberOfBytes":"16"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"GUARDIAN()":{"notice":"Address that has the ability to pause and unpause withdrawals. This will be removed in the future, use `guardian` instead."},"L2_ORACLE()":{"notice":"Address of the L2OutputOracle contract. This will be removed in the future, use `l2Oracle` instead."},"SYSTEM_CONFIG()":{"notice":"Address of the SystemConfig contract. This will be removed in the future, use `systemConfig` instead."},"depositTransaction(address,uint256,uint64,bool,bytes)":{"notice":"Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in deriving deposit transactions. Note that if a deposit is made by a contract, its address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider using the CrossDomainMessenger contracts for a simpler developer experience."},"donateETH()":{"notice":"Accepts ETH value without triggering a deposit to L2. This function mainly exists for the sake of the migration between the legacy Optimism system and Bedrock."},"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":{"notice":"Finalizes a withdrawal transaction."},"finalizeWithdrawalTransactions((uint256,address,address,uint256,uint256,bytes)[])":{"notice":"Batch finalizes withdrawal transactions. This method is necessary because it is not possible to check whether msg.sender is a message relayer via the Multicall contract."},"finalizedWithdrawals(bytes32)":{"notice":"A list of withdrawal hashes which have been successfully finalized."},"guardian()":{"notice":"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain."},"initialize(bool)":{"notice":"Initializer."},"initializeWithRelayer(bool,address)":{"notice":"Initalize with setting messager relayer"},"isOutputFinalized(uint256)":{"notice":"Determine if a given output is finalized. Reverts if the call to L2_ORACLE.getL2Output reverts. Returns a boolean otherwise."},"l2Oracle()":{"notice":"Getter function for the address of the L2OutputOracle on this chain.Address of the L2OutputOracle on this chain."},"l2Sender()":{"notice":"Address of the L2 account which initiated a withdrawal in this transaction. If the of this variable is the default L2 sender address, then we are NOT inside of a call to finalizeWithdrawalTransaction."},"messageRelayer()":{"notice":"Message relayer to allowed immediate withdraw."},"minimumGasLimit(uint64)":{"notice":"Computes the minimum gas limit for a deposit. The minimum gas limit linearly increases based on the size of the calldata. This is to prevent users from creating L2 resource usage without paying for it. This function can be used when interacting with the portal to ensure forwards compatibility."},"params()":{"notice":"EIP-1559 style gas parameters."},"pause()":{"notice":"Pauses withdrawals."},"paused()":{"notice":"Determines if cross domain messaging is paused. When set to true, withdrawals are paused. This may be removed in the future."},"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":{"notice":"Proves a withdrawal transaction."},"provenWithdrawals(bytes32)":{"notice":"A mapping of withdrawal hashes to `ProvenWithdrawal` data."},"setMessageRelayer(address)":{"notice":"Set a new message relayer address. If the zero address is set, no immediate relay of withdrawal messages."},"systemConfig()":{"notice":"Getter function for the address of the SystemConfig on this chain.Address of the SystemConfig on this chain."},"unpause()":{"notice":"Unpauses withdrawals."},"version()":{"notice":"Semantic version."}},"events":{"MessageRelayerSet(address)":{"notice":"Emitted when a new message relayer is set."},"Paused(address)":{"notice":"Emitted when the pause is triggered."},"TransactionDeposited(address,address,uint256,bytes)":{"notice":"Emitted when a transaction is deposited from L1 to L2. The parameters of this event are read by the rollup node and used to derive deposit transactions on L2."},"Unpaused(address)":{"notice":"Emitted when the pause is lifted."},"WithdrawalFinalized(bytes32,bool)":{"notice":"Emitted when a withdrawal transaction is finalized."},"WithdrawalProven(bytes32,address,address)":{"notice":"Emitted when a withdrawal transaction is proven."}},"notice":"The OasysPortal is a contract that extends OptimismPortal to enable fast messaging from L2 to L1."},"devdoc":{"version":1,"kind":"dev","methods":{"depositTransaction(address,uint256,uint64,bool,bytes)":{"params":{"_data":"Data to trigger the recipient with.","_gasLimit":"Amount of L2 gas to purchase by burning gas on L1.","_isCreation":"Whether or not the transaction is a contract creation.","_to":"Target address on L2.","_value":"ETH value to send to the recipient."}},"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))":{"params":{"_tx":"Withdrawal transaction to finalize."}},"isOutputFinalized(uint256)":{"params":{"_l2OutputIndex":"Index of the L2 output to check."},"returns":{"_0":"Whether or not the output is finalized."}},"minimumGasLimit(uint64)":{"params":{"_byteCount":"Number of bytes in the calldata."},"returns":{"_0":"The minimum gas limit for a deposit."}},"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])":{"params":{"_l2OutputIndex":"L2 output index to prove against.","_outputRootProof":"Inclusion proof of the L2ToL1MessagePasser contract's storage root.","_tx":"Withdrawal transaction to finalize.","_withdrawalProof":"Inclusion proof of the withdrawal in L2ToL1MessagePasser contract."}}},"events":{"MessageRelayerSet(address)":{"params":{"relayer":"The address of the new message relayer."}}}},"ast":{"absolutePath":"src/oasys/L1/messaging/OasysPortal.sol","id":62130,"exportedSymbols":{"Constants":[54936],"Hashing":[55451],"IOasysL2OutputOracle":[61617],"L2OutputOracle":[52175],"OasysPortal":[62129],"OptimismPortal":[52889],"SafeCall":[55623],"SystemConfig":[53935],"Types":[55739]},"nodeType":"SourceUnit","src":"32:4170:110","nodes":[{"id":61942,"nodeType":"PragmaDirective","src":"32:23:110","nodes":[],"literals":["solidity","0.8",".15"]},{"id":61944,"nodeType":"ImportDirective","src":"57:48:110","nodes":[],"absolutePath":"src/libraries/Types.sol","file":"src/libraries/Types.sol","nameLocation":"-1:-1:-1","scope":62130,"sourceUnit":55740,"symbolAliases":[{"foreign":{"id":61943,"name":"Types","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55739,"src":"66:5:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":61946,"nodeType":"ImportDirective","src":"106:56:110","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":62130,"sourceUnit":54937,"symbolAliases":[{"foreign":{"id":61945,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54936,"src":"115:9:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":61948,"nodeType":"ImportDirective","src":"163:54:110","nodes":[],"absolutePath":"src/libraries/SafeCall.sol","file":"src/libraries/SafeCall.sol","nameLocation":"-1:-1:-1","scope":62130,"sourceUnit":55624,"symbolAliases":[{"foreign":{"id":61947,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55623,"src":"172:8:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":61950,"nodeType":"ImportDirective","src":"218:52:110","nodes":[],"absolutePath":"src/libraries/Hashing.sol","file":"src/libraries/Hashing.sol","nameLocation":"-1:-1:-1","scope":62130,"sourceUnit":55452,"symbolAliases":[{"foreign":{"id":61949,"name":"Hashing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55451,"src":"227:7:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":61952,"nodeType":"ImportDirective","src":"271:59:110","nodes":[],"absolutePath":"src/L1/OptimismPortal.sol","file":"src/L1/OptimismPortal.sol","nameLocation":"-1:-1:-1","scope":62130,"sourceUnit":52890,"symbolAliases":[{"foreign":{"id":61951,"name":"OptimismPortal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52889,"src":"280:14:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":61954,"nodeType":"ImportDirective","src":"331:59:110","nodes":[],"absolutePath":"src/L1/L2OutputOracle.sol","file":"src/L1/L2OutputOracle.sol","nameLocation":"-1:-1:-1","scope":62130,"sourceUnit":52176,"symbolAliases":[{"foreign":{"id":61953,"name":"L2OutputOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52175,"src":"340:14:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":61956,"nodeType":"ImportDirective","src":"391:55:110","nodes":[],"absolutePath":"src/L1/SystemConfig.sol","file":"src/L1/SystemConfig.sol","nameLocation":"-1:-1:-1","scope":62130,"sourceUnit":53936,"symbolAliases":[{"foreign":{"id":61955,"name":"SystemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53935,"src":"400:12:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":61958,"nodeType":"ImportDirective","src":"447:88:110","nodes":[],"absolutePath":"src/oasys/L1/interfaces/IOasysL2OutputOracle.sol","file":"src/oasys/L1/interfaces/IOasysL2OutputOracle.sol","nameLocation":"-1:-1:-1","scope":62130,"sourceUnit":61618,"symbolAliases":[{"foreign":{"id":61957,"name":"IOasysL2OutputOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61617,"src":"456:20:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":62129,"nodeType":"ContractDefinition","src":"702:3499:110","nodes":[{"id":61964,"nodeType":"VariableDeclaration","src":"810:29:110","nodes":[],"constant":false,"documentation":{"id":61962,"nodeType":"StructuredDocumentation","src":"747:58:110","text":"@notice Message relayer to allowed immediate withdraw."},"functionSelector":"4f3b457e","mutability":"mutable","name":"messageRelayer","nameLocation":"825:14:110","scope":62129,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61963,"name":"address","nodeType":"ElementaryTypeName","src":"810:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":61969,"nodeType":"EventDefinition","src":"968:49:110","nodes":[],"anonymous":false,"documentation":{"id":61965,"nodeType":"StructuredDocumentation","src":"846:117:110","text":"@notice Emitted when a new message relayer is set.\n @param relayer The address of the new message relayer."},"eventSelector":"fce056bb1203f3a49718c0c063cdde76b64ede7be48768dcf101ca2fc1358cfe","name":"MessageRelayerSet","nameLocation":"974:17:110","parameters":{"id":61968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61967,"indexed":true,"mutability":"mutable","name":"relayer","nameLocation":"1008:7:110","nodeType":"VariableDeclaration","scope":61969,"src":"992:23:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61966,"name":"address","nodeType":"ElementaryTypeName","src":"992:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"991:25:110"}},{"id":61989,"nodeType":"FunctionDefinition","src":"1023:213:110","nodes":[],"body":{"id":61988,"nodeType":"Block","src":"1233:3:110","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":61982,"name":"_l2Oracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61972,"src":"1183:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_L2OutputOracle_$52175","typeString":"contract L2OutputOracle"}},{"id":61983,"name":"_guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61974,"src":"1194:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61984,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61976,"src":"1205:7:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":61985,"name":"_systemConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61979,"src":"1214:13:110","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$53935","typeString":"contract SystemConfig"}}],"id":61986,"kind":"baseConstructorSpecifier","modifierName":{"id":61981,"name":"OptimismPortal","nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"1168:14:110"},"nodeType":"ModifierInvocation","src":"1168:60:110"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":61980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61972,"mutability":"mutable","name":"_l2Oracle","nameLocation":"1059:9:110","nodeType":"VariableDeclaration","scope":61989,"src":"1044:24:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_L2OutputOracle_$52175","typeString":"contract L2OutputOracle"},"typeName":{"id":61971,"nodeType":"UserDefinedTypeName","pathNode":{"id":61970,"name":"L2OutputOracle","nodeType":"IdentifierPath","referencedDeclaration":52175,"src":"1044:14:110"},"referencedDeclaration":52175,"src":"1044:14:110","typeDescriptions":{"typeIdentifier":"t_contract$_L2OutputOracle_$52175","typeString":"contract L2OutputOracle"}},"visibility":"internal"},{"constant":false,"id":61974,"mutability":"mutable","name":"_guardian","nameLocation":"1086:9:110","nodeType":"VariableDeclaration","scope":61989,"src":"1078:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61973,"name":"address","nodeType":"ElementaryTypeName","src":"1078:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61976,"mutability":"mutable","name":"_paused","nameLocation":"1110:7:110","nodeType":"VariableDeclaration","scope":61989,"src":"1105:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":61975,"name":"bool","nodeType":"ElementaryTypeName","src":"1105:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":61979,"mutability":"mutable","name":"_systemConfig","nameLocation":"1140:13:110","nodeType":"VariableDeclaration","scope":61989,"src":"1127:26:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$53935","typeString":"contract SystemConfig"},"typeName":{"id":61978,"nodeType":"UserDefinedTypeName","pathNode":{"id":61977,"name":"SystemConfig","nodeType":"IdentifierPath","referencedDeclaration":53935,"src":"1127:12:110"},"referencedDeclaration":53935,"src":"1127:12:110","typeDescriptions":{"typeIdentifier":"t_contract$_SystemConfig_$53935","typeString":"contract SystemConfig"}},"visibility":"internal"}],"src":"1034:125:110"},"returnParameters":{"id":61987,"nodeType":"ParameterList","parameters":[],"src":"1233:0:110"},"scope":62129,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":62003,"nodeType":"FunctionDefinition","src":"1277:92:110","nodes":[],"body":{"id":62002,"nodeType":"Block","src":"1327:42:110","nodes":[],"statements":[{"expression":{"arguments":[{"id":61999,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61992,"src":"1354:7:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":61996,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1337:5:110","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OasysPortal_$62129_$","typeString":"type(contract super OasysPortal)"}},"id":61998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":52361,"src":"1337:16:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":62000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1337:25:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62001,"nodeType":"ExpressionStatement","src":"1337:25:110"}]},"baseFunctions":[52361],"documentation":{"id":61990,"nodeType":"StructuredDocumentation","src":"1242:30:110","text":"@inheritdoc OptimismPortal"},"functionSelector":"d53a822f","implemented":true,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1286:10:110","overrides":{"id":61994,"nodeType":"OverrideSpecifier","overrides":[],"src":"1318:8:110"},"parameters":{"id":61993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61992,"mutability":"mutable","name":"_paused","nameLocation":"1302:7:110","nodeType":"VariableDeclaration","scope":62003,"src":"1297:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":61991,"name":"bool","nodeType":"ElementaryTypeName","src":"1297:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1296:14:110"},"returnParameters":{"id":61995,"nodeType":"ParameterList","parameters":[],"src":"1327:0:110"},"scope":62129,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":62020,"nodeType":"FunctionDefinition","src":"1431:155:110","nodes":[],"body":{"id":62019,"nodeType":"Block","src":"1508:78:110","nodes":[],"statements":[{"expression":{"id":62013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":62011,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61964,"src":"1518:14:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":62012,"name":"_messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62008,"src":"1535:15:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1518:32:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":62014,"nodeType":"ExpressionStatement","src":"1518:32:110"},{"expression":{"arguments":[{"id":62016,"name":"_paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62006,"src":"1571:7:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":62015,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[62003],"referencedDeclaration":62003,"src":"1560:10:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":62017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1560:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62018,"nodeType":"ExpressionStatement","src":"1560:19:110"}]},"documentation":{"id":62004,"nodeType":"StructuredDocumentation","src":"1375:51:110","text":"@notice Initalize with setting messager relayer"},"functionSelector":"fc69f6e8","implemented":true,"kind":"function","modifiers":[],"name":"initializeWithRelayer","nameLocation":"1440:21:110","parameters":{"id":62009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62006,"mutability":"mutable","name":"_paused","nameLocation":"1467:7:110","nodeType":"VariableDeclaration","scope":62020,"src":"1462:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":62005,"name":"bool","nodeType":"ElementaryTypeName","src":"1462:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":62008,"mutability":"mutable","name":"_messageRelayer","nameLocation":"1484:15:110","nodeType":"VariableDeclaration","scope":62020,"src":"1476:23:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62007,"name":"address","nodeType":"ElementaryTypeName","src":"1476:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1461:39:110"},"returnParameters":{"id":62010,"nodeType":"ParameterList","parameters":[],"src":"1508:0:110"},"scope":62129,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":62050,"nodeType":"FunctionDefinition","src":"1730:321:110","nodes":[],"body":{"id":62049,"nodeType":"Block","src":"1786:265:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":62027,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1804:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":62028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1804:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":62029,"name":"GUARDIAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52234,"src":"1818:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1804:22:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f61737973506f7274616c3a206f6e6c7920677561726469616e2063616e207365742061206e6577206d6573736167652072656c61796572","id":62031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1828:58:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_47d0f58a330148cd3f29fa7e6280b351cacbcf60bb7399f85c308872c52e4fd9","typeString":"literal_string \"OasysPortal: only guardian can set a new message relayer\""},"value":"OasysPortal: only guardian can set a new message relayer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47d0f58a330148cd3f29fa7e6280b351cacbcf60bb7399f85c308872c52e4fd9","typeString":"literal_string \"OasysPortal: only guardian can set a new message relayer\""}],"id":62026,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1796:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1796:91:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62033,"nodeType":"ExpressionStatement","src":"1796:91:110"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62035,"name":"newRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62023,"src":"1905:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":62036,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61964,"src":"1919:14:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1905:28:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f61737973506f7274616c3a20616c726561647920736574","id":62038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1935:26:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4df827f34b3afa3ff98ae71fa6b422f561aa4902571bb209610a818accbf951","typeString":"literal_string \"OasysPortal: already set\""},"value":"OasysPortal: already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c4df827f34b3afa3ff98ae71fa6b422f561aa4902571bb209610a818accbf951","typeString":"literal_string \"OasysPortal: already set\""}],"id":62034,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1897:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1897:65:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62040,"nodeType":"ExpressionStatement","src":"1897:65:110"},{"expression":{"id":62043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":62041,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61964,"src":"1973:14:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":62042,"name":"newRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62023,"src":"1990:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1973:27:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":62044,"nodeType":"ExpressionStatement","src":"1973:27:110"},{"eventCall":{"arguments":[{"id":62046,"name":"newRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62023,"src":"2033:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":62045,"name":"MessageRelayerSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61969,"src":"2015:17:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":62047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2015:29:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62048,"nodeType":"EmitStatement","src":"2010:34:110"}]},"documentation":{"id":62021,"nodeType":"StructuredDocumentation","src":"1592:133:110","text":"@notice Set a new message relayer address.\n If the zero address is set, no immediate relay of withdrawal messages."},"functionSelector":"6cfd26e9","implemented":true,"kind":"function","modifiers":[],"name":"setMessageRelayer","nameLocation":"1739:17:110","parameters":{"id":62024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62023,"mutability":"mutable","name":"newRelayer","nameLocation":"1765:10:110","nodeType":"VariableDeclaration","scope":62050,"src":"1757:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62022,"name":"address","nodeType":"ElementaryTypeName","src":"1757:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1756:20:110"},"returnParameters":{"id":62025,"nodeType":"ParameterList","parameters":[],"src":"1786:0:110"},"scope":62129,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":62082,"nodeType":"FunctionDefinition","src":"2275:248:110","nodes":[],"body":{"id":62081,"nodeType":"Block","src":"2369:154:110","nodes":[],"statements":[{"assignments":[62059],"declarations":[{"constant":false,"id":62059,"mutability":"mutable","name":"length","nameLocation":"2387:6:110","nodeType":"VariableDeclaration","scope":62081,"src":"2379:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62058,"name":"uint256","nodeType":"ElementaryTypeName","src":"2379:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":62062,"initialValue":{"expression":{"id":62060,"name":"_txs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62055,"src":"2396:4:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalTransaction_$55738_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Types.WithdrawalTransaction calldata[] calldata"}},"id":62061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2396:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2379:28:110"},{"body":{"id":62079,"nodeType":"Block","src":"2454:63:110","statements":[{"expression":{"arguments":[{"baseExpression":{"id":62074,"name":"_txs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62055,"src":"2498:4:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalTransaction_$55738_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Types.WithdrawalTransaction calldata[] calldata"}},"id":62076,"indexExpression":{"id":62075,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62064,"src":"2503:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2498:7:110","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawalTransaction_$55738_calldata_ptr","typeString":"struct Types.WithdrawalTransaction calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_WithdrawalTransaction_$55738_calldata_ptr","typeString":"struct Types.WithdrawalTransaction calldata"}],"id":62073,"name":"finalizeWithdrawalTransaction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52762,"src":"2468:29:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_WithdrawalTransaction_$55738_memory_ptr_$returns$__$","typeString":"function (struct Types.WithdrawalTransaction memory)"}},"id":62077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2468:38:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62078,"nodeType":"ExpressionStatement","src":"2468:38:110"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":62069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62067,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62064,"src":"2437:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":62068,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62059,"src":"2441:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2437:10:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62080,"initializationExpression":{"assignments":[62064],"declarations":[{"constant":false,"id":62064,"mutability":"mutable","name":"i","nameLocation":"2430:1:110","nodeType":"VariableDeclaration","scope":62080,"src":"2422:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62063,"name":"uint256","nodeType":"ElementaryTypeName","src":"2422:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":62066,"initialValue":{"hexValue":"30","id":62065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2434:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2422:13:110"},"loopExpression":{"expression":{"id":62071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2449:3:110","subExpression":{"id":62070,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62064,"src":"2449:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":62072,"nodeType":"ExpressionStatement","src":"2449:3:110"},"nodeType":"ForStatement","src":"2417:100:110"}]},"documentation":{"id":62051,"nodeType":"StructuredDocumentation","src":"2057:213:110","text":"@notice Batch finalizes withdrawal transactions.\n This method is necessary because it is not possible to check\n whether msg.sender is a message relayer via the Multicall contract."},"functionSelector":"057bbee1","implemented":true,"kind":"function","modifiers":[],"name":"finalizeWithdrawalTransactions","nameLocation":"2284:30:110","parameters":{"id":62056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62055,"mutability":"mutable","name":"_txs","nameLocation":"2354:4:110","nodeType":"VariableDeclaration","scope":62082,"src":"2315:43:110","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalTransaction_$55738_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Types.WithdrawalTransaction[]"},"typeName":{"baseType":{"id":62053,"nodeType":"UserDefinedTypeName","pathNode":{"id":62052,"name":"Types.WithdrawalTransaction","nodeType":"IdentifierPath","referencedDeclaration":55738,"src":"2315:27:110"},"referencedDeclaration":55738,"src":"2315:27:110","typeDescriptions":{"typeIdentifier":"t_struct$_WithdrawalTransaction_$55738_storage_ptr","typeString":"struct Types.WithdrawalTransaction"}},"id":62054,"nodeType":"ArrayTypeName","src":"2315:29:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_WithdrawalTransaction_$55738_storage_$dyn_storage_ptr","typeString":"struct Types.WithdrawalTransaction[]"}},"visibility":"internal"}],"src":"2314:45:110"},"returnParameters":{"id":62057,"nodeType":"ParameterList","parameters":[],"src":"2369:0:110"},"scope":62129,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":62128,"nodeType":"FunctionDefinition","src":"2943:1256:110","nodes":[],"body":{"id":62127,"nodeType":"Block","src":"3039:1160:110","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":62101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62091,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61964,"src":"3053:14:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":62094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":62093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3071:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62092,"name":"address","nodeType":"ElementaryTypeName","src":"3071:7:110","typeDescriptions":{}}},"id":62095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3071:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3053:28:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":62097,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3085:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":62098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3085:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":62099,"name":"messageRelayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61964,"src":"3099:14:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3085:28:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3053:60:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62121,"nodeType":"IfStatement","src":"3049:1081:110","trueBody":{"id":62120,"nodeType":"Block","src":"3115:1015:110","statements":[{"assignments":[62103],"declarations":[{"constant":false,"id":62103,"mutability":"mutable","name":"verified","nameLocation":"3962:8:110","nodeType":"VariableDeclaration","scope":62120,"src":"3954:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62102,"name":"uint256","nodeType":"ElementaryTypeName","src":"3954:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":62112,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":62107,"name":"L2_ORACLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52227,"src":"4002:9:110","typeDescriptions":{"typeIdentifier":"t_contract$_L2OutputOracle_$52175","typeString":"contract L2OutputOracle"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_L2OutputOracle_$52175","typeString":"contract L2OutputOracle"}],"id":62106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3994:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62105,"name":"address","nodeType":"ElementaryTypeName","src":"3994:7:110","typeDescriptions":{}}},"id":62108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3994:18:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":62104,"name":"IOasysL2OutputOracle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61617,"src":"3973:20:110","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOasysL2OutputOracle_$61617_$","typeString":"type(contract IOasysL2OutputOracle)"}},"id":62109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3973:40:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOasysL2OutputOracle_$61617","typeString":"contract IOasysL2OutputOracle"}},"id":62110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifiedL1Timestamp","nodeType":"MemberAccess","referencedDeclaration":61608,"src":"3973:60:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":62111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3973:62:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"3954:81:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":62115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62113,"name":"verified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62103,"src":"4053:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":62114,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62085,"src":"4064:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4053:21:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62119,"nodeType":"IfStatement","src":"4049:71:110","trueBody":{"id":62118,"nodeType":"Block","src":"4076:44:110","statements":[{"expression":{"hexValue":"74727565","id":62116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4101:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":62090,"id":62117,"nodeType":"Return","src":"4094:11:110"}]}}]}},{"expression":{"arguments":[{"id":62124,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62085,"src":"4181:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":62122,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4146:5:110","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OasysPortal_$62129_$","typeString":"type(contract super OasysPortal)"}},"id":62123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_isFinalizationPeriodElapsed","nodeType":"MemberAccess","referencedDeclaration":52888,"src":"4146:34:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":62125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4146:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":62090,"id":62126,"nodeType":"Return","src":"4139:53:110"}]},"baseFunctions":[52888],"documentation":{"id":62083,"nodeType":"StructuredDocumentation","src":"2529:409:110","text":"@notice Determines whether the finalization period has elapsed with respect to\n the provided block timestamp.\n If the caller is an authorized message relayer and the timestamp\n is immediately verified, no need to wait for the finalization period.\n @param _timestamp Timestamp to check.\n @return Whether or not the finalization period has elapsed."},"implemented":true,"kind":"function","modifiers":[],"name":"_isFinalizationPeriodElapsed","nameLocation":"2952:28:110","overrides":{"id":62087,"nodeType":"OverrideSpecifier","overrides":[],"src":"3015:8:110"},"parameters":{"id":62086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62085,"mutability":"mutable","name":"_timestamp","nameLocation":"2989:10:110","nodeType":"VariableDeclaration","scope":62128,"src":"2981:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62084,"name":"uint256","nodeType":"ElementaryTypeName","src":"2981:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2980:20:110"},"returnParameters":{"id":62090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":62128,"src":"3033:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":62088,"name":"bool","nodeType":"ElementaryTypeName","src":"3033:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3032:6:110"},"scope":62129,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":61960,"name":"OptimismPortal","nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"726:14:110"},"id":61961,"nodeType":"InheritanceSpecifier","src":"726:14:110"}],"canonicalName":"OasysPortal","contractDependencies":[],"contractKind":"contract","documentation":{"id":61959,"nodeType":"StructuredDocumentation","src":"537:165:110","text":"@custom:proxied\n @title OasysPortal\n @notice The OasysPortal is a contract that extends\n OptimismPortal to enable fast messaging from L2 to L1."},"fullyImplemented":true,"linearizedBaseContracts":[62129,52889,63579,53489,45430],"name":"OasysPortal","nameLocation":"711:11:110","scope":62130,"usedErrors":[]}],"license":"MIT"},"id":110} \ No newline at end of file diff --git a/src/features/oasysHub/verseBuild.ts b/src/features/oasysHub/verseBuild.ts index 80f0e0f..7e7bb18 100644 --- a/src/features/oasysHub/verseBuild.ts +++ b/src/features/oasysHub/verseBuild.ts @@ -6,6 +6,7 @@ import { getL1BuildDepositContract, getProxyAdminContract, getOasysL2OutputOracleContract, + getOasysPortalContract, getSystemConfigContract, } from '@/features/'; @@ -53,6 +54,7 @@ export const getNamedAddressesV2 = async (chainId: number, p2pSequencer: string result.L2OutputOracleProposer = await (await getOasysL2OutputOracleContract(result.L2OutputOracleProxy)).PROPOSER(); result.L2OutputOracleChallenger = await (await getOasysL2OutputOracleContract(result.L2OutputOracleProxy)).CHALLENGER(); result.BatchSender = (await (await getSystemConfigContract(result.SystemConfigProxy)).batcherHash()).replace(/(0{24})(?=\w)/g, ''); + result.MessageRelayer = await (await getOasysPortalContract(result.OptimismPortalProxy)).messageRelayer(); return result; }; diff --git a/src/features/optimism/verse.ts b/src/features/optimism/verse.ts index 6fcc73a..1160728 100644 --- a/src/features/optimism/verse.ts +++ b/src/features/optimism/verse.ts @@ -129,6 +129,9 @@ export const getVerseInfoV2 = async ( finalizationPeriodSeconds: Number(await l2OOContract.FINALIZATION_PERIOD_SECONDS()), gasPriceOracleOverhead: Number(await systemConfigContract.overhead()), gasPriceOracleScalar: Number(await systemConfigContract.scalar()), + governanceTokenName: "", + governanceTokenOwner: namedAddresses.FinalSystemOwner, + governanceTokenSymbol: "", l1BlockTime: L1BlockTime, l1ChainID, l1CrossDomainMessengerProxy: namedAddresses.L1CrossDomainMessengerProxy, @@ -148,6 +151,7 @@ export const getVerseInfoV2 = async ( l2OutputOracleStartingBlockNumber: Number(await l2OOContract.startingBlockNumber()), l2OutputOracleStartingTimestamp: Number(await l2OOContract.startingTimestamp()), l2OutputOracleSubmissionInterval: Number(await l2OOContract.SUBMISSION_INTERVAL()), + l2ZeroFeeTime: latestL1Block.timestamp, maxSequencerDrift: MaxSequencerDrift, optimismPortalProxy: namedAddresses.OptimismPortalProxy, p2pSequencerAddress: namedAddresses.P2PSequencer, diff --git a/src/types/contracts/L1BuildAgent.ts b/src/types/contracts/L1BuildAgent.ts index 5cd3824..43709a7 100644 --- a/src/types/contracts/L1BuildAgent.ts +++ b/src/types/contracts/L1BuildAgent.ts @@ -23,12 +23,12 @@ import type { } from "./common"; export type BuildConfigStruct = [ - string, string, string, string, string, BigNumberish, BigNumberish, BigNumberish, BigNumberish, BigNumberish, BigNumberish + string, string, string, string, string, string, BigNumberish, BigNumberish, BigNumberish, BigNumberish, BigNumberish, BigNumberish ]; export interface L1BuildAgentInterface extends utils.Interface { functions: { - "build(uint256,(address,address,address,address,uint256,uint64,uint256,uint256,uint256,uint256))": FunctionFragment; + "build(uint256,(address,address,address,address,address,uint256,uint64,uint256,uint256,uint256,uint256))": FunctionFragment; "build(uint256,address,address)": FunctionFragment; "depositAddress()": FunctionFragment; "getAddressManager(uint256)": FunctionFragment; diff --git a/src/types/oasysHub/verseBuild.ts b/src/types/oasysHub/verseBuild.ts index 4f36ed8..620976c 100644 --- a/src/types/oasysHub/verseBuild.ts +++ b/src/types/oasysHub/verseBuild.ts @@ -36,6 +36,7 @@ export type NamedAddressesV2 = { OptimismPortalProxy: string; ProtocolVersions: string; BatchInbox: string; + MessageRelayer: string; AddressManager: string; P2PSequencer: string; } diff --git a/src/types/optimism/verse.ts b/src/types/optimism/verse.ts index fa12d13..c9fe1b0 100644 --- a/src/types/optimism/verse.ts +++ b/src/types/optimism/verse.ts @@ -50,6 +50,7 @@ export type DeployConfig = { l2OutputOracleStartingBlockNumber: number; l2OutputOracleStartingTimestamp: number; l2OutputOracleSubmissionInterval: number; + l2ZeroFeeTime: number; maxSequencerDrift: number; optimismPortalProxy: string; p2pSequencerAddress: string; From 12dd5bb56873c6e02334ab6de6c0e076b2c8456d Mon Sep 17 00:00:00 2001 From: tak Date: Fri, 12 Apr 2024 13:37:14 +0700 Subject: [PATCH 07/10] move message relayer --- src/components/organisms/verseInfoV2.tsx | 2 +- src/features/oasysHub/verseBuild.ts | 1 - src/features/optimism/verse.ts | 2 ++ src/types/oasysHub/verseBuild.ts | 1 - src/types/optimism/verse.ts | 1 + 5 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/organisms/verseInfoV2.tsx b/src/components/organisms/verseInfoV2.tsx index 1e702b1..28ed16b 100644 --- a/src/components/organisms/verseInfoV2.tsx +++ b/src/components/organisms/verseInfoV2.tsx @@ -59,7 +59,7 @@ export const VerseInfoV2 = (props: Props) => { ['OptimismPortalProxy', verseInfo.namedAddresses.OptimismPortalProxy], ['ProtocolVersions', verseInfo.namedAddresses.ProtocolVersions], ['BatchInbox', verseInfo.namedAddresses.BatchInbox], - ['MessageRelayer', verseInfo.namedAddresses.MessageRelayer], + ['MessageRelayer', verseInfo.messageRelayer], ['AddressManager', verseInfo.namedAddresses.AddressManager], ['P2PSequencer', verseInfo.namedAddresses.P2PSequencer], ]; diff --git a/src/features/oasysHub/verseBuild.ts b/src/features/oasysHub/verseBuild.ts index 7e7bb18..3e399f5 100644 --- a/src/features/oasysHub/verseBuild.ts +++ b/src/features/oasysHub/verseBuild.ts @@ -54,7 +54,6 @@ export const getNamedAddressesV2 = async (chainId: number, p2pSequencer: string result.L2OutputOracleProposer = await (await getOasysL2OutputOracleContract(result.L2OutputOracleProxy)).PROPOSER(); result.L2OutputOracleChallenger = await (await getOasysL2OutputOracleContract(result.L2OutputOracleProxy)).CHALLENGER(); result.BatchSender = (await (await getSystemConfigContract(result.SystemConfigProxy)).batcherHash()).replace(/(0{24})(?=\w)/g, ''); - result.MessageRelayer = await (await getOasysPortalContract(result.OptimismPortalProxy)).messageRelayer(); return result; }; diff --git a/src/features/optimism/verse.ts b/src/features/optimism/verse.ts index 1160728..b82b718 100644 --- a/src/features/optimism/verse.ts +++ b/src/features/optimism/verse.ts @@ -102,6 +102,7 @@ export const getVerseInfoV2 = async ( const l2OOContract = await getOasysL2OutputOracleContract(namedAddresses.L2OutputOracleProxy); const portalContract = await getOasysPortalContract(namedAddresses.OptimismPortalProxy); const systemConfigContract = await getSystemConfigContract(namedAddresses.SystemConfigProxy); + const messageRelayer = await (await getOasysPortalContract(namedAddresses.OptimismPortalProxy)).messageRelayer(); namedAddresses.P2PSequencer = await systemConfigContract.unsafeBlockSigner(); @@ -113,6 +114,7 @@ export const getVerseInfoV2 = async ( return { chainId: verseChainId, + messageRelayer: messageRelayer, namedAddresses: namedAddresses, deployConfig: { baseFeeVaultMinimumWithdrawalAmount: BaseFeeVaultMinimumWithdrawalAmount, diff --git a/src/types/oasysHub/verseBuild.ts b/src/types/oasysHub/verseBuild.ts index 620976c..4f36ed8 100644 --- a/src/types/oasysHub/verseBuild.ts +++ b/src/types/oasysHub/verseBuild.ts @@ -36,7 +36,6 @@ export type NamedAddressesV2 = { OptimismPortalProxy: string; ProtocolVersions: string; BatchInbox: string; - MessageRelayer: string; AddressManager: string; P2PSequencer: string; } diff --git a/src/types/optimism/verse.ts b/src/types/optimism/verse.ts index c9fe1b0..b6ff4dd 100644 --- a/src/types/optimism/verse.ts +++ b/src/types/optimism/verse.ts @@ -9,6 +9,7 @@ export type VerseInfo = { export type VerseInfoV2 = { chainId: number; + messageRelayer: string; namedAddresses: NamedAddressesV2; deployConfig: DeployConfig; } From c49b1c473d5322365309330c2a61e9b816538e79 Mon Sep 17 00:00:00 2001 From: ironbeer <7997273+ironbeer@users.noreply.github.com> Date: Sun, 14 Apr 2024 17:41:47 +0900 Subject: [PATCH 08/10] Set L1 starting block strictly from L2 starting timestamp --- src/features/common/block.ts | 32 ++++++++++++++++++++++++++++++++ src/features/common/index.ts | 1 + src/features/optimism/verse.ts | 17 +++++++++++++---- 3 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 src/features/common/block.ts diff --git a/src/features/common/block.ts b/src/features/common/block.ts new file mode 100644 index 0000000..1c94d27 --- /dev/null +++ b/src/features/common/block.ts @@ -0,0 +1,32 @@ +import { providers } from "ethers"; + +// Search for the block that exactly matches the specified timestamp. +export const getBlockByTime = async ( + provider: providers.Provider, + targetBlockTime: number, + blockPeriod: number +): Promise => { + const latest = await provider.getBlock("latest"); + if (targetBlockTime > latest.timestamp) { + return null; + } + + let number = latest.number - ~~((latest.timestamp - targetBlockTime) / blockPeriod); + if (number < 0) { + return null; + } + + while (true) { + const block = await provider.getBlock(number); + const diff = block.timestamp - targetBlockTime; + if (diff === 0) { + return block; + } + if (Math.abs(diff) < blockPeriod) { + break; + } + number -= ~(diff / blockPeriod); + } + + return null; +}; diff --git a/src/features/common/index.ts b/src/features/common/index.ts index 0acec30..3d458a5 100644 --- a/src/features/common/index.ts +++ b/src/features/common/index.ts @@ -7,3 +7,4 @@ export * from './download'; export * from './contracts'; export * from './transaction'; export * from './amount'; +export * from './block'; diff --git a/src/features/optimism/verse.ts b/src/features/optimism/verse.ts index 1160728..9b2c185 100644 --- a/src/features/optimism/verse.ts +++ b/src/features/optimism/verse.ts @@ -26,10 +26,10 @@ import { getNamedAddressesV2, getSigner, getL1BuildDepositContract, - getL1BuildAgentContract, getSystemConfigContract, getOasysL2OutputOracleContract, getOasysPortalContract, + getBlockByTime, } from "@/features"; import { Genesis, GenesisParams } from "@/types/optimism/genesis"; import { @@ -110,6 +110,15 @@ export const getVerseInfoV2 = async ( // Go ERR: cannot unmarshal deploy config: json: cannot unmarshal hex number with leading zero digits into Go struct field DeployConfig.l2GenesisBlockGasLimit of type hexutil.Uint64 l2GasLimit = l2GasLimit.replace(/^(0x)0+/, '$1'); + // Search for the L1 starting block from the L2OO starting timestamp. + const l2StartTime: BigNumber = await l2OOContract.startingTimestamp(); + if (l2StartTime.isZero()) { + throw new Error("`startingTimestamp` is not set for the L2OutputOracle"); + } + const l1StartBlock = await getBlockByTime(signer.provider, Number(l2StartTime), L1BlockTime); + if (!l1StartBlock) { + throw new Error(`Could not find L1 block matching L2 starting timestamp: ${l2StartTime}`); + } return { chainId: verseChainId, @@ -140,7 +149,7 @@ export const getVerseInfoV2 = async ( l1FeeVaultRecipient: namedAddresses.FinalSystemOwner, l1FeeVaultWithdrawalNetwork: L1FeeVaultWithdrawalNetwork, l1StandardBridgeProxy: namedAddresses.L1StandardBridgeProxy, - l1StartingBlockTag: latestL1Block.hash, + l1StartingBlockTag: l1StartBlock.hash, l2BlockTime: Number(await l2OOContract.L2_BLOCK_TIME()), l2ChainID: verseChainId, l2GenesisBlockBaseFeePerGas: L2GenesisBlockBaseFeePerGas, @@ -149,9 +158,9 @@ export const getVerseInfoV2 = async ( l2OutputOracleChallenger: namedAddresses.L2OutputOracleChallenger, l2OutputOracleProposer: namedAddresses.L2OutputOracleProposer, l2OutputOracleStartingBlockNumber: Number(await l2OOContract.startingBlockNumber()), - l2OutputOracleStartingTimestamp: Number(await l2OOContract.startingTimestamp()), + l2OutputOracleStartingTimestamp: Number(l2StartTime), l2OutputOracleSubmissionInterval: Number(await l2OOContract.SUBMISSION_INTERVAL()), - l2ZeroFeeTime: latestL1Block.timestamp, + l2ZeroFeeTime: Number(l2StartTime), maxSequencerDrift: MaxSequencerDrift, optimismPortalProxy: namedAddresses.OptimismPortalProxy, p2pSequencerAddress: namedAddresses.P2PSequencer, From 66fe05b67f532c2065774ba5951ae5c7c0d49bec Mon Sep 17 00:00:00 2001 From: ironbeer <7997273+ironbeer@users.noreply.github.com> Date: Sun, 14 Apr 2024 21:08:50 +0900 Subject: [PATCH 09/10] Fix wrong operator --- src/features/common/block.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/features/common/block.ts b/src/features/common/block.ts index 1c94d27..1b36468 100644 --- a/src/features/common/block.ts +++ b/src/features/common/block.ts @@ -25,7 +25,7 @@ export const getBlockByTime = async ( if (Math.abs(diff) < blockPeriod) { break; } - number -= ~(diff / blockPeriod); + number -= ~~(diff / blockPeriod); } return null; From 911d7faf9543ffa3244931116f0677e0f06e3e6c Mon Sep 17 00:00:00 2001 From: tak Date: Mon, 15 Apr 2024 19:22:06 +0700 Subject: [PATCH 10/10] rename v2 to v1 --- src/components/templates/buildVerse.tsx | 2 +- src/components/templates/depositVerse.tsx | 6 +++--- src/pages/check-verse.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/templates/buildVerse.tsx b/src/components/templates/buildVerse.tsx index 1aad834..fb65819 100644 --- a/src/components/templates/buildVerse.tsx +++ b/src/components/templates/buildVerse.tsx @@ -19,7 +19,7 @@ export const BuildVerse = (props: Props) => { className, )}> {buildModalOpen && } -

Build Verse 2.0

+

Build Verse v1


-

Witdraw Token for Verse 1.0

-

Since the Verse 1.0 has been deprecated, depositing and building can only be performed through a direct function call to the contract.

+

Witdraw Token for Verse v0

+

Since the Verse v0 has been deprecated, depositing and building can only be performed through a direct function call to the contract.