diff --git a/core/src/all_modules.py b/core/src/all_modules.py new file mode 100644 index 000000000..54318d048 --- /dev/null +++ b/core/src/all_modules.py @@ -0,0 +1,1312 @@ +# generated from all_modules.py.mako +# do not edit manually! +# flake8: noqa +# fmt: off +# isort:skip_file +from trezor.utils import halt + +# this module should not be part of the build, its purpose is only to add missed Qstrings +halt("Tried to import excluded module.") + +# explanation: +# uPy collects string literals and symbol names from all frozen modules, and converts +# them to qstrings for certain usages. In particular, it appears that qualified names +# of modules in sys.modules must be qstrings. However, the collection process is +# imperfect. If `apps.common.mnemonic` is always imported as `from ..common import mnemonic`, +# the string "apps.common.mnemonic" never appears in source code, is never collected, +# but then is generated and interned at runtime. +# A similar thing happens in reverse: if module `storage.cache` is always imported as +# this name, then "storage.cache" is collected but neither "storage" nor "cache" alone. +# Which is a problem, because "cache" is a symbol that is added to `storage`'s dict. +# +# We need to avoid run-time interning as much as possible, because it creates +# uncollectable garbage in the GC arena. +# +# Below, every module is listed both as import (which collects the qualified name) +# and as a symbol (which collects each individual component). +# In addition, we list the alphabet, because apparently one-character strings are always +# interned, and some operation somewhere (rendering?) is reading strings character by +# character. + +all_modules +import all_modules +boot +import boot +main +import main +protobuf +import protobuf +session +import session +usb +import usb +storage +import storage +storage.cache +import storage.cache +storage.common +import storage.common +storage.debug +import storage.debug +storage.device +import storage.device +storage.recovery +import storage.recovery +storage.recovery_shares +import storage.recovery_shares +storage.resident_credentials +import storage.resident_credentials +storage.sd_salt +import storage.sd_salt +trezor +import trezor +trezor.crypto +import trezor.crypto +trezor.crypto.base32 +import trezor.crypto.base32 +trezor.crypto.base58 +import trezor.crypto.base58 +trezor.crypto.bech32 +import trezor.crypto.bech32 +trezor.crypto.cashaddr +import trezor.crypto.cashaddr +trezor.crypto.curve +import trezor.crypto.curve +trezor.crypto.der +import trezor.crypto.der +trezor.crypto.hashlib +import trezor.crypto.hashlib +trezor.crypto.rlp +import trezor.crypto.rlp +trezor.crypto.scripts +import trezor.crypto.scripts +trezor.crypto.slip39 +import trezor.crypto.slip39 +trezor.errors +import trezor.errors +trezor.log +import trezor.log +trezor.loop +import trezor.loop +trezor.messages.Address +import trezor.messages.Address +trezor.messages.AmountUnit +import trezor.messages.AmountUnit +trezor.messages.ApplyFlags +import trezor.messages.ApplyFlags +trezor.messages.ApplySettings +import trezor.messages.ApplySettings +trezor.messages.AuthorizeCoinJoin +import trezor.messages.AuthorizeCoinJoin +trezor.messages.BackupDevice +import trezor.messages.BackupDevice +trezor.messages.BackupType +import trezor.messages.BackupType +trezor.messages.BinanceAddress +import trezor.messages.BinanceAddress +trezor.messages.BinanceCancelMsg +import trezor.messages.BinanceCancelMsg +trezor.messages.BinanceCoin +import trezor.messages.BinanceCoin +trezor.messages.BinanceGetAddress +import trezor.messages.BinanceGetAddress +trezor.messages.BinanceGetPublicKey +import trezor.messages.BinanceGetPublicKey +trezor.messages.BinanceInputOutput +import trezor.messages.BinanceInputOutput +trezor.messages.BinanceOrderMsg +import trezor.messages.BinanceOrderMsg +trezor.messages.BinanceOrderSide +import trezor.messages.BinanceOrderSide +trezor.messages.BinanceOrderType +import trezor.messages.BinanceOrderType +trezor.messages.BinancePublicKey +import trezor.messages.BinancePublicKey +trezor.messages.BinanceSignTx +import trezor.messages.BinanceSignTx +trezor.messages.BinanceSignedTx +import trezor.messages.BinanceSignedTx +trezor.messages.BinanceTimeInForce +import trezor.messages.BinanceTimeInForce +trezor.messages.BinanceTransferMsg +import trezor.messages.BinanceTransferMsg +trezor.messages.BinanceTxRequest +import trezor.messages.BinanceTxRequest +trezor.messages.ButtonAck +import trezor.messages.ButtonAck +trezor.messages.ButtonRequest +import trezor.messages.ButtonRequest +trezor.messages.ButtonRequestType +import trezor.messages.ButtonRequestType +trezor.messages.Cancel +import trezor.messages.Cancel +trezor.messages.CancelAuthorization +import trezor.messages.CancelAuthorization +trezor.messages.Capability +import trezor.messages.Capability +trezor.messages.CardanoAddress +import trezor.messages.CardanoAddress +trezor.messages.CardanoAddressParametersType +import trezor.messages.CardanoAddressParametersType +trezor.messages.CardanoAddressType +import trezor.messages.CardanoAddressType +trezor.messages.CardanoAssetGroupType +import trezor.messages.CardanoAssetGroupType +trezor.messages.CardanoBlockchainPointerType +import trezor.messages.CardanoBlockchainPointerType +trezor.messages.CardanoCatalystRegistrationParametersType +import trezor.messages.CardanoCatalystRegistrationParametersType +trezor.messages.CardanoCertificateType +import trezor.messages.CardanoCertificateType +trezor.messages.CardanoGetAddress +import trezor.messages.CardanoGetAddress +trezor.messages.CardanoGetPublicKey +import trezor.messages.CardanoGetPublicKey +trezor.messages.CardanoPoolMetadataType +import trezor.messages.CardanoPoolMetadataType +trezor.messages.CardanoPoolOwnerType +import trezor.messages.CardanoPoolOwnerType +trezor.messages.CardanoPoolParametersType +import trezor.messages.CardanoPoolParametersType +trezor.messages.CardanoPoolRelayParametersType +import trezor.messages.CardanoPoolRelayParametersType +trezor.messages.CardanoPoolRelayType +import trezor.messages.CardanoPoolRelayType +trezor.messages.CardanoPublicKey +import trezor.messages.CardanoPublicKey +trezor.messages.CardanoSignTx +import trezor.messages.CardanoSignTx +trezor.messages.CardanoSignedTx +import trezor.messages.CardanoSignedTx +trezor.messages.CardanoSignedTxChunk +import trezor.messages.CardanoSignedTxChunk +trezor.messages.CardanoSignedTxChunkAck +import trezor.messages.CardanoSignedTxChunkAck +trezor.messages.CardanoTokenType +import trezor.messages.CardanoTokenType +trezor.messages.CardanoTxAuxiliaryDataType +import trezor.messages.CardanoTxAuxiliaryDataType +trezor.messages.CardanoTxCertificateType +import trezor.messages.CardanoTxCertificateType +trezor.messages.CardanoTxInputType +import trezor.messages.CardanoTxInputType +trezor.messages.CardanoTxOutputType +import trezor.messages.CardanoTxOutputType +trezor.messages.CardanoTxWithdrawalType +import trezor.messages.CardanoTxWithdrawalType +trezor.messages.ChangePin +import trezor.messages.ChangePin +trezor.messages.ChangeWipeCode +import trezor.messages.ChangeWipeCode +trezor.messages.CipherKeyValue +import trezor.messages.CipherKeyValue +trezor.messages.CipheredKeyValue +import trezor.messages.CipheredKeyValue +trezor.messages.DebugLinkDecision +import trezor.messages.DebugLinkDecision +trezor.messages.DebugLinkEraseSdCard +import trezor.messages.DebugLinkEraseSdCard +trezor.messages.DebugLinkGetState +import trezor.messages.DebugLinkGetState +trezor.messages.DebugLinkLayout +import trezor.messages.DebugLinkLayout +trezor.messages.DebugLinkRecordScreen +import trezor.messages.DebugLinkRecordScreen +trezor.messages.DebugLinkReseedRandom +import trezor.messages.DebugLinkReseedRandom +trezor.messages.DebugLinkState +import trezor.messages.DebugLinkState +trezor.messages.DebugLinkWatchLayout +import trezor.messages.DebugLinkWatchLayout +trezor.messages.DebugMoneroDiagAck +import trezor.messages.DebugMoneroDiagAck +trezor.messages.DebugMoneroDiagRequest +import trezor.messages.DebugMoneroDiagRequest +trezor.messages.DebugSwipeDirection +import trezor.messages.DebugSwipeDirection +trezor.messages.DecredStakingSpendType +import trezor.messages.DecredStakingSpendType +trezor.messages.Deprecated_PassphraseStateAck +import trezor.messages.Deprecated_PassphraseStateAck +trezor.messages.Deprecated_PassphraseStateRequest +import trezor.messages.Deprecated_PassphraseStateRequest +trezor.messages.DoPreauthorized +import trezor.messages.DoPreauthorized +trezor.messages.ECDHSessionKey +import trezor.messages.ECDHSessionKey +trezor.messages.EndSession +import trezor.messages.EndSession +trezor.messages.Entropy +import trezor.messages.Entropy +trezor.messages.EntropyAck +import trezor.messages.EntropyAck +trezor.messages.EntropyRequest +import trezor.messages.EntropyRequest +trezor.messages.EosActionBuyRam +import trezor.messages.EosActionBuyRam +trezor.messages.EosActionBuyRamBytes +import trezor.messages.EosActionBuyRamBytes +trezor.messages.EosActionCommon +import trezor.messages.EosActionCommon +trezor.messages.EosActionDelegate +import trezor.messages.EosActionDelegate +trezor.messages.EosActionDeleteAuth +import trezor.messages.EosActionDeleteAuth +trezor.messages.EosActionLinkAuth +import trezor.messages.EosActionLinkAuth +trezor.messages.EosActionNewAccount +import trezor.messages.EosActionNewAccount +trezor.messages.EosActionRefund +import trezor.messages.EosActionRefund +trezor.messages.EosActionSellRam +import trezor.messages.EosActionSellRam +trezor.messages.EosActionTransfer +import trezor.messages.EosActionTransfer +trezor.messages.EosActionUndelegate +import trezor.messages.EosActionUndelegate +trezor.messages.EosActionUnknown +import trezor.messages.EosActionUnknown +trezor.messages.EosActionUnlinkAuth +import trezor.messages.EosActionUnlinkAuth +trezor.messages.EosActionUpdateAuth +import trezor.messages.EosActionUpdateAuth +trezor.messages.EosActionVoteProducer +import trezor.messages.EosActionVoteProducer +trezor.messages.EosAsset +import trezor.messages.EosAsset +trezor.messages.EosAuthorization +import trezor.messages.EosAuthorization +trezor.messages.EosAuthorizationAccount +import trezor.messages.EosAuthorizationAccount +trezor.messages.EosAuthorizationKey +import trezor.messages.EosAuthorizationKey +trezor.messages.EosAuthorizationWait +import trezor.messages.EosAuthorizationWait +trezor.messages.EosGetPublicKey +import trezor.messages.EosGetPublicKey +trezor.messages.EosPermissionLevel +import trezor.messages.EosPermissionLevel +trezor.messages.EosPublicKey +import trezor.messages.EosPublicKey +trezor.messages.EosSignTx +import trezor.messages.EosSignTx +trezor.messages.EosSignedTx +import trezor.messages.EosSignedTx +trezor.messages.EosTxActionAck +import trezor.messages.EosTxActionAck +trezor.messages.EosTxActionRequest +import trezor.messages.EosTxActionRequest +trezor.messages.EosTxHeader +import trezor.messages.EosTxHeader +trezor.messages.EthereumAddress +import trezor.messages.EthereumAddress +trezor.messages.EthereumGetAddress +import trezor.messages.EthereumGetAddress +trezor.messages.EthereumGetPublicKey +import trezor.messages.EthereumGetPublicKey +trezor.messages.EthereumMessageSignature +import trezor.messages.EthereumMessageSignature +trezor.messages.EthereumPublicKey +import trezor.messages.EthereumPublicKey +trezor.messages.EthereumSignMessage +import trezor.messages.EthereumSignMessage +trezor.messages.EthereumSignTx +import trezor.messages.EthereumSignTx +trezor.messages.EthereumTxAck +import trezor.messages.EthereumTxAck +trezor.messages.EthereumTxRequest +import trezor.messages.EthereumTxRequest +trezor.messages.EthereumVerifyMessage +import trezor.messages.EthereumVerifyMessage +trezor.messages.Failure +import trezor.messages.Failure +trezor.messages.FailureType +import trezor.messages.FailureType +trezor.messages.Features +import trezor.messages.Features +trezor.messages.GetAddress +import trezor.messages.GetAddress +trezor.messages.GetECDHSessionKey +import trezor.messages.GetECDHSessionKey +trezor.messages.GetEntropy +import trezor.messages.GetEntropy +trezor.messages.GetFeatures +import trezor.messages.GetFeatures +trezor.messages.GetNextU2FCounter +import trezor.messages.GetNextU2FCounter +trezor.messages.GetOwnershipId +import trezor.messages.GetOwnershipId +trezor.messages.GetOwnershipProof +import trezor.messages.GetOwnershipProof +trezor.messages.GetPublicKey +import trezor.messages.GetPublicKey +trezor.messages.HDNodePathType +import trezor.messages.HDNodePathType +trezor.messages.HDNodeType +import trezor.messages.HDNodeType +trezor.messages.IdentityType +import trezor.messages.IdentityType +trezor.messages.Initialize +import trezor.messages.Initialize +trezor.messages.InputScriptType +import trezor.messages.InputScriptType +trezor.messages.LiskAddress +import trezor.messages.LiskAddress +trezor.messages.LiskDelegateType +import trezor.messages.LiskDelegateType +trezor.messages.LiskGetAddress +import trezor.messages.LiskGetAddress +trezor.messages.LiskGetPublicKey +import trezor.messages.LiskGetPublicKey +trezor.messages.LiskMessageSignature +import trezor.messages.LiskMessageSignature +trezor.messages.LiskMultisignatureType +import trezor.messages.LiskMultisignatureType +trezor.messages.LiskPublicKey +import trezor.messages.LiskPublicKey +trezor.messages.LiskSignMessage +import trezor.messages.LiskSignMessage +trezor.messages.LiskSignTx +import trezor.messages.LiskSignTx +trezor.messages.LiskSignatureType +import trezor.messages.LiskSignatureType +trezor.messages.LiskSignedTx +import trezor.messages.LiskSignedTx +trezor.messages.LiskTransactionAsset +import trezor.messages.LiskTransactionAsset +trezor.messages.LiskTransactionCommon +import trezor.messages.LiskTransactionCommon +trezor.messages.LiskTransactionType +import trezor.messages.LiskTransactionType +trezor.messages.LiskVerifyMessage +import trezor.messages.LiskVerifyMessage +trezor.messages.LoadDevice +import trezor.messages.LoadDevice +trezor.messages.LockDevice +import trezor.messages.LockDevice +trezor.messages.MessageSignature +import trezor.messages.MessageSignature +trezor.messages.MessageType +import trezor.messages.MessageType +trezor.messages.MoneroAccountPublicAddress +import trezor.messages.MoneroAccountPublicAddress +trezor.messages.MoneroAddress +import trezor.messages.MoneroAddress +trezor.messages.MoneroExportedKeyImage +import trezor.messages.MoneroExportedKeyImage +trezor.messages.MoneroGetAddress +import trezor.messages.MoneroGetAddress +trezor.messages.MoneroGetTxKeyAck +import trezor.messages.MoneroGetTxKeyAck +trezor.messages.MoneroGetTxKeyRequest +import trezor.messages.MoneroGetTxKeyRequest +trezor.messages.MoneroGetWatchKey +import trezor.messages.MoneroGetWatchKey +trezor.messages.MoneroKeyImageExportInitAck +import trezor.messages.MoneroKeyImageExportInitAck +trezor.messages.MoneroKeyImageExportInitRequest +import trezor.messages.MoneroKeyImageExportInitRequest +trezor.messages.MoneroKeyImageSyncFinalAck +import trezor.messages.MoneroKeyImageSyncFinalAck +trezor.messages.MoneroKeyImageSyncFinalRequest +import trezor.messages.MoneroKeyImageSyncFinalRequest +trezor.messages.MoneroKeyImageSyncStepAck +import trezor.messages.MoneroKeyImageSyncStepAck +trezor.messages.MoneroKeyImageSyncStepRequest +import trezor.messages.MoneroKeyImageSyncStepRequest +trezor.messages.MoneroLiveRefreshFinalAck +import trezor.messages.MoneroLiveRefreshFinalAck +trezor.messages.MoneroLiveRefreshFinalRequest +import trezor.messages.MoneroLiveRefreshFinalRequest +trezor.messages.MoneroLiveRefreshStartAck +import trezor.messages.MoneroLiveRefreshStartAck +trezor.messages.MoneroLiveRefreshStartRequest +import trezor.messages.MoneroLiveRefreshStartRequest +trezor.messages.MoneroLiveRefreshStepAck +import trezor.messages.MoneroLiveRefreshStepAck +trezor.messages.MoneroLiveRefreshStepRequest +import trezor.messages.MoneroLiveRefreshStepRequest +trezor.messages.MoneroMultisigKLRki +import trezor.messages.MoneroMultisigKLRki +trezor.messages.MoneroOutputEntry +import trezor.messages.MoneroOutputEntry +trezor.messages.MoneroRctKeyPublic +import trezor.messages.MoneroRctKeyPublic +trezor.messages.MoneroRingCtSig +import trezor.messages.MoneroRingCtSig +trezor.messages.MoneroSubAddressIndicesList +import trezor.messages.MoneroSubAddressIndicesList +trezor.messages.MoneroTransactionAllInputsSetAck +import trezor.messages.MoneroTransactionAllInputsSetAck +trezor.messages.MoneroTransactionAllInputsSetRequest +import trezor.messages.MoneroTransactionAllInputsSetRequest +trezor.messages.MoneroTransactionAllOutSetAck +import trezor.messages.MoneroTransactionAllOutSetAck +trezor.messages.MoneroTransactionAllOutSetRequest +import trezor.messages.MoneroTransactionAllOutSetRequest +trezor.messages.MoneroTransactionData +import trezor.messages.MoneroTransactionData +trezor.messages.MoneroTransactionDestinationEntry +import trezor.messages.MoneroTransactionDestinationEntry +trezor.messages.MoneroTransactionFinalAck +import trezor.messages.MoneroTransactionFinalAck +trezor.messages.MoneroTransactionFinalRequest +import trezor.messages.MoneroTransactionFinalRequest +trezor.messages.MoneroTransactionInitAck +import trezor.messages.MoneroTransactionInitAck +trezor.messages.MoneroTransactionInitRequest +import trezor.messages.MoneroTransactionInitRequest +trezor.messages.MoneroTransactionInputViniAck +import trezor.messages.MoneroTransactionInputViniAck +trezor.messages.MoneroTransactionInputViniRequest +import trezor.messages.MoneroTransactionInputViniRequest +trezor.messages.MoneroTransactionInputsPermutationAck +import trezor.messages.MoneroTransactionInputsPermutationAck +trezor.messages.MoneroTransactionInputsPermutationRequest +import trezor.messages.MoneroTransactionInputsPermutationRequest +trezor.messages.MoneroTransactionRsigData +import trezor.messages.MoneroTransactionRsigData +trezor.messages.MoneroTransactionSetInputAck +import trezor.messages.MoneroTransactionSetInputAck +trezor.messages.MoneroTransactionSetInputRequest +import trezor.messages.MoneroTransactionSetInputRequest +trezor.messages.MoneroTransactionSetOutputAck +import trezor.messages.MoneroTransactionSetOutputAck +trezor.messages.MoneroTransactionSetOutputRequest +import trezor.messages.MoneroTransactionSetOutputRequest +trezor.messages.MoneroTransactionSignInputAck +import trezor.messages.MoneroTransactionSignInputAck +trezor.messages.MoneroTransactionSignInputRequest +import trezor.messages.MoneroTransactionSignInputRequest +trezor.messages.MoneroTransactionSourceEntry +import trezor.messages.MoneroTransactionSourceEntry +trezor.messages.MoneroTransferDetails +import trezor.messages.MoneroTransferDetails +trezor.messages.MoneroWatchKey +import trezor.messages.MoneroWatchKey +trezor.messages.MultisigRedeemScriptType +import trezor.messages.MultisigRedeemScriptType +trezor.messages.NEMAddress +import trezor.messages.NEMAddress +trezor.messages.NEMAggregateModification +import trezor.messages.NEMAggregateModification +trezor.messages.NEMCosignatoryModification +import trezor.messages.NEMCosignatoryModification +trezor.messages.NEMGetAddress +import trezor.messages.NEMGetAddress +trezor.messages.NEMImportanceTransfer +import trezor.messages.NEMImportanceTransfer +trezor.messages.NEMImportanceTransferMode +import trezor.messages.NEMImportanceTransferMode +trezor.messages.NEMModificationType +import trezor.messages.NEMModificationType +trezor.messages.NEMMosaic +import trezor.messages.NEMMosaic +trezor.messages.NEMMosaicCreation +import trezor.messages.NEMMosaicCreation +trezor.messages.NEMMosaicDefinition +import trezor.messages.NEMMosaicDefinition +trezor.messages.NEMMosaicLevy +import trezor.messages.NEMMosaicLevy +trezor.messages.NEMMosaicSupplyChange +import trezor.messages.NEMMosaicSupplyChange +trezor.messages.NEMProvisionNamespace +import trezor.messages.NEMProvisionNamespace +trezor.messages.NEMSignTx +import trezor.messages.NEMSignTx +trezor.messages.NEMSignedTx +import trezor.messages.NEMSignedTx +trezor.messages.NEMSupplyChangeType +import trezor.messages.NEMSupplyChangeType +trezor.messages.NEMTransactionCommon +import trezor.messages.NEMTransactionCommon +trezor.messages.NEMTransfer +import trezor.messages.NEMTransfer +trezor.messages.NextU2FCounter +import trezor.messages.NextU2FCounter +trezor.messages.OutputScriptType +import trezor.messages.OutputScriptType +trezor.messages.OwnershipId +import trezor.messages.OwnershipId +trezor.messages.OwnershipProof +import trezor.messages.OwnershipProof +trezor.messages.PassphraseAck +import trezor.messages.PassphraseAck +trezor.messages.PassphraseRequest +import trezor.messages.PassphraseRequest +trezor.messages.Ping +import trezor.messages.Ping +trezor.messages.PreauthorizedRequest +import trezor.messages.PreauthorizedRequest +trezor.messages.PrevInput +import trezor.messages.PrevInput +trezor.messages.PrevOutput +import trezor.messages.PrevOutput +trezor.messages.PrevTx +import trezor.messages.PrevTx +trezor.messages.PublicKey +import trezor.messages.PublicKey +trezor.messages.RebootToBootloader +import trezor.messages.RebootToBootloader +trezor.messages.RecoveryDevice +import trezor.messages.RecoveryDevice +trezor.messages.RecoveryDeviceType +import trezor.messages.RecoveryDeviceType +trezor.messages.RequestType +import trezor.messages.RequestType +trezor.messages.ResetDevice +import trezor.messages.ResetDevice +trezor.messages.RippleAddress +import trezor.messages.RippleAddress +trezor.messages.RippleGetAddress +import trezor.messages.RippleGetAddress +trezor.messages.RipplePayment +import trezor.messages.RipplePayment +trezor.messages.RippleSignTx +import trezor.messages.RippleSignTx +trezor.messages.RippleSignedTx +import trezor.messages.RippleSignedTx +trezor.messages.SafetyCheckLevel +import trezor.messages.SafetyCheckLevel +trezor.messages.SdProtect +import trezor.messages.SdProtect +trezor.messages.SdProtectOperationType +import trezor.messages.SdProtectOperationType +trezor.messages.SetU2FCounter +import trezor.messages.SetU2FCounter +trezor.messages.SignIdentity +import trezor.messages.SignIdentity +trezor.messages.SignMessage +import trezor.messages.SignMessage +trezor.messages.SignTx +import trezor.messages.SignTx +trezor.messages.SignedIdentity +import trezor.messages.SignedIdentity +trezor.messages.StellarAccountMergeOp +import trezor.messages.StellarAccountMergeOp +trezor.messages.StellarAddress +import trezor.messages.StellarAddress +trezor.messages.StellarAllowTrustOp +import trezor.messages.StellarAllowTrustOp +trezor.messages.StellarAssetType +import trezor.messages.StellarAssetType +trezor.messages.StellarBumpSequenceOp +import trezor.messages.StellarBumpSequenceOp +trezor.messages.StellarChangeTrustOp +import trezor.messages.StellarChangeTrustOp +trezor.messages.StellarCreateAccountOp +import trezor.messages.StellarCreateAccountOp +trezor.messages.StellarCreatePassiveOfferOp +import trezor.messages.StellarCreatePassiveOfferOp +trezor.messages.StellarGetAddress +import trezor.messages.StellarGetAddress +trezor.messages.StellarManageDataOp +import trezor.messages.StellarManageDataOp +trezor.messages.StellarManageOfferOp +import trezor.messages.StellarManageOfferOp +trezor.messages.StellarPathPaymentOp +import trezor.messages.StellarPathPaymentOp +trezor.messages.StellarPaymentOp +import trezor.messages.StellarPaymentOp +trezor.messages.StellarSetOptionsOp +import trezor.messages.StellarSetOptionsOp +trezor.messages.StellarSignTx +import trezor.messages.StellarSignTx +trezor.messages.StellarSignedTx +import trezor.messages.StellarSignedTx +trezor.messages.StellarTxOpRequest +import trezor.messages.StellarTxOpRequest +trezor.messages.Success +import trezor.messages.Success +trezor.messages.TezosAddress +import trezor.messages.TezosAddress +trezor.messages.TezosBallotOp +import trezor.messages.TezosBallotOp +trezor.messages.TezosBallotType +import trezor.messages.TezosBallotType +trezor.messages.TezosContractID +import trezor.messages.TezosContractID +trezor.messages.TezosContractType +import trezor.messages.TezosContractType +trezor.messages.TezosDelegationOp +import trezor.messages.TezosDelegationOp +trezor.messages.TezosGetAddress +import trezor.messages.TezosGetAddress +trezor.messages.TezosGetPublicKey +import trezor.messages.TezosGetPublicKey +trezor.messages.TezosManagerTransfer +import trezor.messages.TezosManagerTransfer +trezor.messages.TezosOriginationOp +import trezor.messages.TezosOriginationOp +trezor.messages.TezosParametersManager +import trezor.messages.TezosParametersManager +trezor.messages.TezosProposalOp +import trezor.messages.TezosProposalOp +trezor.messages.TezosPublicKey +import trezor.messages.TezosPublicKey +trezor.messages.TezosRevealOp +import trezor.messages.TezosRevealOp +trezor.messages.TezosSignTx +import trezor.messages.TezosSignTx +trezor.messages.TezosSignedTx +import trezor.messages.TezosSignedTx +trezor.messages.TezosTransactionOp +import trezor.messages.TezosTransactionOp +trezor.messages.TransactionType +import trezor.messages.TransactionType +trezor.messages.TxAck +import trezor.messages.TxAck +trezor.messages.TxAckInput +import trezor.messages.TxAckInput +trezor.messages.TxAckInputWrapper +import trezor.messages.TxAckInputWrapper +trezor.messages.TxAckOutput +import trezor.messages.TxAckOutput +trezor.messages.TxAckOutputWrapper +import trezor.messages.TxAckOutputWrapper +trezor.messages.TxAckPrevExtraData +import trezor.messages.TxAckPrevExtraData +trezor.messages.TxAckPrevExtraDataWrapper +import trezor.messages.TxAckPrevExtraDataWrapper +trezor.messages.TxAckPrevInput +import trezor.messages.TxAckPrevInput +trezor.messages.TxAckPrevInputWrapper +import trezor.messages.TxAckPrevInputWrapper +trezor.messages.TxAckPrevMeta +import trezor.messages.TxAckPrevMeta +trezor.messages.TxAckPrevOutput +import trezor.messages.TxAckPrevOutput +trezor.messages.TxAckPrevOutputWrapper +import trezor.messages.TxAckPrevOutputWrapper +trezor.messages.TxInput +import trezor.messages.TxInput +trezor.messages.TxInputType +import trezor.messages.TxInputType +trezor.messages.TxOutput +import trezor.messages.TxOutput +trezor.messages.TxOutputBinType +import trezor.messages.TxOutputBinType +trezor.messages.TxOutputType +import trezor.messages.TxOutputType +trezor.messages.TxRequest +import trezor.messages.TxRequest +trezor.messages.TxRequestDetailsType +import trezor.messages.TxRequestDetailsType +trezor.messages.TxRequestSerializedType +import trezor.messages.TxRequestSerializedType +trezor.messages.VerifyMessage +import trezor.messages.VerifyMessage +trezor.messages.WebAuthnAddResidentCredential +import trezor.messages.WebAuthnAddResidentCredential +trezor.messages.WebAuthnCredential +import trezor.messages.WebAuthnCredential +trezor.messages.WebAuthnCredentials +import trezor.messages.WebAuthnCredentials +trezor.messages.WebAuthnListResidentCredentials +import trezor.messages.WebAuthnListResidentCredentials +trezor.messages.WebAuthnRemoveResidentCredential +import trezor.messages.WebAuthnRemoveResidentCredential +trezor.messages.WipeDevice +import trezor.messages.WipeDevice +trezor.messages +import trezor.messages +trezor.pin +import trezor.pin +trezor.res +import trezor.res +trezor.res.resources +import trezor.res.resources +trezor.sdcard +import trezor.sdcard +trezor.strings +import trezor.strings +trezor.ui +import trezor.ui +trezor.ui.components +import trezor.ui.components +trezor.ui.components.common +import trezor.ui.components.common +trezor.ui.components.common.confirm +import trezor.ui.components.common.confirm +trezor.ui.components.common.text +import trezor.ui.components.common.text +trezor.ui.components.tt.button +import trezor.ui.components.tt.button +trezor.ui.components.tt.checklist +import trezor.ui.components.tt.checklist +trezor.ui.components.tt.confirm +import trezor.ui.components.tt.confirm +trezor.ui.components.tt.info +import trezor.ui.components.tt.info +trezor.ui.components.tt.num_input +import trezor.ui.components.tt.num_input +trezor.ui.components.tt.passphrase +import trezor.ui.components.tt.passphrase +trezor.ui.components.tt.pin +import trezor.ui.components.tt.pin +trezor.ui.components.tt.scroll +import trezor.ui.components.tt.scroll +trezor.ui.components.tt.swipe +import trezor.ui.components.tt.swipe +trezor.ui.components.tt.text +import trezor.ui.components.tt.text +trezor.ui.components.tt.word_select +import trezor.ui.components.tt.word_select +trezor.ui.constants +import trezor.ui.constants +trezor.ui.constants.t1 +import trezor.ui.constants.t1 +trezor.ui.constants.tt +import trezor.ui.constants.tt +trezor.ui.container +import trezor.ui.container +trezor.ui.layouts +import trezor.ui.layouts +trezor.ui.layouts.common +import trezor.ui.layouts.common +trezor.ui.layouts.t1 +import trezor.ui.layouts.t1 +trezor.ui.layouts.tt +import trezor.ui.layouts.tt +trezor.ui.loader +import trezor.ui.loader +trezor.ui.popup +import trezor.ui.popup +trezor.ui.qr +import trezor.ui.qr +trezor.ui.style +import trezor.ui.style +trezor.utils +import trezor.utils +trezor.wire +import trezor.wire +trezor.wire.codec_v1 +import trezor.wire.codec_v1 +trezor.wire.errors +import trezor.wire.errors +trezor.workflow +import trezor.workflow +apps +import apps +apps.base +import apps.base +apps.binance +import apps.binance +apps.binance.get_address +import apps.binance.get_address +apps.binance.get_public_key +import apps.binance.get_public_key +apps.binance.helpers +import apps.binance.helpers +apps.binance.layout +import apps.binance.layout +apps.binance.sign_tx +import apps.binance.sign_tx +apps.bitcoin +import apps.bitcoin +apps.bitcoin.addresses +import apps.bitcoin.addresses +apps.bitcoin.authorization +import apps.bitcoin.authorization +apps.bitcoin.authorize_coinjoin +import apps.bitcoin.authorize_coinjoin +apps.bitcoin.common +import apps.bitcoin.common +apps.bitcoin.get_address +import apps.bitcoin.get_address +apps.bitcoin.get_ownership_id +import apps.bitcoin.get_ownership_id +apps.bitcoin.get_ownership_proof +import apps.bitcoin.get_ownership_proof +apps.bitcoin.get_public_key +import apps.bitcoin.get_public_key +apps.bitcoin.keychain +import apps.bitcoin.keychain +apps.bitcoin.multisig +import apps.bitcoin.multisig +apps.bitcoin.ownership +import apps.bitcoin.ownership +apps.bitcoin.readers +import apps.bitcoin.readers +apps.bitcoin.scripts +import apps.bitcoin.scripts +apps.bitcoin.scripts_decred +import apps.bitcoin.scripts_decred +apps.bitcoin.sign_message +import apps.bitcoin.sign_message +apps.bitcoin.sign_tx +import apps.bitcoin.sign_tx +apps.bitcoin.sign_tx.approvers +import apps.bitcoin.sign_tx.approvers +apps.bitcoin.sign_tx.bitcoin +import apps.bitcoin.sign_tx.bitcoin +apps.bitcoin.sign_tx.bitcoinlike +import apps.bitcoin.sign_tx.bitcoinlike +apps.bitcoin.sign_tx.decred +import apps.bitcoin.sign_tx.decred +apps.bitcoin.sign_tx.hash143 +import apps.bitcoin.sign_tx.hash143 +apps.bitcoin.sign_tx.helpers +import apps.bitcoin.sign_tx.helpers +apps.bitcoin.sign_tx.layout +import apps.bitcoin.sign_tx.layout +apps.bitcoin.sign_tx.matchcheck +import apps.bitcoin.sign_tx.matchcheck +apps.bitcoin.sign_tx.omni +import apps.bitcoin.sign_tx.omni +apps.bitcoin.sign_tx.progress +import apps.bitcoin.sign_tx.progress +apps.bitcoin.sign_tx.tx_info +import apps.bitcoin.sign_tx.tx_info +apps.bitcoin.sign_tx.tx_weight +import apps.bitcoin.sign_tx.tx_weight +apps.bitcoin.sign_tx.zcash +import apps.bitcoin.sign_tx.zcash +apps.bitcoin.verification +import apps.bitcoin.verification +apps.bitcoin.verify_message +import apps.bitcoin.verify_message +apps.bitcoin.writers +import apps.bitcoin.writers +apps.cardano +import apps.cardano +apps.cardano.address +import apps.cardano.address +apps.cardano.auxiliary_data +import apps.cardano.auxiliary_data +apps.cardano.byron_address +import apps.cardano.byron_address +apps.cardano.certificates +import apps.cardano.certificates +apps.cardano.get_address +import apps.cardano.get_address +apps.cardano.get_public_key +import apps.cardano.get_public_key +apps.cardano.helpers +import apps.cardano.helpers +apps.cardano.helpers.bech32 +import apps.cardano.helpers.bech32 +apps.cardano.helpers.network_ids +import apps.cardano.helpers.network_ids +apps.cardano.helpers.paths +import apps.cardano.helpers.paths +apps.cardano.helpers.protocol_magics +import apps.cardano.helpers.protocol_magics +apps.cardano.helpers.staking_use_cases +import apps.cardano.helpers.staking_use_cases +apps.cardano.helpers.utils +import apps.cardano.helpers.utils +apps.cardano.layout +import apps.cardano.layout +apps.cardano.seed +import apps.cardano.seed +apps.cardano.sign_tx +import apps.cardano.sign_tx +apps.common +import apps.common +apps.common.address_type +import apps.common.address_type +apps.common.authorization +import apps.common.authorization +apps.common.cbor +import apps.common.cbor +apps.common.coininfo +import apps.common.coininfo +apps.common.coins +import apps.common.coins +apps.common.confirm +import apps.common.confirm +apps.common.keychain +import apps.common.keychain +apps.common.layout +import apps.common.layout +apps.common.mnemonic +import apps.common.mnemonic +apps.common.passphrase +import apps.common.passphrase +apps.common.paths +import apps.common.paths +apps.common.readers +import apps.common.readers +apps.common.request_pin +import apps.common.request_pin +apps.common.safety_checks +import apps.common.safety_checks +apps.common.sdcard +import apps.common.sdcard +apps.common.seed +import apps.common.seed +apps.common.signverify +import apps.common.signverify +apps.common.writers +import apps.common.writers +apps.debug +import apps.debug +apps.debug.load_device +import apps.debug.load_device +apps.eos +import apps.eos +apps.eos.actions +import apps.eos.actions +apps.eos.actions.layout +import apps.eos.actions.layout +apps.eos.get_public_key +import apps.eos.get_public_key +apps.eos.helpers +import apps.eos.helpers +apps.eos.layout +import apps.eos.layout +apps.eos.sign_tx +import apps.eos.sign_tx +apps.eos.writers +import apps.eos.writers +apps.ethereum +import apps.ethereum +apps.ethereum.address +import apps.ethereum.address +apps.ethereum.get_address +import apps.ethereum.get_address +apps.ethereum.get_public_key +import apps.ethereum.get_public_key +apps.ethereum.keychain +import apps.ethereum.keychain +apps.ethereum.layout +import apps.ethereum.layout +apps.ethereum.networks +import apps.ethereum.networks +apps.ethereum.sign_message +import apps.ethereum.sign_message +apps.ethereum.sign_tx +import apps.ethereum.sign_tx +apps.ethereum.tokens +import apps.ethereum.tokens +apps.ethereum.verify_message +import apps.ethereum.verify_message +apps.homescreen +import apps.homescreen +apps.homescreen.homescreen +import apps.homescreen.homescreen +apps.homescreen.lockscreen +import apps.homescreen.lockscreen +apps.lisk +import apps.lisk +apps.lisk.get_address +import apps.lisk.get_address +apps.lisk.get_public_key +import apps.lisk.get_public_key +apps.lisk.helpers +import apps.lisk.helpers +apps.lisk.layout +import apps.lisk.layout +apps.lisk.sign_message +import apps.lisk.sign_message +apps.lisk.sign_tx +import apps.lisk.sign_tx +apps.lisk.verify_message +import apps.lisk.verify_message +apps.management +import apps.management +apps.management.apply_flags +import apps.management.apply_flags +apps.management.apply_settings +import apps.management.apply_settings +apps.management.backup_device +import apps.management.backup_device +apps.management.backup_types +import apps.management.backup_types +apps.management.change_pin +import apps.management.change_pin +apps.management.change_wipe_code +import apps.management.change_wipe_code +apps.management.get_next_u2f_counter +import apps.management.get_next_u2f_counter +apps.management.recovery_device +import apps.management.recovery_device +apps.management.recovery_device.homescreen +import apps.management.recovery_device.homescreen +apps.management.recovery_device.keyboard_bip39 +import apps.management.recovery_device.keyboard_bip39 +apps.management.recovery_device.keyboard_slip39 +import apps.management.recovery_device.keyboard_slip39 +apps.management.recovery_device.layout +import apps.management.recovery_device.layout +apps.management.recovery_device.recover +import apps.management.recovery_device.recover +apps.management.recovery_device.word_validity +import apps.management.recovery_device.word_validity +apps.management.reset_device +import apps.management.reset_device +apps.management.reset_device.layout +import apps.management.reset_device.layout +apps.management.sd_protect +import apps.management.sd_protect +apps.management.set_u2f_counter +import apps.management.set_u2f_counter +apps.management.wipe_device +import apps.management.wipe_device +apps.misc +import apps.misc +apps.misc.cipher_key_value +import apps.misc.cipher_key_value +apps.misc.get_ecdh_session_key +import apps.misc.get_ecdh_session_key +apps.misc.get_entropy +import apps.misc.get_entropy +apps.misc.sign_identity +import apps.misc.sign_identity +apps.monero +import apps.monero +apps.monero.diag +import apps.monero.diag +apps.monero.get_address +import apps.monero.get_address +apps.monero.get_tx_keys +import apps.monero.get_tx_keys +apps.monero.get_watch_only +import apps.monero.get_watch_only +apps.monero.key_image_sync +import apps.monero.key_image_sync +apps.monero.layout.common +import apps.monero.layout.common +apps.monero.layout.confirms +import apps.monero.layout.confirms +apps.monero.live_refresh +import apps.monero.live_refresh +apps.monero.misc +import apps.monero.misc +apps.monero.sign_tx +import apps.monero.sign_tx +apps.monero.signing +import apps.monero.signing +apps.monero.signing.offloading_keys +import apps.monero.signing.offloading_keys +apps.monero.signing.state +import apps.monero.signing.state +apps.monero.signing.step_01_init_transaction +import apps.monero.signing.step_01_init_transaction +apps.monero.signing.step_02_set_input +import apps.monero.signing.step_02_set_input +apps.monero.signing.step_03_inputs_permutation +import apps.monero.signing.step_03_inputs_permutation +apps.monero.signing.step_04_input_vini +import apps.monero.signing.step_04_input_vini +apps.monero.signing.step_05_all_inputs_set +import apps.monero.signing.step_05_all_inputs_set +apps.monero.signing.step_06_set_output +import apps.monero.signing.step_06_set_output +apps.monero.signing.step_07_all_outputs_set +import apps.monero.signing.step_07_all_outputs_set +apps.monero.signing.step_09_sign_input +import apps.monero.signing.step_09_sign_input +apps.monero.signing.step_10_sign_final +import apps.monero.signing.step_10_sign_final +apps.monero.xmr.addresses +import apps.monero.xmr.addresses +apps.monero.xmr.bulletproof +import apps.monero.xmr.bulletproof +apps.monero.xmr.credentials +import apps.monero.xmr.credentials +apps.monero.xmr.crypto +import apps.monero.xmr.crypto +apps.monero.xmr.crypto.chacha_poly +import apps.monero.xmr.crypto.chacha_poly +apps.monero.xmr.keccak_hasher +import apps.monero.xmr.keccak_hasher +apps.monero.xmr.key_image +import apps.monero.xmr.key_image +apps.monero.xmr.mlsag +import apps.monero.xmr.mlsag +apps.monero.xmr.mlsag_hasher +import apps.monero.xmr.mlsag_hasher +apps.monero.xmr.monero +import apps.monero.xmr.monero +apps.monero.xmr.networks +import apps.monero.xmr.networks +apps.monero.xmr.range_signatures +import apps.monero.xmr.range_signatures +apps.monero.xmr.serialize +import apps.monero.xmr.serialize +apps.monero.xmr.serialize.base_types +import apps.monero.xmr.serialize.base_types +apps.monero.xmr.serialize.int_serialize +import apps.monero.xmr.serialize.int_serialize +apps.monero.xmr.serialize.message_types +import apps.monero.xmr.serialize.message_types +apps.monero.xmr.serialize.readwriter +import apps.monero.xmr.serialize.readwriter +apps.monero.xmr.serialize_messages.base +import apps.monero.xmr.serialize_messages.base +apps.monero.xmr.serialize_messages.tx_ct_key +import apps.monero.xmr.serialize_messages.tx_ct_key +apps.monero.xmr.serialize_messages.tx_ecdh +import apps.monero.xmr.serialize_messages.tx_ecdh +apps.monero.xmr.serialize_messages.tx_prefix +import apps.monero.xmr.serialize_messages.tx_prefix +apps.monero.xmr.serialize_messages.tx_rsig_bulletproof +import apps.monero.xmr.serialize_messages.tx_rsig_bulletproof +apps.monero.xmr.types +import apps.monero.xmr.types +apps.nem +import apps.nem +apps.nem.get_address +import apps.nem.get_address +apps.nem.helpers +import apps.nem.helpers +apps.nem.layout +import apps.nem.layout +apps.nem.mosaic +import apps.nem.mosaic +apps.nem.mosaic.helpers +import apps.nem.mosaic.helpers +apps.nem.mosaic.layout +import apps.nem.mosaic.layout +apps.nem.mosaic.nem_mosaics +import apps.nem.mosaic.nem_mosaics +apps.nem.mosaic.serialize +import apps.nem.mosaic.serialize +apps.nem.multisig +import apps.nem.multisig +apps.nem.multisig.layout +import apps.nem.multisig.layout +apps.nem.multisig.serialize +import apps.nem.multisig.serialize +apps.nem.namespace +import apps.nem.namespace +apps.nem.namespace.layout +import apps.nem.namespace.layout +apps.nem.namespace.serialize +import apps.nem.namespace.serialize +apps.nem.sign_tx +import apps.nem.sign_tx +apps.nem.transfer +import apps.nem.transfer +apps.nem.transfer.layout +import apps.nem.transfer.layout +apps.nem.transfer.serialize +import apps.nem.transfer.serialize +apps.nem.validators +import apps.nem.validators +apps.nem.writers +import apps.nem.writers +apps.ripple +import apps.ripple +apps.ripple.base58_ripple +import apps.ripple.base58_ripple +apps.ripple.get_address +import apps.ripple.get_address +apps.ripple.helpers +import apps.ripple.helpers +apps.ripple.layout +import apps.ripple.layout +apps.ripple.serialize +import apps.ripple.serialize +apps.ripple.sign_tx +import apps.ripple.sign_tx +apps.stellar +import apps.stellar +apps.stellar.consts +import apps.stellar.consts +apps.stellar.get_address +import apps.stellar.get_address +apps.stellar.helpers +import apps.stellar.helpers +apps.stellar.layout +import apps.stellar.layout +apps.stellar.operations +import apps.stellar.operations +apps.stellar.operations.layout +import apps.stellar.operations.layout +apps.stellar.operations.serialize +import apps.stellar.operations.serialize +apps.stellar.sign_tx +import apps.stellar.sign_tx +apps.stellar.writers +import apps.stellar.writers +apps.tezos +import apps.tezos +apps.tezos.get_address +import apps.tezos.get_address +apps.tezos.get_public_key +import apps.tezos.get_public_key +apps.tezos.helpers +import apps.tezos.helpers +apps.tezos.layout +import apps.tezos.layout +apps.tezos.sign_tx +import apps.tezos.sign_tx +apps.webauthn +import apps.webauthn +apps.webauthn.add_resident_credential +import apps.webauthn.add_resident_credential +apps.webauthn.common +import apps.webauthn.common +apps.webauthn.confirm +import apps.webauthn.confirm +apps.webauthn.credential +import apps.webauthn.credential +apps.webauthn.fido2 +import apps.webauthn.fido2 +apps.webauthn.knownapps +import apps.webauthn.knownapps +apps.webauthn.list_resident_credentials +import apps.webauthn.list_resident_credentials +apps.webauthn.remove_resident_credential +import apps.webauthn.remove_resident_credential +apps.webauthn.resident_credentials +import apps.webauthn.resident_credentials +apps.workflow_handlers +import apps.workflow_handlers + +# generate full alphabet +a +A +b +B +c +C +d +D +e +E +f +F +g +G +h +H +i +I +j +J +k +K +l +L +m +M +n +N +o +O +p +P +q +Q +r +R +s +S +t +T +u +U +v +V +w +W +x +X +y +Y +z +Z diff --git a/core/src/all_modules.py.mako b/core/src/all_modules.py.mako new file mode 100644 index 000000000..7727f7a98 --- /dev/null +++ b/core/src/all_modules.py.mako @@ -0,0 +1,67 @@ +# generated from all_modules.py.mako +# do not edit manually! +# flake8: noqa +# fmt: off +# isort:skip_file +<% +from pathlib import Path +from itertools import chain + +THIS = Path(local.filename).resolve() +SRCDIR = THIS.parent + +PATTERNS = ( + "*.py", + "storage/**/*.py", + "trezor/**/*.py", + "apps/**/*.py", +) + +pyfiles = chain.from_iterable(sorted(SRCDIR.glob(p)) for p in PATTERNS) +%>\ +from trezor.utils import halt + +# this module should not be part of the build, its purpose is only to add missed Qstrings +halt("Tried to import excluded module.") + +# explanation: +# uPy collects string literals and symbol names from all frozen modules, and converts +# them to qstrings for certain usages. In particular, it appears that qualified names +# of modules in sys.modules must be qstrings. However, the collection process is +# imperfect. If `apps.common.mnemonic` is always imported as `from ..common import mnemonic`, +# the string "apps.common.mnemonic" never appears in source code, is never collected, +# but then is generated and interned at runtime. +# A similar thing happens in reverse: if module `storage.cache` is always imported as +# this name, then "storage.cache" is collected but neither "storage" nor "cache" alone. +# Which is a problem, because "cache" is a symbol that is added to `storage`'s dict. +# +# We need to avoid run-time interning as much as possible, because it creates +# uncollectable garbage in the GC arena. +# +# Below, every module is listed both as import (which collects the qualified name) +# and as a symbol (which collects each individual component). +# In addition, we list the alphabet, because apparently one-character strings are always +# interned, and some operation somewhere (rendering?) is reading strings character by +# character. + +% for pyfile in pyfiles: +<% +pyfile = pyfile.relative_to(SRCDIR) +if pyfile.name == "__init__.py": + import_name = str(pyfile.parent) +else: + import_name = str(pyfile.with_suffix("")) +import_name = import_name.replace("/", ".") +%>\ +${import_name} +import ${import_name} +% endfor + +# generate full alphabet +<% +ALPHABET = "abcdefghijklmnopqrstuvwxyz" +%>\ +% for letter in ALPHABET: +${letter} +${letter.upper()} +% endfor diff --git a/core/src/trezor/ui/components/__init__.py b/core/src/trezor/ui/components/__init__.py new file mode 100644 index 000000000..e69de29bb