@hsuite/native-connect-angular 1.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/coverage-summary.json +53 -49
- package/coverage/index.html +100 -100
- package/coverage/lcov-report/index.html +100 -100
- package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +13 -19
- package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/index.html +5 -5
- package/coverage/lcov-report/lib/components/wallet-account-display/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
- package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +21 -21
- package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +475 -451
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +148 -148
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +17 -17
- package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +21 -21
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +17 -17
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +838 -838
- package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +1230 -987
- package/coverage/lcov-report/lib/components/wallet-session-display/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/index.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +1 -1
- package/coverage/lcov-report/lib/index.html +1 -1
- package/coverage/lcov-report/lib/models/connection-config.model.ts.html +1 -1
- package/coverage/lcov-report/lib/models/index.html +7 -7
- package/coverage/lcov-report/lib/models/provider-types.ts.html +11 -5
- package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +9 -6
- package/coverage/lcov-report/lib/providers/hsuite-native/index.html +10 -10
- package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/index.html +1 -1
- package/coverage/lcov-report/lib/providers/p2p-native/index.html +7 -7
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
- package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +10 -10
- package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +10 -7
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +49 -49
- package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1 -1
- package/coverage/lcov-report/lib/services/hsuite-auth.interceptor.ts.html +568 -0
- package/coverage/lcov-report/lib/services/index.html +50 -20
- package/coverage/lcov-report/lib/services/logger.service.ts.html +4 -4
- package/coverage/lcov-report/lib/services/smart-session.service.ts.html +1264 -0
- package/coverage/lcov-report/lib/services/transaction-builders/active-account-source.ts.html +250 -0
- package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +1 -1
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +318 -318
- package/coverage/lcov-report/lib/services/transaction-builders/index.html +24 -9
- package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/transaction.service.ts.html +7 -10
- package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +9 -12
- package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +4 -7
- package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +1 -1
- package/coverage/lcov-report/lib/transports/index.html +1 -1
- package/coverage/lcov-report/lib/utils/index.html +36 -21
- package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +254 -161
- package/coverage/lcov-report/lib/utils/ledger-ui-registry.ts.html +676 -0
- package/coverage/lcov.info +3236 -2122
- package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-actions/index.html +1 -1
- package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-filter/index.html +1 -1
- package/coverage/lib/components/account-selector/account-formatting.service.ts.html +13 -19
- package/coverage/lib/components/account-selector/account-grouping.service.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-list/index.html +1 -1
- package/coverage/lib/components/account-selector/account-selector.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-selector.service.ts.html +1 -1
- package/coverage/lib/components/account-selector/index.html +5 -5
- package/coverage/lib/components/wallet-account-display/index.html +1 -1
- package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
- package/coverage/lib/components/wallet-connect-button/index.html +21 -21
- package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +475 -451
- package/coverage/lib/components/wallet-connect-prompt/index.html +1 -1
- package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connected-guard/index.html +1 -1
- package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +148 -148
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +17 -17
- package/coverage/lib/components/wallet-connection-modal/index.html +21 -21
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +17 -17
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +838 -838
- package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +1230 -987
- package/coverage/lib/components/wallet-session-display/index.html +1 -1
- package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
- package/coverage/lib/components/wallet-transaction-status/index.html +1 -1
- package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
- package/coverage/lib/directives/index.html +1 -1
- package/coverage/lib/directives/wallet-connected.directive.ts.html +1 -1
- package/coverage/lib/directives/wallet-context.directive.ts.html +1 -1
- package/coverage/lib/directives/wallet-events.directive.ts.html +1 -1
- package/coverage/lib/hsuite-wallet.module.ts.html +1 -1
- package/coverage/lib/index.html +1 -1
- package/coverage/lib/models/connection-config.model.ts.html +1 -1
- package/coverage/lib/models/index.html +7 -7
- package/coverage/lib/models/provider-types.ts.html +11 -5
- package/coverage/lib/providers/base-wallet-provider.ts.html +1 -1
- package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +9 -6
- package/coverage/lib/providers/hsuite-native/index.html +10 -10
- package/coverage/lib/providers/hsuite-native-provider.ts.html +1 -1
- package/coverage/lib/providers/index.html +1 -1
- package/coverage/lib/providers/p2p-native/index.html +7 -7
- package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +1 -1
- package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
- package/coverage/lib/providers/wallet-error-handler.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/index.html +10 -10
- package/coverage/lib/providers/walletconnect/core/session-health.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +10 -7
- package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/signers/index.html +1 -1
- package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +49 -49
- package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1 -1
- package/coverage/lib/services/hsuite-auth.interceptor.ts.html +568 -0
- package/coverage/lib/services/index.html +50 -20
- package/coverage/lib/services/logger.service.ts.html +4 -4
- package/coverage/lib/services/smart-session.service.ts.html +1264 -0
- package/coverage/lib/services/transaction-builders/active-account-source.ts.html +250 -0
- package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
- package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +1 -1
- package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +318 -318
- package/coverage/lib/services/transaction-builders/index.html +24 -9
- package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1 -1
- package/coverage/lib/services/transaction.service.ts.html +7 -10
- package/coverage/lib/services/unified-wallet.service.ts.html +9 -12
- package/coverage/lib/services/wallet-context.service.ts.html +1 -1
- package/coverage/lib/services/wallet-event-bus.service.ts.html +1 -1
- package/coverage/lib/services/wallet-providers.service.ts.html +4 -7
- package/coverage/lib/transports/chrome-extension-transport.ts.html +1 -1
- package/coverage/lib/transports/index.html +1 -1
- package/coverage/lib/utils/index.html +36 -21
- package/coverage/lib/utils/ledger-icons.util.ts.html +254 -161
- package/coverage/lib/utils/ledger-ui-registry.ts.html +676 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs +939 -328
- package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -1
- package/dist/index.d.ts +489 -33
- package/package.json +4 -4
- package/src/index.ts +26 -0
- package/src/lib/components/account-selector/account-formatting.service.ts +8 -10
- package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +9 -9
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.spec.ts +89 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +8 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +1 -6
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.spec.ts +173 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +118 -37
- package/src/lib/models/provider-types.ts +3 -1
- package/src/lib/models/unified-account.model.ts +4 -1
- package/src/lib/providers/hsuite-native/channel-client.service.ts +1 -0
- package/src/lib/providers/p2p-native/p2p-session-manager.ts +1 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +2 -1
- package/src/lib/services/hsuite-auth.interceptor.ts +159 -0
- package/src/lib/services/smart-session.service.ts +378 -0
- package/src/lib/services/transaction-builders/active-account-source.spec.ts +75 -0
- package/src/lib/services/transaction-builders/active-account-source.ts +55 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +4 -4
- package/src/lib/services/transaction-builders/index.ts +1 -0
- package/src/lib/services/transaction.service.ts +7 -4
- package/src/lib/services/unified-wallet.service.spec.ts +1 -1
- package/src/lib/services/unified-wallet.service.ts +2 -3
- package/src/lib/services/wallet-providers.service.ts +0 -1
- package/src/lib/utils/index.ts +1 -0
- package/src/lib/utils/ledger-icons.util.ts +61 -30
- package/src/lib/utils/ledger-ui-registry.ts +197 -0
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">56.53% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>415/734</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/0</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">56.53% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>415/734</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -797,247 +797,421 @@
|
|
|
797
797
|
<a name='L732'></a><a href='#L732'>732</a>
|
|
798
798
|
<a name='L733'></a><a href='#L733'>733</a>
|
|
799
799
|
<a name='L734'></a><a href='#L734'>734</a>
|
|
800
|
-
<a name='L735'></a><a href='#L735'>735</a></td><td class="line-coverage quiet"><span class="cline-any cline-
|
|
801
|
-
<span class="cline-any cline-
|
|
802
|
-
<span class="cline-any cline-
|
|
803
|
-
<span class="cline-any cline-
|
|
804
|
-
<span class="cline-any cline-
|
|
805
|
-
<span class="cline-any cline-
|
|
806
|
-
<span class="cline-any cline-
|
|
807
|
-
<span class="cline-any cline-
|
|
808
|
-
<span class="cline-any cline-
|
|
809
|
-
<span class="cline-any cline-
|
|
810
|
-
<span class="cline-any cline-
|
|
811
|
-
<span class="cline-any cline-
|
|
812
|
-
<span class="cline-any cline-
|
|
813
|
-
<span class="cline-any cline-
|
|
814
|
-
<span class="cline-any cline-
|
|
815
|
-
<span class="cline-any cline-
|
|
816
|
-
<span class="cline-any cline-
|
|
817
|
-
<span class="cline-any cline-
|
|
818
|
-
<span class="cline-any cline-
|
|
819
|
-
<span class="cline-any cline-
|
|
820
|
-
<span class="cline-any cline-
|
|
821
|
-
<span class="cline-any cline-
|
|
822
|
-
<span class="cline-any cline-
|
|
823
|
-
<span class="cline-any cline-
|
|
824
|
-
<span class="cline-any cline-
|
|
825
|
-
<span class="cline-any cline-
|
|
826
|
-
<span class="cline-any cline-
|
|
827
|
-
<span class="cline-any cline-
|
|
828
|
-
<span class="cline-any cline-
|
|
829
|
-
<span class="cline-any cline-
|
|
830
|
-
<span class="cline-any cline-
|
|
831
|
-
<span class="cline-any cline-
|
|
832
|
-
<span class="cline-any cline-
|
|
833
|
-
<span class="cline-any cline-
|
|
834
|
-
<span class="cline-any cline-
|
|
835
|
-
<span class="cline-any cline-
|
|
836
|
-
<span class="cline-any cline-
|
|
837
|
-
<span class="cline-any cline-
|
|
838
|
-
<span class="cline-any cline-
|
|
839
|
-
<span class="cline-any cline-
|
|
840
|
-
<span class="cline-any cline-
|
|
841
|
-
<span class="cline-any cline-
|
|
842
|
-
<span class="cline-any cline-
|
|
843
|
-
<span class="cline-any cline-
|
|
844
|
-
<span class="cline-any cline-
|
|
845
|
-
<span class="cline-any cline-
|
|
846
|
-
<span class="cline-any cline-
|
|
847
|
-
<span class="cline-any cline-
|
|
848
|
-
<span class="cline-any cline-
|
|
849
|
-
<span class="cline-any cline-
|
|
850
|
-
<span class="cline-any cline-
|
|
851
|
-
<span class="cline-any cline-
|
|
852
|
-
<span class="cline-any cline-
|
|
853
|
-
<span class="cline-any cline-
|
|
854
|
-
<span class="cline-any cline-
|
|
855
|
-
<span class="cline-any cline-
|
|
856
|
-
<span class="cline-any cline-
|
|
857
|
-
<span class="cline-any cline-
|
|
858
|
-
<span class="cline-any cline-
|
|
859
|
-
<span class="cline-any cline-
|
|
860
|
-
<span class="cline-any cline-
|
|
861
|
-
<span class="cline-any cline-
|
|
862
|
-
<span class="cline-any cline-
|
|
863
|
-
<span class="cline-any cline-
|
|
864
|
-
<span class="cline-any cline-
|
|
865
|
-
<span class="cline-any cline-
|
|
866
|
-
<span class="cline-any cline-
|
|
867
|
-
<span class="cline-any cline-
|
|
868
|
-
<span class="cline-any cline-
|
|
869
|
-
<span class="cline-any cline-
|
|
870
|
-
<span class="cline-any cline-
|
|
871
|
-
<span class="cline-any cline-
|
|
872
|
-
<span class="cline-any cline-
|
|
873
|
-
<span class="cline-any cline-
|
|
874
|
-
<span class="cline-any cline-
|
|
875
|
-
<span class="cline-any cline-
|
|
876
|
-
<span class="cline-any cline-
|
|
877
|
-
<span class="cline-any cline-
|
|
878
|
-
<span class="cline-any cline-
|
|
879
|
-
<span class="cline-any cline-
|
|
880
|
-
<span class="cline-any cline-
|
|
881
|
-
<span class="cline-any cline-
|
|
882
|
-
<span class="cline-any cline-
|
|
883
|
-
<span class="cline-any cline-
|
|
884
|
-
<span class="cline-any cline-
|
|
885
|
-
<span class="cline-any cline-
|
|
886
|
-
<span class="cline-any cline-
|
|
887
|
-
<span class="cline-any cline-
|
|
888
|
-
<span class="cline-any cline-
|
|
889
|
-
<span class="cline-any cline-
|
|
890
|
-
<span class="cline-any cline-
|
|
891
|
-
<span class="cline-any cline-
|
|
892
|
-
<span class="cline-any cline-
|
|
893
|
-
<span class="cline-any cline-
|
|
894
|
-
<span class="cline-any cline-
|
|
895
|
-
<span class="cline-any cline-
|
|
896
|
-
<span class="cline-any cline-
|
|
897
|
-
<span class="cline-any cline-
|
|
898
|
-
<span class="cline-any cline-
|
|
899
|
-
<span class="cline-any cline-
|
|
900
|
-
<span class="cline-any cline-
|
|
901
|
-
<span class="cline-any cline-
|
|
902
|
-
<span class="cline-any cline-
|
|
903
|
-
<span class="cline-any cline-
|
|
904
|
-
<span class="cline-any cline-
|
|
905
|
-
<span class="cline-any cline-
|
|
906
|
-
<span class="cline-any cline-
|
|
907
|
-
<span class="cline-any cline-
|
|
908
|
-
<span class="cline-any cline-
|
|
909
|
-
<span class="cline-any cline-
|
|
910
|
-
<span class="cline-any cline-
|
|
911
|
-
<span class="cline-any cline-
|
|
912
|
-
<span class="cline-any cline-
|
|
913
|
-
<span class="cline-any cline-
|
|
914
|
-
<span class="cline-any cline-
|
|
915
|
-
<span class="cline-any cline-
|
|
916
|
-
<span class="cline-any cline-
|
|
917
|
-
<span class="cline-any cline-
|
|
918
|
-
<span class="cline-any cline-
|
|
919
|
-
<span class="cline-any cline-
|
|
920
|
-
<span class="cline-any cline-
|
|
921
|
-
<span class="cline-any cline-
|
|
922
|
-
<span class="cline-any cline-
|
|
923
|
-
<span class="cline-any cline-
|
|
924
|
-
<span class="cline-any cline-
|
|
925
|
-
<span class="cline-any cline-
|
|
926
|
-
<span class="cline-any cline-
|
|
927
|
-
<span class="cline-any cline-
|
|
928
|
-
<span class="cline-any cline-
|
|
929
|
-
<span class="cline-any cline-
|
|
930
|
-
<span class="cline-any cline-
|
|
931
|
-
<span class="cline-any cline-
|
|
932
|
-
<span class="cline-any cline-
|
|
933
|
-
<span class="cline-any cline-
|
|
934
|
-
<span class="cline-any cline-
|
|
935
|
-
<span class="cline-any cline-
|
|
936
|
-
<span class="cline-any cline-
|
|
937
|
-
<span class="cline-any cline-
|
|
938
|
-
<span class="cline-any cline-
|
|
939
|
-
<span class="cline-any cline-
|
|
940
|
-
<span class="cline-any cline-
|
|
941
|
-
<span class="cline-any cline-
|
|
942
|
-
<span class="cline-any cline-
|
|
943
|
-
<span class="cline-any cline-
|
|
944
|
-
<span class="cline-any cline-
|
|
945
|
-
<span class="cline-any cline-
|
|
946
|
-
<span class="cline-any cline-
|
|
947
|
-
<span class="cline-any cline-
|
|
948
|
-
<span class="cline-any cline-
|
|
949
|
-
<span class="cline-any cline-
|
|
950
|
-
<span class="cline-any cline-
|
|
951
|
-
<span class="cline-any cline-
|
|
952
|
-
<span class="cline-any cline-
|
|
953
|
-
<span class="cline-any cline-
|
|
954
|
-
<span class="cline-any cline-
|
|
955
|
-
<span class="cline-any cline-
|
|
956
|
-
<span class="cline-any cline-
|
|
957
|
-
<span class="cline-any cline-
|
|
958
|
-
<span class="cline-any cline-
|
|
959
|
-
<span class="cline-any cline-
|
|
960
|
-
<span class="cline-any cline-
|
|
961
|
-
<span class="cline-any cline-
|
|
962
|
-
<span class="cline-any cline-
|
|
963
|
-
<span class="cline-any cline-
|
|
964
|
-
<span class="cline-any cline-
|
|
965
|
-
<span class="cline-any cline-
|
|
966
|
-
<span class="cline-any cline-
|
|
967
|
-
<span class="cline-any cline-
|
|
968
|
-
<span class="cline-any cline-
|
|
969
|
-
<span class="cline-any cline-
|
|
970
|
-
<span class="cline-any cline-
|
|
971
|
-
<span class="cline-any cline-
|
|
972
|
-
<span class="cline-any cline-
|
|
973
|
-
<span class="cline-any cline-
|
|
974
|
-
<span class="cline-any cline-
|
|
975
|
-
<span class="cline-any cline-
|
|
976
|
-
<span class="cline-any cline-
|
|
977
|
-
<span class="cline-any cline-
|
|
978
|
-
<span class="cline-any cline-
|
|
979
|
-
<span class="cline-any cline-
|
|
980
|
-
<span class="cline-any cline-
|
|
981
|
-
<span class="cline-any cline-
|
|
982
|
-
<span class="cline-any cline-
|
|
983
|
-
<span class="cline-any cline-
|
|
984
|
-
<span class="cline-any cline-
|
|
985
|
-
<span class="cline-any cline-
|
|
986
|
-
<span class="cline-any cline-
|
|
987
|
-
<span class="cline-any cline-
|
|
988
|
-
<span class="cline-any cline-
|
|
989
|
-
<span class="cline-any cline-
|
|
990
|
-
<span class="cline-any cline-
|
|
991
|
-
<span class="cline-any cline-
|
|
992
|
-
<span class="cline-any cline-
|
|
993
|
-
<span class="cline-any cline-
|
|
994
|
-
<span class="cline-any cline-
|
|
995
|
-
<span class="cline-any cline-
|
|
996
|
-
<span class="cline-any cline-
|
|
997
|
-
<span class="cline-any cline-
|
|
998
|
-
<span class="cline-any cline-
|
|
999
|
-
<span class="cline-any cline-
|
|
1000
|
-
<span class="cline-any cline-
|
|
1001
|
-
<span class="cline-any cline-
|
|
1002
|
-
<span class="cline-any cline-
|
|
1003
|
-
<span class="cline-any cline-
|
|
1004
|
-
<span class="cline-any cline-
|
|
1005
|
-
<span class="cline-any cline-
|
|
1006
|
-
<span class="cline-any cline-
|
|
1007
|
-
<span class="cline-any cline-
|
|
1008
|
-
<span class="cline-any cline-
|
|
1009
|
-
<span class="cline-any cline-
|
|
1010
|
-
<span class="cline-any cline-
|
|
1011
|
-
<span class="cline-any cline-
|
|
1012
|
-
<span class="cline-any cline-
|
|
1013
|
-
<span class="cline-any cline-
|
|
1014
|
-
<span class="cline-any cline-
|
|
1015
|
-
<span class="cline-any cline-
|
|
1016
|
-
<span class="cline-any cline-
|
|
1017
|
-
<span class="cline-any cline-
|
|
1018
|
-
<span class="cline-any cline-
|
|
1019
|
-
<span class="cline-any cline-
|
|
1020
|
-
<span class="cline-any cline-
|
|
1021
|
-
<span class="cline-any cline-
|
|
1022
|
-
<span class="cline-any cline-
|
|
1023
|
-
<span class="cline-any cline-
|
|
1024
|
-
<span class="cline-any cline-
|
|
1025
|
-
<span class="cline-any cline-
|
|
1026
|
-
<span class="cline-any cline-
|
|
1027
|
-
<span class="cline-any cline-
|
|
1028
|
-
<span class="cline-any cline-
|
|
1029
|
-
<span class="cline-any cline-
|
|
1030
|
-
<span class="cline-any cline-
|
|
1031
|
-
<span class="cline-any cline-
|
|
1032
|
-
<span class="cline-any cline-
|
|
1033
|
-
<span class="cline-any cline-
|
|
1034
|
-
<span class="cline-any cline-
|
|
1035
|
-
<span class="cline-any cline-
|
|
1036
|
-
<span class="cline-any cline-
|
|
1037
|
-
<span class="cline-any cline-
|
|
1038
|
-
<span class="cline-any cline-
|
|
1039
|
-
<span class="cline-any cline-
|
|
1040
|
-
<span class="cline-any cline-
|
|
800
|
+
<a name='L735'></a><a href='#L735'>735</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
801
|
+
<span class="cline-any cline-yes">1x</span>
|
|
802
|
+
<span class="cline-any cline-yes">1x</span>
|
|
803
|
+
<span class="cline-any cline-yes">1x</span>
|
|
804
|
+
<span class="cline-any cline-yes">1x</span>
|
|
805
|
+
<span class="cline-any cline-yes">1x</span>
|
|
806
|
+
<span class="cline-any cline-yes">1x</span>
|
|
807
|
+
<span class="cline-any cline-yes">1x</span>
|
|
808
|
+
<span class="cline-any cline-yes">1x</span>
|
|
809
|
+
<span class="cline-any cline-yes">1x</span>
|
|
810
|
+
<span class="cline-any cline-yes">1x</span>
|
|
811
|
+
<span class="cline-any cline-yes">1x</span>
|
|
812
|
+
<span class="cline-any cline-yes">1x</span>
|
|
813
|
+
<span class="cline-any cline-yes">1x</span>
|
|
814
|
+
<span class="cline-any cline-yes">1x</span>
|
|
815
|
+
<span class="cline-any cline-yes">1x</span>
|
|
816
|
+
<span class="cline-any cline-yes">1x</span>
|
|
817
|
+
<span class="cline-any cline-yes">1x</span>
|
|
818
|
+
<span class="cline-any cline-yes">1x</span>
|
|
819
|
+
<span class="cline-any cline-yes">1x</span>
|
|
820
|
+
<span class="cline-any cline-yes">1x</span>
|
|
821
|
+
<span class="cline-any cline-yes">1x</span>
|
|
822
|
+
<span class="cline-any cline-yes">1x</span>
|
|
823
|
+
<span class="cline-any cline-yes">1x</span>
|
|
824
|
+
<span class="cline-any cline-yes">1x</span>
|
|
825
|
+
<span class="cline-any cline-yes">1x</span>
|
|
826
|
+
<span class="cline-any cline-yes">1x</span>
|
|
827
|
+
<span class="cline-any cline-yes">1x</span>
|
|
828
|
+
<span class="cline-any cline-yes">1x</span>
|
|
829
|
+
<span class="cline-any cline-yes">1x</span>
|
|
830
|
+
<span class="cline-any cline-yes">1x</span>
|
|
831
|
+
<span class="cline-any cline-yes">1x</span>
|
|
832
|
+
<span class="cline-any cline-yes">1x</span>
|
|
833
|
+
<span class="cline-any cline-yes">1x</span>
|
|
834
|
+
<span class="cline-any cline-yes">1x</span>
|
|
835
|
+
<span class="cline-any cline-yes">1x</span>
|
|
836
|
+
<span class="cline-any cline-yes">1x</span>
|
|
837
|
+
<span class="cline-any cline-yes">1x</span>
|
|
838
|
+
<span class="cline-any cline-yes">1x</span>
|
|
839
|
+
<span class="cline-any cline-yes">1x</span>
|
|
840
|
+
<span class="cline-any cline-yes">1x</span>
|
|
841
|
+
<span class="cline-any cline-yes">1x</span>
|
|
842
|
+
<span class="cline-any cline-yes">1x</span>
|
|
843
|
+
<span class="cline-any cline-yes">1x</span>
|
|
844
|
+
<span class="cline-any cline-yes">1x</span>
|
|
845
|
+
<span class="cline-any cline-yes">1x</span>
|
|
846
|
+
<span class="cline-any cline-yes">1x</span>
|
|
847
|
+
<span class="cline-any cline-yes">1x</span>
|
|
848
|
+
<span class="cline-any cline-yes">1x</span>
|
|
849
|
+
<span class="cline-any cline-yes">1x</span>
|
|
850
|
+
<span class="cline-any cline-yes">1x</span>
|
|
851
|
+
<span class="cline-any cline-yes">1x</span>
|
|
852
|
+
<span class="cline-any cline-yes">1x</span>
|
|
853
|
+
<span class="cline-any cline-yes">1x</span>
|
|
854
|
+
<span class="cline-any cline-yes">1x</span>
|
|
855
|
+
<span class="cline-any cline-yes">1x</span>
|
|
856
|
+
<span class="cline-any cline-yes">1x</span>
|
|
857
|
+
<span class="cline-any cline-yes">1x</span>
|
|
858
|
+
<span class="cline-any cline-yes">1x</span>
|
|
859
|
+
<span class="cline-any cline-yes">1x</span>
|
|
860
|
+
<span class="cline-any cline-yes">1x</span>
|
|
861
|
+
<span class="cline-any cline-yes">1x</span>
|
|
862
|
+
<span class="cline-any cline-yes">1x</span>
|
|
863
|
+
<span class="cline-any cline-yes">1x</span>
|
|
864
|
+
<span class="cline-any cline-yes">1x</span>
|
|
865
|
+
<span class="cline-any cline-yes">1x</span>
|
|
866
|
+
<span class="cline-any cline-yes">1x</span>
|
|
867
|
+
<span class="cline-any cline-yes">1x</span>
|
|
868
|
+
<span class="cline-any cline-yes">1x</span>
|
|
869
|
+
<span class="cline-any cline-yes">1x</span>
|
|
870
|
+
<span class="cline-any cline-yes">1x</span>
|
|
871
|
+
<span class="cline-any cline-yes">1x</span>
|
|
872
|
+
<span class="cline-any cline-yes">1x</span>
|
|
873
|
+
<span class="cline-any cline-yes">1x</span>
|
|
874
|
+
<span class="cline-any cline-yes">1x</span>
|
|
875
|
+
<span class="cline-any cline-yes">1x</span>
|
|
876
|
+
<span class="cline-any cline-yes">1x</span>
|
|
877
|
+
<span class="cline-any cline-yes">1x</span>
|
|
878
|
+
<span class="cline-any cline-yes">1x</span>
|
|
879
|
+
<span class="cline-any cline-yes">1x</span>
|
|
880
|
+
<span class="cline-any cline-yes">1x</span>
|
|
881
|
+
<span class="cline-any cline-yes">1x</span>
|
|
882
|
+
<span class="cline-any cline-yes">1x</span>
|
|
883
|
+
<span class="cline-any cline-yes">1x</span>
|
|
884
|
+
<span class="cline-any cline-yes">1x</span>
|
|
885
|
+
<span class="cline-any cline-yes">1x</span>
|
|
886
|
+
<span class="cline-any cline-yes">1x</span>
|
|
887
|
+
<span class="cline-any cline-yes">1x</span>
|
|
888
|
+
<span class="cline-any cline-yes">1x</span>
|
|
889
|
+
<span class="cline-any cline-yes">1x</span>
|
|
890
|
+
<span class="cline-any cline-yes">1x</span>
|
|
891
|
+
<span class="cline-any cline-yes">1x</span>
|
|
892
|
+
<span class="cline-any cline-yes">1x</span>
|
|
893
|
+
<span class="cline-any cline-yes">1x</span>
|
|
894
|
+
<span class="cline-any cline-yes">1x</span>
|
|
895
|
+
<span class="cline-any cline-yes">1x</span>
|
|
896
|
+
<span class="cline-any cline-yes">1x</span>
|
|
897
|
+
<span class="cline-any cline-yes">1x</span>
|
|
898
|
+
<span class="cline-any cline-yes">1x</span>
|
|
899
|
+
<span class="cline-any cline-yes">1x</span>
|
|
900
|
+
<span class="cline-any cline-yes">1x</span>
|
|
901
|
+
<span class="cline-any cline-yes">1x</span>
|
|
902
|
+
<span class="cline-any cline-yes">1x</span>
|
|
903
|
+
<span class="cline-any cline-yes">1x</span>
|
|
904
|
+
<span class="cline-any cline-yes">1x</span>
|
|
905
|
+
<span class="cline-any cline-yes">1x</span>
|
|
906
|
+
<span class="cline-any cline-yes">1x</span>
|
|
907
|
+
<span class="cline-any cline-yes">1x</span>
|
|
908
|
+
<span class="cline-any cline-yes">1x</span>
|
|
909
|
+
<span class="cline-any cline-yes">1x</span>
|
|
910
|
+
<span class="cline-any cline-yes">1x</span>
|
|
911
|
+
<span class="cline-any cline-yes">1x</span>
|
|
912
|
+
<span class="cline-any cline-yes">1x</span>
|
|
913
|
+
<span class="cline-any cline-yes">1x</span>
|
|
914
|
+
<span class="cline-any cline-yes">1x</span>
|
|
915
|
+
<span class="cline-any cline-yes">1x</span>
|
|
916
|
+
<span class="cline-any cline-yes">1x</span>
|
|
917
|
+
<span class="cline-any cline-yes">1x</span>
|
|
918
|
+
<span class="cline-any cline-yes">1x</span>
|
|
919
|
+
<span class="cline-any cline-yes">1x</span>
|
|
920
|
+
<span class="cline-any cline-yes">1x</span>
|
|
921
|
+
<span class="cline-any cline-yes">1x</span>
|
|
922
|
+
<span class="cline-any cline-yes">1x</span>
|
|
923
|
+
<span class="cline-any cline-yes">1x</span>
|
|
924
|
+
<span class="cline-any cline-yes">1x</span>
|
|
925
|
+
<span class="cline-any cline-yes">1x</span>
|
|
926
|
+
<span class="cline-any cline-yes">1x</span>
|
|
927
|
+
<span class="cline-any cline-yes">1x</span>
|
|
928
|
+
<span class="cline-any cline-yes">1x</span>
|
|
929
|
+
<span class="cline-any cline-yes">1x</span>
|
|
930
|
+
<span class="cline-any cline-yes">1x</span>
|
|
931
|
+
<span class="cline-any cline-yes">1x</span>
|
|
932
|
+
<span class="cline-any cline-yes">1x</span>
|
|
933
|
+
<span class="cline-any cline-yes">1x</span>
|
|
934
|
+
<span class="cline-any cline-yes">1x</span>
|
|
935
|
+
<span class="cline-any cline-yes">1x</span>
|
|
936
|
+
<span class="cline-any cline-yes">1x</span>
|
|
937
|
+
<span class="cline-any cline-yes">1x</span>
|
|
938
|
+
<span class="cline-any cline-yes">1x</span>
|
|
939
|
+
<span class="cline-any cline-yes">1x</span>
|
|
940
|
+
<span class="cline-any cline-yes">1x</span>
|
|
941
|
+
<span class="cline-any cline-yes">1x</span>
|
|
942
|
+
<span class="cline-any cline-yes">1x</span>
|
|
943
|
+
<span class="cline-any cline-yes">1x</span>
|
|
944
|
+
<span class="cline-any cline-yes">1x</span>
|
|
945
|
+
<span class="cline-any cline-yes">1x</span>
|
|
946
|
+
<span class="cline-any cline-yes">1x</span>
|
|
947
|
+
<span class="cline-any cline-yes">1x</span>
|
|
948
|
+
<span class="cline-any cline-yes">1x</span>
|
|
949
|
+
<span class="cline-any cline-yes">1x</span>
|
|
950
|
+
<span class="cline-any cline-yes">1x</span>
|
|
951
|
+
<span class="cline-any cline-yes">1x</span>
|
|
952
|
+
<span class="cline-any cline-yes">1x</span>
|
|
953
|
+
<span class="cline-any cline-yes">1x</span>
|
|
954
|
+
<span class="cline-any cline-yes">1x</span>
|
|
955
|
+
<span class="cline-any cline-yes">1x</span>
|
|
956
|
+
<span class="cline-any cline-yes">1x</span>
|
|
957
|
+
<span class="cline-any cline-yes">1x</span>
|
|
958
|
+
<span class="cline-any cline-yes">1x</span>
|
|
959
|
+
<span class="cline-any cline-yes">1x</span>
|
|
960
|
+
<span class="cline-any cline-yes">1x</span>
|
|
961
|
+
<span class="cline-any cline-yes">1x</span>
|
|
962
|
+
<span class="cline-any cline-yes">1x</span>
|
|
963
|
+
<span class="cline-any cline-yes">1x</span>
|
|
964
|
+
<span class="cline-any cline-yes">1x</span>
|
|
965
|
+
<span class="cline-any cline-yes">1x</span>
|
|
966
|
+
<span class="cline-any cline-yes">1x</span>
|
|
967
|
+
<span class="cline-any cline-yes">1x</span>
|
|
968
|
+
<span class="cline-any cline-yes">1x</span>
|
|
969
|
+
<span class="cline-any cline-yes">1x</span>
|
|
970
|
+
<span class="cline-any cline-yes">1x</span>
|
|
971
|
+
<span class="cline-any cline-yes">1x</span>
|
|
972
|
+
<span class="cline-any cline-yes">1x</span>
|
|
973
|
+
<span class="cline-any cline-yes">1x</span>
|
|
974
|
+
<span class="cline-any cline-yes">1x</span>
|
|
975
|
+
<span class="cline-any cline-yes">1x</span>
|
|
976
|
+
<span class="cline-any cline-yes">1x</span>
|
|
977
|
+
<span class="cline-any cline-yes">1x</span>
|
|
978
|
+
<span class="cline-any cline-yes">1x</span>
|
|
979
|
+
<span class="cline-any cline-yes">1x</span>
|
|
980
|
+
<span class="cline-any cline-yes">1x</span>
|
|
981
|
+
<span class="cline-any cline-yes">1x</span>
|
|
982
|
+
<span class="cline-any cline-yes">1x</span>
|
|
983
|
+
<span class="cline-any cline-yes">1x</span>
|
|
984
|
+
<span class="cline-any cline-yes">1x</span>
|
|
985
|
+
<span class="cline-any cline-yes">1x</span>
|
|
986
|
+
<span class="cline-any cline-yes">1x</span>
|
|
987
|
+
<span class="cline-any cline-yes">1x</span>
|
|
988
|
+
<span class="cline-any cline-yes">1x</span>
|
|
989
|
+
<span class="cline-any cline-yes">1x</span>
|
|
990
|
+
<span class="cline-any cline-yes">1x</span>
|
|
991
|
+
<span class="cline-any cline-yes">1x</span>
|
|
992
|
+
<span class="cline-any cline-yes">1x</span>
|
|
993
|
+
<span class="cline-any cline-yes">1x</span>
|
|
994
|
+
<span class="cline-any cline-yes">1x</span>
|
|
995
|
+
<span class="cline-any cline-yes">1x</span>
|
|
996
|
+
<span class="cline-any cline-yes">1x</span>
|
|
997
|
+
<span class="cline-any cline-yes">1x</span>
|
|
998
|
+
<span class="cline-any cline-yes">1x</span>
|
|
999
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1000
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1001
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1002
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1003
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1004
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1005
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1006
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1007
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1008
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1009
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1010
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1011
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1012
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1013
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1014
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1015
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1016
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1017
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1018
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1019
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1020
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1021
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1022
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1023
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1024
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1025
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1026
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1027
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1028
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1029
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1030
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1031
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1032
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1033
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1034
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1035
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1036
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1037
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1038
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1039
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1040
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1041
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1042
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1043
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1044
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1045
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1046
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1047
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1048
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1049
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1050
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1051
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1052
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1053
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1054
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1055
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1056
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1057
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1058
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1059
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1060
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1061
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1062
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1063
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1064
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1065
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1066
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1067
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1068
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1069
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1070
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1071
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1072
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1073
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1074
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1075
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1076
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1077
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1078
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1079
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1080
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1081
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1082
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1083
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1084
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1085
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1086
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1087
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1088
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1089
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1090
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1091
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1092
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1093
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1094
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1095
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1096
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1097
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1098
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1099
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1100
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1101
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1102
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1103
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1104
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1105
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1106
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1107
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1108
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1109
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1110
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1111
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1112
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1113
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1114
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1115
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1116
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1117
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1118
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1119
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1120
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1121
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1122
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1123
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1124
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1125
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1126
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1127
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1128
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1129
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1130
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1131
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1132
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1133
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1134
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1135
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1136
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1137
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1138
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1139
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1140
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1141
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1142
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1143
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1144
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1145
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1146
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1147
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1148
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1149
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1150
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1151
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1152
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1153
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1154
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1155
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1156
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1157
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1158
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1159
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1160
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1161
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1162
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1163
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1164
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1165
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1166
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1167
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1168
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1169
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1170
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1171
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1172
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1173
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1174
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1175
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1176
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1177
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1178
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1179
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1180
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1181
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1182
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1183
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1184
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1185
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1186
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1187
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1188
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1189
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1190
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1191
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1192
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1193
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1194
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1195
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1196
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1197
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1198
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1199
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1200
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1201
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1202
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1203
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1204
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1205
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1206
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1207
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1208
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1209
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1210
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1211
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1212
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1213
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1214
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1041
1215
|
<span class="cline-any cline-no"> </span>
|
|
1042
1216
|
<span class="cline-any cline-no"> </span>
|
|
1043
1217
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1357,595 +1531,421 @@
|
|
|
1357
1531
|
<span class="cline-any cline-no"> </span>
|
|
1358
1532
|
<span class="cline-any cline-no"> </span>
|
|
1359
1533
|
<span class="cline-any cline-no"> </span>
|
|
1360
|
-
<span class="cline-any cline-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
<span class="
|
|
1775
|
-
<span class="cstat-no" title="statement not covered" > .qr-header h3 {</span>
|
|
1776
|
-
<span class="cstat-no" title="statement not covered" > margin: 0 0 0.5rem 0;</span>
|
|
1777
|
-
<span class="cstat-no" title="statement not covered" > font-size: 1.25rem;</span>
|
|
1778
|
-
<span class="cstat-no" title="statement not covered" > font-weight: 600;</span>
|
|
1779
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1780
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1781
|
-
<span class="cstat-no" title="statement not covered" > .qr-subtitle {</span>
|
|
1782
|
-
<span class="cstat-no" title="statement not covered" > margin: 0;</span>
|
|
1783
|
-
<span class="cstat-no" title="statement not covered" > color: var(--ion-color-medium-shade);</span>
|
|
1784
|
-
<span class="cstat-no" title="statement not covered" > font-size: 0.875rem;</span>
|
|
1785
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1786
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1787
|
-
<span class="cstat-no" title="statement not covered" > .qr-wrapper {</span>
|
|
1788
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1789
|
-
<span class="cstat-no" title="statement not covered" > justify-content: center;</span>
|
|
1790
|
-
<span class="cstat-no" title="statement not covered" > padding: 1rem;</span>
|
|
1791
|
-
<span class="cstat-no" title="statement not covered" > background: white;</span>
|
|
1792
|
-
<span class="cstat-no" title="statement not covered" > border-radius: 12px;</span>
|
|
1793
|
-
<span class="cstat-no" title="statement not covered" > box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);</span>
|
|
1794
|
-
<span class="cstat-no" title="statement not covered" > margin-bottom: 1rem;</span>
|
|
1795
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1796
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1797
|
-
<span class="cstat-no" title="statement not covered" > .qr-meta {</span>
|
|
1798
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1799
|
-
<span class="cstat-no" title="statement not covered" > justify-content: center;</span>
|
|
1800
|
-
<span class="cstat-no" title="statement not covered" > align-items: center;</span>
|
|
1801
|
-
<span class="cstat-no" title="statement not covered" > gap: 1rem;</span>
|
|
1802
|
-
<span class="cstat-no" title="statement not covered" > margin-bottom: 1rem;</span>
|
|
1803
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1804
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1805
|
-
<span class="cstat-no" title="statement not covered" > .countdown {</span>
|
|
1806
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1807
|
-
<span class="cstat-no" title="statement not covered" > align-items: center;</span>
|
|
1808
|
-
<span class="cstat-no" title="statement not covered" > gap: 0.25rem;</span>
|
|
1809
|
-
<span class="cstat-no" title="statement not covered" > padding: 0.25rem 0.75rem;</span>
|
|
1810
|
-
<span class="cstat-no" title="statement not covered" > background: var(--ion-color-light);</span>
|
|
1811
|
-
<span class="cstat-no" title="statement not covered" > border-radius: 1rem;</span>
|
|
1812
|
-
<span class="cstat-no" title="statement not covered" > font-size: 0.875rem;</span>
|
|
1813
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1814
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1815
|
-
<span class="cstat-no" title="statement not covered" > .countdown.warning {</span>
|
|
1816
|
-
<span class="cstat-no" title="statement not covered" > background: var(--ion-color-warning-tint);</span>
|
|
1817
|
-
<span class="cstat-no" title="statement not covered" > color: var(--ion-color-warning-shade);</span>
|
|
1818
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1819
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1820
|
-
<span class="cstat-no" title="statement not covered" > .instructions {</span>
|
|
1821
|
-
<span class="cstat-no" title="statement not covered" > margin-bottom: 1rem;</span>
|
|
1822
|
-
<span class="cstat-no" title="statement not covered" > width: 100%;</span>
|
|
1823
|
-
<span class="cstat-no" title="statement not covered" > max-width: 300px;</span>
|
|
1824
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1825
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1826
|
-
<span class="cstat-no" title="statement not covered" > .instructions ol {</span>
|
|
1827
|
-
<span class="cstat-no" title="statement not covered" > text-align: left;</span>
|
|
1828
|
-
<span class="cstat-no" title="statement not covered" > padding-left: 1.25rem;</span>
|
|
1829
|
-
<span class="cstat-no" title="statement not covered" > margin: 0;</span>
|
|
1830
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1831
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1832
|
-
<span class="cstat-no" title="statement not covered" > .instructions li {</span>
|
|
1833
|
-
<span class="cstat-no" title="statement not covered" > margin-bottom: 0.5rem;</span>
|
|
1834
|
-
<span class="cstat-no" title="statement not covered" > color: var(--ion-color-medium-shade);</span>
|
|
1835
|
-
<span class="cstat-no" title="statement not covered" > font-size: 0.875rem;</span>
|
|
1836
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1837
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1838
|
-
<span class="cstat-no" title="statement not covered" > .state-panel {</span>
|
|
1839
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1840
|
-
<span class="cstat-no" title="statement not covered" > flex-direction: column;</span>
|
|
1841
|
-
<span class="cstat-no" title="statement not covered" > align-items: center;</span>
|
|
1842
|
-
<span class="cstat-no" title="statement not covered" > justify-content: center;</span>
|
|
1843
|
-
<span class="cstat-no" title="statement not covered" > gap: 1rem;</span>
|
|
1844
|
-
<span class="cstat-no" title="statement not covered" > flex: 1;</span>
|
|
1845
|
-
<span class="cstat-no" title="statement not covered" > text-align: center;</span>
|
|
1846
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1847
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1848
|
-
<span class="cstat-no" title="statement not covered" > .state-panel ion-spinner {</span>
|
|
1849
|
-
<span class="cstat-no" title="statement not covered" > width: 48px;</span>
|
|
1850
|
-
<span class="cstat-no" title="statement not covered" > height: 48px;</span>
|
|
1851
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1852
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1853
|
-
<span class="cstat-no" title="statement not covered" > .state-panel ion-icon {</span>
|
|
1854
|
-
<span class="cstat-no" title="statement not covered" > font-size: 64px;</span>
|
|
1855
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1856
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1857
|
-
<span class="cstat-no" title="statement not covered" > /* Waiting States */</span>
|
|
1858
|
-
<span class="cstat-no" title="statement not covered" > .waiting,</span>
|
|
1859
|
-
<span class="cstat-no" title="statement not covered" > .waiting-approval {</span>
|
|
1860
|
-
<span class="cstat-no" title="statement not covered" > padding: 1.5rem;</span>
|
|
1861
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1862
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1863
|
-
<span class="cstat-no" title="statement not covered" > .waiting h3,</span>
|
|
1864
|
-
<span class="cstat-no" title="statement not covered" > .waiting-approval h3 {</span>
|
|
1865
|
-
<span class="cstat-no" title="statement not covered" > margin: 0 0 0.5rem 0;</span>
|
|
1866
|
-
<span class="cstat-no" title="statement not covered" > font-size: 1.25rem;</span>
|
|
1867
|
-
<span class="cstat-no" title="statement not covered" > font-weight: 600;</span>
|
|
1868
|
-
<span class="cstat-no" title="statement not covered" > color: var(--ion-color-primary);</span>
|
|
1869
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1870
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1871
|
-
<span class="cstat-no" title="statement not covered" > .waiting-description {</span>
|
|
1872
|
-
<span class="cstat-no" title="statement not covered" > color: var(--ion-color-medium-shade);</span>
|
|
1873
|
-
<span class="cstat-no" title="statement not covered" > font-size: 0.9rem;</span>
|
|
1874
|
-
<span class="cstat-no" title="statement not covered" > margin-bottom: 1.5rem;</span>
|
|
1875
|
-
<span class="cstat-no" title="statement not covered" > max-width: 280px;</span>
|
|
1876
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1877
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1878
|
-
<span class="cstat-no" title="statement not covered" > .waiting-icon-wrapper {</span>
|
|
1879
|
-
<span class="cstat-no" title="statement not covered" > width: 80px;</span>
|
|
1880
|
-
<span class="cstat-no" title="statement not covered" > height: 80px;</span>
|
|
1881
|
-
<span class="cstat-no" title="statement not covered" > border-radius: 50%;</span>
|
|
1882
|
-
<span class="cstat-no" title="statement not covered" > background: var(--ion-color-primary-tint);</span>
|
|
1883
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1884
|
-
<span class="cstat-no" title="statement not covered" > align-items: center;</span>
|
|
1885
|
-
<span class="cstat-no" title="statement not covered" > justify-content: center;</span>
|
|
1886
|
-
<span class="cstat-no" title="statement not covered" > margin-bottom: 1rem;</span>
|
|
1887
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1888
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1889
|
-
<span class="cstat-no" title="statement not covered" > .waiting-icon-wrapper ion-spinner {</span>
|
|
1890
|
-
<span class="cstat-no" title="statement not covered" > width: 40px;</span>
|
|
1891
|
-
<span class="cstat-no" title="statement not covered" > height: 40px;</span>
|
|
1892
|
-
<span class="cstat-no" title="statement not covered" > --color: var(--ion-color-primary);</span>
|
|
1893
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1894
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1895
|
-
<span class="cstat-no" title="statement not covered" > .waiting-steps {</span>
|
|
1896
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1897
|
-
<span class="cstat-no" title="statement not covered" > flex-direction: column;</span>
|
|
1898
|
-
<span class="cstat-no" title="statement not covered" > gap: 0.75rem;</span>
|
|
1899
|
-
<span class="cstat-no" title="statement not covered" > padding: 1rem;</span>
|
|
1900
|
-
<span class="cstat-no" title="statement not covered" > background: var(--ion-color-light);</span>
|
|
1901
|
-
<span class="cstat-no" title="statement not covered" > border-radius: 12px;</span>
|
|
1902
|
-
<span class="cstat-no" title="statement not covered" > width: 100%;</span>
|
|
1903
|
-
<span class="cstat-no" title="statement not covered" > max-width: 280px;</span>
|
|
1904
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1905
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1906
|
-
<span class="cstat-no" title="statement not covered" > .waiting-step {</span>
|
|
1907
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1908
|
-
<span class="cstat-no" title="statement not covered" > align-items: center;</span>
|
|
1909
|
-
<span class="cstat-no" title="statement not covered" > gap: 0.75rem;</span>
|
|
1910
|
-
<span class="cstat-no" title="statement not covered" > font-size: 0.875rem;</span>
|
|
1911
|
-
<span class="cstat-no" title="statement not covered" > color: var(--ion-color-medium-shade);</span>
|
|
1912
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1913
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1914
|
-
<span class="cstat-no" title="statement not covered" > .waiting-step .step-check {</span>
|
|
1915
|
-
<span class="cstat-no" title="statement not covered" > width: 20px;</span>
|
|
1916
|
-
<span class="cstat-no" title="statement not covered" > height: 20px;</span>
|
|
1917
|
-
<span class="cstat-no" title="statement not covered" > border-radius: 50%;</span>
|
|
1918
|
-
<span class="cstat-no" title="statement not covered" > background: var(--ion-color-success);</span>
|
|
1919
|
-
<span class="cstat-no" title="statement not covered" > color: white;</span>
|
|
1920
|
-
<span class="cstat-no" title="statement not covered" > font-size: 0.75rem;</span>
|
|
1921
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1922
|
-
<span class="cstat-no" title="statement not covered" > align-items: center;</span>
|
|
1923
|
-
<span class="cstat-no" title="statement not covered" > justify-content: center;</span>
|
|
1924
|
-
<span class="cstat-no" title="statement not covered" > flex-shrink: 0;</span>
|
|
1925
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1926
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1927
|
-
<span class="cstat-no" title="statement not covered" > .waiting-step.active {</span>
|
|
1928
|
-
<span class="cstat-no" title="statement not covered" > color: var(--ion-color-primary);</span>
|
|
1929
|
-
<span class="cstat-no" title="statement not covered" > font-weight: 500;</span>
|
|
1930
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1931
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1932
|
-
<span class="cstat-no" title="statement not covered" > .waiting-step.active ion-spinner {</span>
|
|
1933
|
-
<span class="cstat-no" title="statement not covered" > width: 20px;</span>
|
|
1934
|
-
<span class="cstat-no" title="statement not covered" > height: 20px;</span>
|
|
1935
|
-
<span class="cstat-no" title="statement not covered" > --color: var(--ion-color-primary);</span>
|
|
1936
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1937
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1938
|
-
<span class="cstat-no" title="statement not covered" > .footer-actions {</span>
|
|
1939
|
-
<span class="cstat-no" title="statement not covered" > margin-top: auto;</span>
|
|
1940
|
-
<span class="cstat-no" title="statement not covered" > padding-top: 1rem;</span>
|
|
1941
|
-
<span class="cstat-no" title="statement not covered" > border-top: 1px solid var(--ion-color-light);</span>
|
|
1942
|
-
<span class="cstat-no" title="statement not covered" > display: flex;</span>
|
|
1943
|
-
<span class="cstat-no" title="statement not covered" > justify-content: center;</span>
|
|
1944
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1945
|
-
<span class="cstat-no" title="statement not covered" > `,</span>
|
|
1946
|
-
<span class="cstat-no" title="statement not covered" > ],</span>
|
|
1947
|
-
<span class="cstat-no" title="statement not covered" >})</span>
|
|
1948
|
-
<span class="cstat-no" title="statement not covered" >export class QrPairingStepComponent implements AfterViewInit, OnChanges, OnDestroy {</span>
|
|
1534
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
1535
|
+
* HSuite Native Connect
|
|
1536
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
1537
|
+
*
|
|
1538
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
1539
|
+
*
|
|
1540
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
1541
|
+
* visit https://hsuite.finance/licensing
|
|
1542
|
+
*/
|
|
1543
|
+
|
|
1544
|
+
/**
|
|
1545
|
+
* @file qr-pairing-step.component.ts
|
|
1546
|
+
* @description QR code pairing step for mobile wallet connection
|
|
1547
|
+
*
|
|
1548
|
+
* Implements single-QR Nostr-first pairing flow:
|
|
1549
|
+
* 1. Display compact QR code with session invite
|
|
1550
|
+
* 2. Wait for wallet to scan and connect via Nostr
|
|
1551
|
+
* 3. Wait for user approval in wallet
|
|
1552
|
+
* 4. Connection established (P2P upgrade happens automatically)
|
|
1553
|
+
*
|
|
1554
|
+
* This enables fully decentralized cross-device connections with only
|
|
1555
|
+
* a single QR scan - much simpler than the previous 2-QR WebRTC flow.
|
|
1556
|
+
*
|
|
1557
|
+
* Features:
|
|
1558
|
+
* - Single QR code display (no answer scanning needed)
|
|
1559
|
+
* - QR code with HSuite logo in center
|
|
1560
|
+
* - Countdown timer with expiry handling
|
|
1561
|
+
* - Refresh capability for expired offers
|
|
1562
|
+
* - Waiting for approval state
|
|
1563
|
+
*/
|
|
1564
|
+
|
|
1565
|
+
import { CommonModule } from '@angular/common';
|
|
1566
|
+
import {
|
|
1567
|
+
Component,
|
|
1568
|
+
Input,
|
|
1569
|
+
Output,
|
|
1570
|
+
EventEmitter,
|
|
1571
|
+
ChangeDetectionStrategy,
|
|
1572
|
+
signal,
|
|
1573
|
+
OnChanges,
|
|
1574
|
+
SimpleChanges,
|
|
1575
|
+
OnDestroy,
|
|
1576
|
+
AfterViewInit,
|
|
1577
|
+
ElementRef,
|
|
1578
|
+
ViewChild,
|
|
1579
|
+
inject,
|
|
1580
|
+
} from '@angular/core';
|
|
1581
|
+
import { copyToClipboard } from '@hsuite/native-connect-ui';
|
|
1582
|
+
import { IonIcon, IonSpinner, IonButton } from '@ionic/angular/standalone';
|
|
1583
|
+
import { addIcons } from 'ionicons';
|
|
1584
|
+
import {
|
|
1585
|
+
qrCodeOutline,
|
|
1586
|
+
refreshOutline,
|
|
1587
|
+
checkmarkCircleOutline,
|
|
1588
|
+
closeCircleOutline,
|
|
1589
|
+
phonePortraitOutline,
|
|
1590
|
+
arrowBackOutline,
|
|
1591
|
+
timeOutline,
|
|
1592
|
+
copyOutline,
|
|
1593
|
+
checkmarkOutline,
|
|
1594
|
+
} from 'ionicons/icons';
|
|
1595
|
+
import * as QRCode from 'qrcode'; // qrcode has no default export; use namespace import for toCanvas
|
|
1596
|
+
|
|
1597
|
+
import { LoggerService } from '../../../services/logger.service';
|
|
1598
|
+
|
|
1599
|
+
/**
|
|
1600
|
+
* Connection state for the QR pairing step.
|
|
1601
|
+
*
|
|
1602
|
+
* States:
|
|
1603
|
+
* - loading: Generating session invite
|
|
1604
|
+
* - displaying: Showing QR code for wallet to scan
|
|
1605
|
+
* - waiting_wallet: QR scanned, waiting for wallet to connect via Nostr
|
|
1606
|
+
* - waiting_approval: Wallet connected, waiting for user to approve
|
|
1607
|
+
* - connected: Session approved and connected
|
|
1608
|
+
* - expired: QR code expired
|
|
1609
|
+
* - error: An error occurred
|
|
1610
|
+
*/
|
|
1611
|
+
export type QrPairingState =
|
|
1612
|
+
| 'loading'
|
|
1613
|
+
| 'displaying'
|
|
1614
|
+
| 'waiting_wallet'
|
|
1615
|
+
| 'waiting_approval'
|
|
1616
|
+
| 'connected'
|
|
1617
|
+
| 'expired'
|
|
1618
|
+
| 'error';
|
|
1619
|
+
|
|
1620
|
+
/**
|
|
1621
|
+
* QR Pairing Step Component
|
|
1622
|
+
*
|
|
1623
|
+
* Implements single-QR Nostr-first pairing for cross-device P2P connections.
|
|
1624
|
+
* Much simpler than the previous 2-QR WebRTC approach.
|
|
1625
|
+
*/
|
|
1626
|
+
@Component({
|
|
1627
|
+
selector: 'hsuite-qr-pairing-step',
|
|
1628
|
+
standalone: true,
|
|
1629
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1630
|
+
imports: [CommonModule, IonIcon, IonSpinner, IonButton],
|
|
1631
|
+
template: `
|
|
1632
|
+
<div class="qr-pairing-container">
|
|
1633
|
+
<!-- Hidden canvas for QR generation - always rendered -->
|
|
1634
|
+
<canvas #qrCanvas width="300" height="300" class="hidden-canvas"></canvas>
|
|
1635
|
+
|
|
1636
|
+
<!-- Loading State -->
|
|
1637
|
+
<div *ngIf="pairingState() === 'loading'" class="state-panel loading">
|
|
1638
|
+
<ion-spinner name="crescent"></ion-spinner>
|
|
1639
|
+
<p>Generating secure connection...</p>
|
|
1640
|
+
</div>
|
|
1641
|
+
|
|
1642
|
+
<!-- QR Display State -->
|
|
1643
|
+
<div *ngIf="pairingState() === 'displaying'" class="qr-display">
|
|
1644
|
+
<div class="qr-header">
|
|
1645
|
+
<h3>Scan with Your Wallet</h3>
|
|
1646
|
+
<p class="qr-subtitle">Open HSuite Wallet and scan this QR code</p>
|
|
1647
|
+
</div>
|
|
1648
|
+
|
|
1649
|
+
<div class="qr-wrapper">
|
|
1650
|
+
<canvas #qrCanvasDisplay width="300" height="300"></canvas>
|
|
1651
|
+
</div>
|
|
1652
|
+
|
|
1653
|
+
<div class="qr-meta">
|
|
1654
|
+
<div class="countdown" [class.warning]="countdown() < 30">
|
|
1655
|
+
<ion-icon name="time-outline"></ion-icon>
|
|
1656
|
+
<span>{{ formatCountdown() }}</span>
|
|
1657
|
+
</div>
|
|
1658
|
+
<ion-button fill="clear" size="small" (click)="copyUri()">
|
|
1659
|
+
<ion-icon
|
|
1660
|
+
slot="icon-only"
|
|
1661
|
+
[name]="copied() ? 'checkmark-outline' : 'copy-outline'"
|
|
1662
|
+
></ion-icon>
|
|
1663
|
+
</ion-button>
|
|
1664
|
+
</div>
|
|
1665
|
+
|
|
1666
|
+
<div class="instructions">
|
|
1667
|
+
<ol>
|
|
1668
|
+
<li>Open HSuite Wallet on your phone</li>
|
|
1669
|
+
<li>Go to Sessions tab</li>
|
|
1670
|
+
<li>Tap "Scan QR" and scan this code</li>
|
|
1671
|
+
</ol>
|
|
1672
|
+
</div>
|
|
1673
|
+
</div>
|
|
1674
|
+
|
|
1675
|
+
<!-- Waiting for Wallet State -->
|
|
1676
|
+
<div *ngIf="pairingState() === 'waiting_wallet'" class="state-panel waiting">
|
|
1677
|
+
<div class="waiting-icon-wrapper">
|
|
1678
|
+
<ion-spinner name="crescent"></ion-spinner>
|
|
1679
|
+
</div>
|
|
1680
|
+
<h3>Waiting for Wallet</h3>
|
|
1681
|
+
<p class="waiting-description">Scan the QR code with your wallet app to connect.</p>
|
|
1682
|
+
</div>
|
|
1683
|
+
|
|
1684
|
+
<!-- Waiting for Approval State -->
|
|
1685
|
+
<div *ngIf="pairingState() === 'waiting_approval'" class="state-panel waiting-approval">
|
|
1686
|
+
<div class="waiting-icon-wrapper">
|
|
1687
|
+
<ion-spinner name="crescent"></ion-spinner>
|
|
1688
|
+
</div>
|
|
1689
|
+
<h3>Waiting for Wallet Approval</h3>
|
|
1690
|
+
<p class="waiting-description">
|
|
1691
|
+
The wallet is connected. Please approve the session in your wallet app.
|
|
1692
|
+
</p>
|
|
1693
|
+
<div class="waiting-steps">
|
|
1694
|
+
<div class="waiting-step">
|
|
1695
|
+
<span class="step-check">&#10003;</span>
|
|
1696
|
+
<span>QR code scanned</span>
|
|
1697
|
+
</div>
|
|
1698
|
+
<div class="waiting-step">
|
|
1699
|
+
<span class="step-check">&#10003;</span>
|
|
1700
|
+
<span>Wallet connected</span>
|
|
1701
|
+
</div>
|
|
1702
|
+
<div class="waiting-step active">
|
|
1703
|
+
<ion-spinner name="dots"></ion-spinner>
|
|
1704
|
+
<span>Awaiting approval in wallet...</span>
|
|
1705
|
+
</div>
|
|
1706
|
+
</div>
|
|
1707
|
+
</div>
|
|
1708
|
+
|
|
1709
|
+
<!-- Connected State -->
|
|
1710
|
+
<div *ngIf="pairingState() === 'connected'" class="state-panel connected">
|
|
1711
|
+
<ion-icon name="checkmark-circle-outline" color="success"></ion-icon>
|
|
1712
|
+
<p>Connected successfully!</p>
|
|
1713
|
+
</div>
|
|
1714
|
+
|
|
1715
|
+
<!-- Error State -->
|
|
1716
|
+
<div *ngIf="pairingState() === 'error'" class="state-panel error">
|
|
1717
|
+
<ion-icon name="close-circle-outline" color="danger"></ion-icon>
|
|
1718
|
+
<p>{{ errorMessage || 'Connection failed' }}</p>
|
|
1719
|
+
<ion-button fill="outline" (click)="refresh()">
|
|
1720
|
+
<ion-icon slot="start" name="refresh-outline"></ion-icon>
|
|
1721
|
+
Try Again
|
|
1722
|
+
</ion-button>
|
|
1723
|
+
</div>
|
|
1724
|
+
|
|
1725
|
+
<!-- Expired State -->
|
|
1726
|
+
<div *ngIf="pairingState() === 'expired'" class="state-panel expired">
|
|
1727
|
+
<ion-icon name="time-outline" color="warning"></ion-icon>
|
|
1728
|
+
<p>QR code expired</p>
|
|
1729
|
+
<ion-button fill="outline" (click)="refresh()">
|
|
1730
|
+
<ion-icon slot="start" name="refresh-outline"></ion-icon>
|
|
1731
|
+
Generate New
|
|
1732
|
+
</ion-button>
|
|
1733
|
+
</div>
|
|
1734
|
+
|
|
1735
|
+
<!-- Footer Actions (cancel) - hidden during waiting/connected -->
|
|
1736
|
+
<div
|
|
1737
|
+
class="footer-actions"
|
|
1738
|
+
*ngIf="!['waiting_wallet', 'waiting_approval', 'connected'].includes(pairingState())"
|
|
1739
|
+
>
|
|
1740
|
+
<ion-button fill="clear" (click)="cancel()">
|
|
1741
|
+
<ion-icon slot="start" name="arrow-back-outline"></ion-icon>
|
|
1742
|
+
Cancel
|
|
1743
|
+
</ion-button>
|
|
1744
|
+
</div>
|
|
1745
|
+
</div>
|
|
1746
|
+
`,
|
|
1747
|
+
styles: [
|
|
1748
|
+
`
|
|
1749
|
+
.qr-pairing-container {
|
|
1750
|
+
display: flex;
|
|
1751
|
+
flex-direction: column;
|
|
1752
|
+
padding: 1rem;
|
|
1753
|
+
min-height: 400px;
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
.hidden-canvas {
|
|
1757
|
+
position: absolute;
|
|
1758
|
+
left: -9999px;
|
|
1759
|
+
top: -9999px;
|
|
1760
|
+
visibility: hidden;
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
.qr-display {
|
|
1764
|
+
display: flex;
|
|
1765
|
+
flex-direction: column;
|
|
1766
|
+
align-items: center;
|
|
1767
|
+
flex: 1;
|
|
1768
|
+
}
|
|
1769
|
+
|
|
1770
|
+
.qr-header {
|
|
1771
|
+
text-align: center;
|
|
1772
|
+
margin-bottom: 1.5rem;
|
|
1773
|
+
}
|
|
1774
|
+
|
|
1775
|
+
.qr-header h3 {
|
|
1776
|
+
margin: 0 0 0.5rem 0;
|
|
1777
|
+
font-size: 1.25rem;
|
|
1778
|
+
font-weight: 600;
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
.qr-subtitle {
|
|
1782
|
+
margin: 0;
|
|
1783
|
+
color: var(--ion-color-medium-shade);
|
|
1784
|
+
font-size: 0.875rem;
|
|
1785
|
+
}
|
|
1786
|
+
|
|
1787
|
+
.qr-wrapper {
|
|
1788
|
+
display: flex;
|
|
1789
|
+
justify-content: center;
|
|
1790
|
+
padding: 1rem;
|
|
1791
|
+
background: white;
|
|
1792
|
+
border-radius: 12px;
|
|
1793
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
1794
|
+
margin-bottom: 1rem;
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
.qr-meta {
|
|
1798
|
+
display: flex;
|
|
1799
|
+
justify-content: center;
|
|
1800
|
+
align-items: center;
|
|
1801
|
+
gap: 1rem;
|
|
1802
|
+
margin-bottom: 1rem;
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
.countdown {
|
|
1806
|
+
display: flex;
|
|
1807
|
+
align-items: center;
|
|
1808
|
+
gap: 0.25rem;
|
|
1809
|
+
padding: 0.25rem 0.75rem;
|
|
1810
|
+
background: var(--ion-color-light);
|
|
1811
|
+
border-radius: 1rem;
|
|
1812
|
+
font-size: 0.875rem;
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
.countdown.warning {
|
|
1816
|
+
background: var(--ion-color-warning-tint);
|
|
1817
|
+
color: var(--ion-color-warning-shade);
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
.instructions {
|
|
1821
|
+
margin-bottom: 1rem;
|
|
1822
|
+
width: 100%;
|
|
1823
|
+
max-width: 300px;
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
.instructions ol {
|
|
1827
|
+
text-align: left;
|
|
1828
|
+
padding-left: 1.25rem;
|
|
1829
|
+
margin: 0;
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1832
|
+
.instructions li {
|
|
1833
|
+
margin-bottom: 0.5rem;
|
|
1834
|
+
color: var(--ion-color-medium-shade);
|
|
1835
|
+
font-size: 0.875rem;
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1838
|
+
.state-panel {
|
|
1839
|
+
display: flex;
|
|
1840
|
+
flex-direction: column;
|
|
1841
|
+
align-items: center;
|
|
1842
|
+
justify-content: center;
|
|
1843
|
+
gap: 1rem;
|
|
1844
|
+
flex: 1;
|
|
1845
|
+
text-align: center;
|
|
1846
|
+
}
|
|
1847
|
+
|
|
1848
|
+
.state-panel ion-spinner {
|
|
1849
|
+
width: 48px;
|
|
1850
|
+
height: 48px;
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
.state-panel ion-icon {
|
|
1854
|
+
font-size: 64px;
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1857
|
+
/* Waiting States */
|
|
1858
|
+
.waiting,
|
|
1859
|
+
.waiting-approval {
|
|
1860
|
+
padding: 1.5rem;
|
|
1861
|
+
}
|
|
1862
|
+
|
|
1863
|
+
.waiting h3,
|
|
1864
|
+
.waiting-approval h3 {
|
|
1865
|
+
margin: 0 0 0.5rem 0;
|
|
1866
|
+
font-size: 1.25rem;
|
|
1867
|
+
font-weight: 600;
|
|
1868
|
+
color: var(--ion-color-primary);
|
|
1869
|
+
}
|
|
1870
|
+
|
|
1871
|
+
.waiting-description {
|
|
1872
|
+
color: var(--ion-color-medium-shade);
|
|
1873
|
+
font-size: 0.9rem;
|
|
1874
|
+
margin-bottom: 1.5rem;
|
|
1875
|
+
max-width: 280px;
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1878
|
+
.waiting-icon-wrapper {
|
|
1879
|
+
width: 80px;
|
|
1880
|
+
height: 80px;
|
|
1881
|
+
border-radius: 50%;
|
|
1882
|
+
background: var(--ion-color-primary-tint);
|
|
1883
|
+
display: flex;
|
|
1884
|
+
align-items: center;
|
|
1885
|
+
justify-content: center;
|
|
1886
|
+
margin-bottom: 1rem;
|
|
1887
|
+
}
|
|
1888
|
+
|
|
1889
|
+
.waiting-icon-wrapper ion-spinner {
|
|
1890
|
+
width: 40px;
|
|
1891
|
+
height: 40px;
|
|
1892
|
+
--color: var(--ion-color-primary);
|
|
1893
|
+
}
|
|
1894
|
+
|
|
1895
|
+
.waiting-steps {
|
|
1896
|
+
display: flex;
|
|
1897
|
+
flex-direction: column;
|
|
1898
|
+
gap: 0.75rem;
|
|
1899
|
+
padding: 1rem;
|
|
1900
|
+
background: var(--ion-color-light);
|
|
1901
|
+
border-radius: 12px;
|
|
1902
|
+
width: 100%;
|
|
1903
|
+
max-width: 280px;
|
|
1904
|
+
}
|
|
1905
|
+
|
|
1906
|
+
.waiting-step {
|
|
1907
|
+
display: flex;
|
|
1908
|
+
align-items: center;
|
|
1909
|
+
gap: 0.75rem;
|
|
1910
|
+
font-size: 0.875rem;
|
|
1911
|
+
color: var(--ion-color-medium-shade);
|
|
1912
|
+
}
|
|
1913
|
+
|
|
1914
|
+
.waiting-step .step-check {
|
|
1915
|
+
width: 20px;
|
|
1916
|
+
height: 20px;
|
|
1917
|
+
border-radius: 50%;
|
|
1918
|
+
background: var(--ion-color-success);
|
|
1919
|
+
color: white;
|
|
1920
|
+
font-size: 0.75rem;
|
|
1921
|
+
display: flex;
|
|
1922
|
+
align-items: center;
|
|
1923
|
+
justify-content: center;
|
|
1924
|
+
flex-shrink: 0;
|
|
1925
|
+
}
|
|
1926
|
+
|
|
1927
|
+
.waiting-step.active {
|
|
1928
|
+
color: var(--ion-color-primary);
|
|
1929
|
+
font-weight: 500;
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
.waiting-step.active ion-spinner {
|
|
1933
|
+
width: 20px;
|
|
1934
|
+
height: 20px;
|
|
1935
|
+
--color: var(--ion-color-primary);
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
.footer-actions {
|
|
1939
|
+
margin-top: auto;
|
|
1940
|
+
padding-top: 1rem;
|
|
1941
|
+
border-top: 1px solid var(--ion-color-light);
|
|
1942
|
+
display: flex;
|
|
1943
|
+
justify-content: center;
|
|
1944
|
+
}
|
|
1945
|
+
`,
|
|
1946
|
+
],
|
|
1947
|
+
})
|
|
1948
|
+
export class QrPairingStepComponent implements AfterViewInit, OnChanges, OnDestroy <span class="fstat-no" title="function not covered" >{</span>
|
|
1949
1949
|
<span class="cstat-no" title="statement not covered" > private readonly logger = inject(LoggerService).scoped('QrPairingStep');</span>
|
|
1950
1950
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
1951
1951
|
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
@@ -2272,7 +2272,7 @@
|
|
|
2272
2272
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2273
2273
|
Code coverage generated by
|
|
2274
2274
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2275
|
-
at 2026-06-
|
|
2275
|
+
at 2026-06-27T21:00:37.209Z
|
|
2276
2276
|
</div>
|
|
2277
2277
|
<script src="../../../../prettify.js"></script>
|
|
2278
2278
|
<script>
|