From 5f93c2c571831d5fe92f7f76a5d45832e32ba94e Mon Sep 17 00:00:00 2001 From: christophhagen <christoph@spacemasters.eu> Date: Fri, 19 Apr 2019 01:04:55 +0200 Subject: [PATCH] Update documentation to version 1.3 --- Documentation/Classes.html | 92 ++- Documentation/Classes/ReceiverChain.html | 98 ++-- Documentation/Classes/SenderKeyRecord.html | 131 +++-- Documentation/Classes/SenderKeyState.html | 118 ++-- Documentation/Classes/SessionRecord.html | 102 ++-- Documentation/Classes/SessionState.html | 202 +++---- Documentation/Classes/SignalError.html | 125 ++--- Documentation/Enums.html | 60 +- Documentation/Enums/CipherTextType.html | 89 ++- .../Enums/SignalEncryptionScheme.html | 47 +- Documentation/Enums/SignalErrorType.html | 274 ++++----- Documentation/Functions.html | 36 +- Documentation/Protocols.html | 128 +++-- Documentation/Protocols/GroupKeyStore.html | 331 +++++++++++ Documentation/Protocols/IdentityKeyStore.html | 149 ++--- Documentation/Protocols/KeyStore.html | 278 ++++----- Documentation/Protocols/PreKeyStore.html | 61 +- Documentation/Protocols/SenderKeyStore.html | 43 +- Documentation/Protocols/SessionStore.html | 55 +- .../Protocols/SignalCryptoProvider.html | 59 +- .../Protocols/SignedPreKeyStore.html | 63 +-- Documentation/Structs.html | 529 ++++++++---------- Documentation/Structs/CipherTextMessage.html | 64 ++- .../DeviceConsistencyCommitmentV0.html | 67 ++- .../Structs/DeviceConsistencyMessage.html | 87 +-- .../Structs/DeviceConsistencySignature.html | 61 +- .../Structs/DisplayableFingerprint.html | 73 ++- Documentation/Structs/Fingerprint.html | 121 ++-- Documentation/Structs/GroupCipher.html | 77 ++- Documentation/Structs/HKDF.html | 61 +- Documentation/Structs/KeyPair.html | 176 ++++-- Documentation/Structs/PendingPreKey.html | 81 +-- .../Structs/PreKeySignalMessage.html | 92 +-- Documentation/Structs/PrivateKey.html | 162 ++++-- Documentation/Structs/PublicKey.html | 108 ++-- Documentation/Structs/RatchetChainKey.html | 121 ++-- Documentation/Structs/RatchetMessageKeys.html | 123 ++-- Documentation/Structs/RatchetRootKey.html | 102 ++-- .../Structs/ScannableFingerprint.html | 106 ++-- Documentation/Structs/SenderChain.html | 81 +-- Documentation/Structs/SenderChainKey.html | 95 ++-- .../Structs/SenderKeyDistributionMessage.html | 95 ++-- Documentation/Structs/SenderKeyMessage.html | 89 ++- Documentation/Structs/SenderMessageKey.html | 117 ++-- Documentation/Structs/SessionBuilder.html | 84 +-- Documentation/Structs/SessionCipher.html | 131 +++-- Documentation/Structs/SessionPreKey.html | 86 +-- .../Structs/SessionPreKeyBundle.html | 105 ++-- .../Structs/SessionPreKeyPublic.html | 68 +-- .../Structs/SessionSignedPreKey.html | 93 +-- .../Structs/SessionSignedPreKeyPublic.html | 124 ++-- Documentation/Structs/SignalCommonCrypto.html | 101 ++-- Documentation/Structs/SignalCrypto.html | 106 ++-- Documentation/Structs/SignalMessage.html | 158 +++--- .../Structs/SymmetricParameters.html | 73 ++- Documentation/Typealiases.html | 36 +- Documentation/badge.svg | 29 +- Documentation/css/jazzy.css | 15 +- .../Contents/Resources/Documents/Classes.html | 92 ++- .../Documents/Classes/ReceiverChain.html | 98 ++-- .../Documents/Classes/SenderKeyRecord.html | 131 +++-- .../Documents/Classes/SenderKeyState.html | 118 ++-- .../Documents/Classes/SessionRecord.html | 102 ++-- .../Documents/Classes/SessionState.html | 202 +++---- .../Documents/Classes/SignalError.html | 125 ++--- .../Contents/Resources/Documents/Enums.html | 60 +- .../Documents/Enums/CipherTextType.html | 89 ++- .../Enums/SignalEncryptionScheme.html | 47 +- .../Documents/Enums/SignalErrorType.html | 274 ++++----- .../Resources/Documents/Functions.html | 36 +- .../Resources/Documents/Protocols.html | 128 +++-- .../Documents/Protocols/GroupKeyStore.html | 331 +++++++++++ .../Documents/Protocols/IdentityKeyStore.html | 149 ++--- .../Documents/Protocols/KeyStore.html | 278 ++++----- .../Documents/Protocols/PreKeyStore.html | 61 +- .../Documents/Protocols/SenderKeyStore.html | 43 +- .../Documents/Protocols/SessionStore.html | 55 +- .../Protocols/SignalCryptoProvider.html | 59 +- .../Protocols/SignedPreKeyStore.html | 63 +-- .../Contents/Resources/Documents/Structs.html | 529 ++++++++---------- .../Documents/Structs/CipherTextMessage.html | 64 ++- .../DeviceConsistencyCommitmentV0.html | 67 ++- .../Structs/DeviceConsistencyMessage.html | 87 +-- .../Structs/DeviceConsistencySignature.html | 61 +- .../Structs/DisplayableFingerprint.html | 73 ++- .../Documents/Structs/Fingerprint.html | 121 ++-- .../Documents/Structs/GroupCipher.html | 77 ++- .../Resources/Documents/Structs/HKDF.html | 61 +- .../Resources/Documents/Structs/KeyPair.html | 176 ++++-- .../Documents/Structs/PendingPreKey.html | 81 +-- .../Structs/PreKeySignalMessage.html | 92 +-- .../Documents/Structs/PrivateKey.html | 162 ++++-- .../Documents/Structs/PublicKey.html | 108 ++-- .../Documents/Structs/RatchetChainKey.html | 121 ++-- .../Documents/Structs/RatchetMessageKeys.html | 123 ++-- .../Documents/Structs/RatchetRootKey.html | 102 ++-- .../Structs/ScannableFingerprint.html | 106 ++-- .../Documents/Structs/SenderChain.html | 81 +-- .../Documents/Structs/SenderChainKey.html | 95 ++-- .../Structs/SenderKeyDistributionMessage.html | 95 ++-- .../Documents/Structs/SenderKeyMessage.html | 89 ++- .../Documents/Structs/SenderMessageKey.html | 117 ++-- .../Documents/Structs/SessionBuilder.html | 84 +-- .../Documents/Structs/SessionCipher.html | 131 +++-- .../Documents/Structs/SessionPreKey.html | 86 +-- .../Structs/SessionPreKeyBundle.html | 105 ++-- .../Structs/SessionPreKeyPublic.html | 68 +-- .../Structs/SessionSignedPreKey.html | 93 +-- .../Structs/SessionSignedPreKeyPublic.html | 124 ++-- .../Documents/Structs/SignalCommonCrypto.html | 101 ++-- .../Documents/Structs/SignalCrypto.html | 106 ++-- .../Documents/Structs/SignalMessage.html | 158 +++--- .../Structs/SymmetricParameters.html | 73 ++- .../Resources/Documents/Typealiases.html | 36 +- .../Contents/Resources/Documents/badge.svg | 29 +- .../Resources/Documents/css/jazzy.css | 15 +- .../Contents/Resources/Documents/index.html | 77 +-- .../Contents/Resources/Documents/js/jazzy.js | 6 - .../Resources/Documents/js/jquery.min.js | 6 +- .../Contents/Resources/Documents/search.json | 2 +- .../Resources/Documents/undocumented.json | 18 +- .../Contents/Resources/docSet.dsidx | Bin 167936 -> 167936 bytes Documentation/docsets/SignalProtocol.tgz | Bin 376969 -> 378514 bytes Documentation/index.html | 77 +-- Documentation/js/jazzy.js | 6 - Documentation/js/jquery.min.js | 6 +- Documentation/search.json | 2 +- Documentation/undocumented.json | 2 +- README.md | 2 +- Sources/Additional/SignalError.swift | 1 + Sources/LocalStorage/GroupKeyStore.swift | 3 + 131 files changed, 7005 insertions(+), 6079 deletions(-) create mode 100644 Documentation/Protocols/GroupKeyStore.html create mode 100644 Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/GroupKeyStore.html diff --git a/Documentation/Classes.html b/Documentation/Classes.html index 67bb42b..ce7f8a3 100644 --- a/Documentation/Classes.html +++ b/Documentation/Classes.html @@ -10,6 +10,7 @@ </head> <body> + <a name="//apple_ref/swift/Section/Classes" class="dashAnchor"></a> <a title="Classes Reference"></a> <header> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -234,9 +232,9 @@ <h1>Classes</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC"></a> - <a name="//apple_ref/swift/Class/SessionRecord" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC">SessionRecord</a> + <a name="/s:14SignalProtocol0A5ErrorC"></a> + <a name="//apple_ref/swift/Class/SignalError" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC">SignalError</a> </code> </div> <div class="height-container"> @@ -244,15 +242,15 @@ <h1>Classes</h1> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The record of a session (and previous sessions) with another party.</p> + <p>All errors thrown by <code>SignalProtocolSwift</code> are <code>SignalError</code> objects.</p> - <a href="Classes/SessionRecord.html" class="slightly-smaller">See more</a> + <a href="Classes/SignalError.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionRecord</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SignalError</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span><span class="p">,</span> <span class="kt">Error</span></code></pre> </div> </div> @@ -266,9 +264,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC"></a> - <a name="//apple_ref/swift/Class/SignalError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC">SignalError</a> + <a name="/s:14SignalProtocol15SenderKeyRecordC"></a> + <a name="//apple_ref/swift/Class/SenderKeyRecord" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC">SenderKeyRecord</a> </code> </div> <div class="height-container"> @@ -276,15 +274,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>All errors thrown by <code>SignalProtocolSwift</code> are <code>SignalError</code> objects.</p> + <p>Stores the states for a session.</p> - <a href="Classes/SignalError.html" class="slightly-smaller">See more</a> + <a href="Classes/SenderKeyRecord.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SignalError</span><span class="p">:</span> <span class="kt">CustomStringConvertible</span><span class="p">,</span> <span class="kt">Error</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyRecord</span></code></pre> </div> </div> @@ -298,9 +296,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC"></a> - <a name="//apple_ref/swift/Class/SessionState" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC">SessionState</a> + <a name="/s:14SignalProtocol14SenderKeyStateC"></a> + <a name="//apple_ref/swift/Class/SenderKeyState" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC">SenderKeyState</a> </code> </div> <div class="height-container"> @@ -308,15 +306,18 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A session state contains all data needed for communicating with a remote party.</p> + <p>A state of a group message session with a recipient, +which saves the message keys of out-of-order messages +and generates new keys for messages. +Each session can have multiple states.</p> - <a href="Classes/SessionState.html" class="slightly-smaller">See more</a> + <a href="Classes/SenderKeyState.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionState</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyState</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -348,7 +349,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">ReceiverChain</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">ReceiverChain</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -362,9 +363,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC"></a> - <a name="//apple_ref/swift/Class/SenderKeyState" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC">SenderKeyState</a> + <a name="/s:14SignalProtocol13SessionRecordC"></a> + <a name="//apple_ref/swift/Class/SessionRecord" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC">SessionRecord</a> </code> </div> <div class="height-container"> @@ -372,18 +373,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A state of a group message session with a recipient, -which saves the message keys of out-of-order messages -and generates new keys for messages. -Each session can have multiple states.</p> + <p>The record of a session (and previous sessions) with another party.</p> - <a href="Classes/SenderKeyState.html" class="slightly-smaller">See more</a> + <a href="Classes/SessionRecord.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyState</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionRecord</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -397,9 +395,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC"></a> - <a name="//apple_ref/swift/Class/SenderKeyRecord" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC">SenderKeyRecord</a> + <a name="/s:14SignalProtocol12SessionStateC"></a> + <a name="//apple_ref/swift/Class/SessionState" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC">SessionState</a> </code> </div> <div class="height-container"> @@ -407,15 +405,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Stores the states for a session.</p> + <p>A session state contains all data needed for communicating with a remote party.</p> - <a href="Classes/SenderKeyRecord.html" class="slightly-smaller">See more</a> + <a href="Classes/SessionState.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyRecord</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionState</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -427,8 +425,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Classes/ReceiverChain.html b/Documentation/Classes/ReceiverChain.html index 38b5833..fd8384e 100644 --- a/Documentation/Classes/ReceiverChain.html +++ b/Documentation/Classes/ReceiverChain.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>ReceiverChain</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">ReceiverChain</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">ReceiverChain</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>ReceiverChain</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vv"></a> + <a name="/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vvp"></a> <a name="//apple_ref/swift/Property/ratchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vv">ratchetKey</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vvp">ratchetKey</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>ReceiverChain</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vv"></a> + <a name="/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vvp">chainKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGv"></a> + <a name="/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGvp"></a> <a name="//apple_ref/swift/Property/messageKeys" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGv">messageKeys</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGvp">messageKeys</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">messageKeys</span> <span class="o">=</span> <span class="p">[</span><span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">]()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">messageKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">]</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainCAcA9PublicKeyV07ratchetF0_AA07RatchetdF0V05chainF0tcfc"></a> + <a name="/s:14SignalProtocol13ReceiverChainC10ratchetKey05chainF0AcA06PublicF0V_AA07RatchetdF0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(ratchetKey:chainKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainCAcA9PublicKeyV07ratchetF0_AA07RatchetdF0V05chainF0tcfc">init(ratchetKey:chainKey:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10ratchetKey05chainF0AcA06PublicF0V_AA07RatchetdF0Vtcfc">init(ratchetKey:chainKey:)</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -380,9 +377,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC3addyAA18RatchetMessageKeysV10messageKey_tF"></a> + <a name="/s:14SignalProtocol13ReceiverChainC3add10messageKeyyAA18RatchetMessageKeysV_tF"></a> <a name="//apple_ref/swift/Method/add(messageKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC3addyAA18RatchetMessageKeysV10messageKey_tF">add(messageKey:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC3add10messageKeyyAA18RatchetMessageKeysV_tF">add(messageKey:)</a> </code> </div> <div class="height-container"> @@ -397,7 +394,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">)</span></code></pre> </div> </div> @@ -426,9 +423,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC3hasSbAA18RatchetMessageKeysV10messageKey_tF"></a> + <a name="/s:14SignalProtocol13ReceiverChainC3has10messageKeySbAA18RatchetMessageKeysV_tF"></a> <a name="//apple_ref/swift/Method/has(messageKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC3hasSbAA18RatchetMessageKeysV10messageKey_tF">has(messageKey:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC3has10messageKeySbAA18RatchetMessageKeysV_tF">has(messageKey:)</a> </code> </div> <div class="height-container"> @@ -443,7 +440,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">has</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">has</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -476,9 +473,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC10messageKeyAA18RatchetMessageKeysVSgs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol13ReceiverChainC10messageKey3forAA18RatchetMessageKeysVSgs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/messageKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10messageKeyAA18RatchetMessageKeysVSgs6UInt32V3for_tF">messageKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10messageKey3forAA18RatchetMessageKeysVSgs6UInt32V_tF">messageKey(for:)</a> </code> </div> <div class="height-container"> @@ -493,7 +490,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">messageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">messageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> </div> </div> @@ -526,9 +523,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC16removeMessageKeyAA07RatchetF4KeysVSgs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol13ReceiverChainC16removeMessageKey3forAA07RatchetF4KeysVSgs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/removeMessageKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC16removeMessageKeyAA07RatchetF4KeysVSgs6UInt32V3for_tF">removeMessageKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC16removeMessageKey3forAA07RatchetF4KeysVSgs6UInt32V_tF">removeMessageKey(for:)</a> </code> </div> <div class="height-container"> @@ -543,7 +540,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">removeMessageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">removeMessageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> </div> </div> @@ -587,9 +584,9 @@ <h3 class="section-name">Protocol Buffers</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vv"></a> + <a name="/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -604,7 +601,7 @@ <h3 class="section-name">Protocol Buffers</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -614,9 +611,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainCAcA0A8_SessionV0D0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol13ReceiverChainC4fromAcA0A8_SessionV0D0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainCAcA0A8_SessionV0D0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC4fromAcA0A8_SessionV0D0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -636,7 +633,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -665,13 +662,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol13ReceiverChainC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -686,7 +690,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">ReceiverChain</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">ReceiverChain</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">ReceiverChain</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">ReceiverChain</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -733,8 +737,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Classes/SenderKeyRecord.html b/Documentation/Classes/SenderKeyRecord.html index 39fe235..5d4840f 100644 --- a/Documentation/Classes/SenderKeyRecord.html +++ b/Documentation/Classes/SenderKeyRecord.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyRecord</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyRecord</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyRecord</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderKeyRecord</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivZ"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivpZ"></a> <a name="//apple_ref/swift/Variable/maxStates" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivZ">maxStates</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivpZ">maxStates</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderKeyRecord</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">maxStates</span> <span class="o">=</span> <span class="mi">5</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">maxStates</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGv"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGvp"></a> <a name="//apple_ref/swift/Property/states" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGv">states</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGvp">states</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">states</span> <span class="o">=</span> <span class="p">[</span><span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">]()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">states</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">]</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgv"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgvp"></a> <a name="//apple_ref/swift/Property/state" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgv">state</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgvp">state</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">?</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC7isEmptySbv"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC7isEmptySbvp"></a> <a name="//apple_ref/swift/Property/isEmpty" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC7isEmptySbv">isEmpty</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC7isEmptySbvp">isEmpty</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">isEmpty</span><span class="p">:</span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">isEmpty</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">()</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC5state3forAA0cD5StateCSgs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/state(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgs6UInt32V3for_tF">state(for:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC5state3forAA0cD5StateCSgs6UInt32V_tF">state(for:)</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">state</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">state</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">?</span></code></pre> </div> </div> @@ -426,9 +423,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC03setcD0ys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedM0tF"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC03setcD02id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dK0VtF"></a> <a name="//apple_ref/swift/Method/setSenderKey(id:iteration:chainKey:signatureKeyPair:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC03setcD0ys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedM0tF">setSenderKey(id:iteration:chainKey:signatureKeyPair:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC03setcD02id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dK0VtF">setSenderKey(id:iteration:chainKey:signatureKeyPair:)</a> </code> </div> <div class="height-container"> @@ -443,11 +440,11 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">setSenderKey</span><span class="p">(</span> - <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">signatureKeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">setSenderKey</span><span class="p">(</span> + <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">signatureKeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> </div> </div> @@ -512,9 +509,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA06PublicD0V09signaturenD0AA07PrivateD0VSg0opD0tF"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD0015signaturePublicD00k7PrivateD0ys6UInt32V_AK10Foundation4DataVAA0lD0VAA0mD0VSgtF"></a> <a name="//apple_ref/swift/Method/addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA06PublicD0V09signaturenD0AA07PrivateD0VSg0opD0tF">addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD0015signaturePublicD00k7PrivateD0ys6UInt32V_AK10Foundation4DataVAA0lD0VAA0mD0VSgtF">addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)</a> </code> </div> <div class="height-container"> @@ -534,12 +531,12 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">addState</span><span class="p">(</span> - <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">addState</span><span class="p">(</span> + <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?)</span></code></pre> </div> </div> @@ -616,9 +613,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedN0tF"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dL0VtF"></a> <a name="//apple_ref/swift/Method/addState(id:iteration:chainKey:signatureKeyPair:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedN0tF">addState(id:iteration:chainKey:signatureKeyPair:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dL0VtF">addState(id:iteration:chainKey:signatureKeyPair:)</a> </code> </div> <div class="height-container"> @@ -638,10 +635,10 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">addState</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">signatureKeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">addState</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">signatureKeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> </div> </div> @@ -706,13 +703,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vv"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -727,7 +731,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyRecord</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyRecord</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -737,9 +741,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordCAcA0a1_cdE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC4fromAcA0a1_cdE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordCAcA0a1_cdE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC4fromAcA0a1_cdE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -764,7 +768,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="n">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyRecord</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyRecord</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -793,13 +797,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -819,7 +830,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyRecord</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyRecord</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyRecord</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyRecord</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -866,8 +877,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Classes/SenderKeyState.html b/Documentation/Classes/SenderKeyState.html index 2bd0474..1d373fe 100644 --- a/Documentation/Classes/SenderKeyState.html +++ b/Documentation/Classes/SenderKeyState.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyState</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyState</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyState</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -244,9 +241,9 @@ <h1>SenderKeyState</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivZ"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivpZ"></a> <a name="//apple_ref/swift/Variable/messageKeyMaximum" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivZ">messageKeyMaximum</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivpZ">messageKeyMaximum</a> </code> </div> <div class="height-container"> @@ -261,7 +258,7 @@ <h1>SenderKeyState</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeyMaximum</span> <span class="o">=</span> <span class="mi">2000</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeyMaximum</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -271,9 +268,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/keyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vv">keyId</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vvp">keyId</a> </code> </div> <div class="height-container"> @@ -288,7 +285,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -298,9 +295,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vvp">chainKey</a> </code> </div> <div class="height-container"> @@ -315,7 +312,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChainKey.html">SenderChainKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChainKey.html">SenderChainKey</a></span></code></pre> </div> </div> @@ -325,9 +322,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vvp"></a> <a name="//apple_ref/swift/Property/signaturePublicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vv">signaturePublicKey</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vvp">signaturePublicKey</a> </code> </div> <div class="height-container"> @@ -342,7 +339,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -352,9 +349,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgvp"></a> <a name="//apple_ref/swift/Property/signaturePrivateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgv">signaturePrivateKey</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgvp">signaturePrivateKey</a> </code> </div> <div class="height-container"> @@ -369,7 +366,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -379,9 +376,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGvp"></a> <a name="//apple_ref/swift/Property/messageKeys" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGv">messageKeys</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGvp">messageKeys</a> </code> </div> <div class="height-container"> @@ -396,7 +393,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">messageKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">messageKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">]</span></code></pre> </div> </div> @@ -406,9 +403,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateCACs6UInt32V5keyId_AA0c5ChainD0V05chainD0AA06PublicD0V09signaturekD0AA07PrivateD0VSg0lmD0tcfc"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC5keyId05chainD0015signaturePublicD00i7PrivateD0ACs6UInt32V_AA0c5ChainD0VAA0jD0VAA0kD0VSgtcfc"></a> <a name="//apple_ref/swift/Method/init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateCACs6UInt32V5keyId_AA0c5ChainD0V05chainD0AA06PublicD0V09signaturekD0AA07PrivateD0VSg0lmD0tcfc">init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC5keyId05chainD0015signaturePublicD00i7PrivateD0ACs6UInt32V_AA0c5ChainD0VAA0jD0VAA0kD0VSgtcfc">init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)</a> </code> </div> <div class="height-container"> @@ -423,10 +420,10 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChainKey.html">SenderChainKey</a></span><span class="p">,</span> - <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChainKey.html">SenderChainKey</a></span><span class="p">,</span> + <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?)</span></code></pre> </div> </div> @@ -491,9 +488,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC3addyAA0c7MessageD0V07messageD0_Sb15removingOldKeystF"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC3add07messageD015removingOldKeysyAA0c7MessageD0V_SbtF"></a> <a name="//apple_ref/swift/Method/add(messageKey:removingOldKeys:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC3addyAA0c7MessageD0V07messageD0_Sb15removingOldKeystF">add(messageKey:removingOldKeys:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC3add07messageD015removingOldKeysyAA0c7MessageD0V_SbtF">add(messageKey:removingOldKeys:)</a> </code> </div> <div class="height-container"> @@ -508,7 +505,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">,</span> <span class="nv">removingOldKeys</span><span class="p">:</span> <span class="kt">Bool</span> <span class="o">=</span> <span class="kc">true</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">,</span> <span class="nv">removingOldKeys</span><span class="p">:</span> <span class="kt">Bool</span> <span class="o">=</span> <span class="kc">true</span><span class="p">)</span></code></pre> </div> </div> @@ -549,9 +546,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC07messageD0AA0c7MessageD0VSgs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC07messageD03forAA0c7MessageD0VSgs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/messageKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC07messageD0AA0c7MessageD0VSgs6UInt32V3for_tF">messageKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC07messageD03forAA0c7MessageD0VSgs6UInt32V_tF">messageKey(for:)</a> </code> </div> <div class="height-container"> @@ -566,7 +563,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">messageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">messageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -616,7 +613,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">removeOldMessageKeys</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">removeOldMessageKeys</span><span class="p">()</span></code></pre> </div> </div> @@ -626,9 +623,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC06senderD0AA0c7MessageD0Vs6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC06senderD03forAA0c7MessageD0Vs6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/senderKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC06senderD0AA0c7MessageD0Vs6UInt32V3for_tKF">senderKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC06senderD03forAA0c7MessageD0Vs6UInt32V_tKF">senderKey(for:)</a> </code> </div> <div class="height-container"> @@ -648,7 +645,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">senderKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">senderKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span></code></pre> </div> </div> @@ -692,9 +689,9 @@ <h3 class="section-name">Protocol Buffers</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateCAcA0a1_cdE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC4fromAcA0a1_cdE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateCAcA0a1_cdE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC4fromAcA0a1_cdE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -714,7 +711,7 @@ <h3 class="section-name">Protocol Buffers</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -743,9 +740,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -760,7 +757,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -770,13 +767,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -796,7 +800,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyState</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyState</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyState</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyState</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -843,8 +847,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Classes/SessionRecord.html b/Documentation/Classes/SessionRecord.html index 09ae19e..00be3c6 100644 --- a/Documentation/Classes/SessionRecord.html +++ b/Documentation/Classes/SessionRecord.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionRecord</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionRecord</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionRecord</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SessionRecord</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivZ"></a> + <a name="/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivpZ"></a> <a name="//apple_ref/swift/Variable/archivedStatesMax" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivZ">archivedStatesMax</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivpZ">archivedStatesMax</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SessionRecord</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">archivedStatesMax</span> <span class="o">=</span> <span class="mi">40</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">archivedStatesMax</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCv"></a> + <a name="/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCvp"></a> <a name="//apple_ref/swift/Property/state" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCv">state</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCvp">state</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGv"></a> + <a name="/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGvp"></a> <a name="//apple_ref/swift/Property/previousStates" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGv">previousStates</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGvp">previousStates</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">previousStates</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">previousStates</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">]</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC7isFreshSbv"></a> + <a name="/s:14SignalProtocol13SessionRecordC7isFreshSbvp"></a> <a name="//apple_ref/swift/Property/isFresh" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC7isFreshSbv">isFresh</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC7isFreshSbvp">isFresh</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">isFresh</span><span class="p">:</span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">isFresh</span><span class="p">:</span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordCAcA0C5StateCSg5state_tcfc"></a> + <a name="/s:14SignalProtocol13SessionRecordC5stateAcA0C5StateCSg_tcfc"></a> <a name="//apple_ref/swift/Method/init(state:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordCAcA0C5StateCSg5state_tcfc">init(state:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC5stateAcA0C5StateCSg_tcfc">init(state:)</a> </code> </div> <div class="height-container"> @@ -362,7 +359,7 @@ <h4>Declaration</h4> <p>Create a new session record for a session.</p> <div class="aside aside-note"> <p class="aside-title">Note</p> - If the <code><a href="../Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCv">state</a></code> parameter is nil, then a ‘fresh’ session record is created. + If the <code><a href="../Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCvp">state</a></code> parameter is nil, then a ‘fresh’ session record is created. </div> @@ -371,7 +368,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">?)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">?)</span></code></pre> </div> </div> @@ -400,9 +397,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC03hasC5StateSbAA9PublicKeyV04baseH0_tF"></a> + <a name="/s:14SignalProtocol13SessionRecordC03hasC5State7baseKeySbAA06PublicH0V_tF"></a> <a name="//apple_ref/swift/Method/hasSessionState(baseKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC03hasC5StateSbAA9PublicKeyV04baseH0_tF">hasSessionState(baseKey:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC03hasC5State7baseKeySbAA06PublicH0V_tF">hasSessionState(baseKey:)</a> </code> </div> <div class="height-container"> @@ -417,7 +414,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">hasSessionState</span><span class="p">(</span><span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">hasSessionState</span><span class="p">(</span><span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -467,7 +464,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">archiveCurrentState</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">archiveCurrentState</span><span class="p">()</span></code></pre> </div> </div> @@ -477,9 +474,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC12promoteStateyAA0cF0C5state_tF"></a> + <a name="/s:14SignalProtocol13SessionRecordC12promoteState5stateyAA0cF0C_tF"></a> <a name="//apple_ref/swift/Method/promoteState(state:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC12promoteStateyAA0cF0C5state_tF">promoteState(state:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC12promoteState5stateyAA0cF0C_tF">promoteState(state:)</a> </code> </div> <div class="height-container"> @@ -499,7 +496,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">promoteState</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">promoteState</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">)</span></code></pre> </div> </div> @@ -528,9 +525,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LLyAA9PublicKeyV3for_tF"></a> + <a name="/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LL3foryAA9PublicKeyV_tF"></a> <a name="//apple_ref/swift/Method/removeState(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LLyAA9PublicKeyV3for_tF">removeState(for:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LL3foryAA9PublicKeyV_tF">removeState(for:)</a> </code> </div> <div class="height-container"> @@ -545,7 +542,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">removeState</span><span class="p">(</span><span class="k">for</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">removeState</span><span class="p">(</span><span class="k">for</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -585,9 +582,9 @@ <h3 class="section-name">Protocol Buffers</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vv"></a> + <a name="/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -602,7 +599,7 @@ <h3 class="section-name">Protocol Buffers</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Record</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Record</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -612,9 +609,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordCAcA0a1_D0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol13SessionRecordC4fromAcA0a1_D0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordCAcA0a1_D0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC4fromAcA0a1_D0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -634,7 +631,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Record</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Record</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -663,13 +660,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol13SessionRecordC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -684,7 +688,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionRecord</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionRecord</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionRecord</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionRecord</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -700,8 +704,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Classes/SessionState.html b/Documentation/Classes/SessionState.html index 11395ac..951fc69 100644 --- a/Documentation/Classes/SessionState.html +++ b/Documentation/Classes/SessionState.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionState</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionState</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionState</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SessionState</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivZ"></a> + <a name="/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivpZ"></a> <a name="//apple_ref/swift/Variable/maxReceiverChains" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivZ">maxReceiverChains</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivpZ">maxReceiverChains</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SessionState</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">maxReceiverChains</span> <span class="o">=</span> <span class="mi">5</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">maxReceiverChains</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/keyInfo" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvZ">keyInfo</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvpZ">keyInfo</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyInfo</span> <span class="o">=</span> <span class="s">"WhisperText"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyInfo</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vv"></a> + <a name="/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/previousCounter" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vv">previousCounter</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vvp">previousCounter</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="o">=</span> <span class="mi">0</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgvp"></a> <a name="//apple_ref/swift/Property/localIdentity" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgv">localIdentity</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgvp">localIdentity</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgvp"></a> <a name="//apple_ref/swift/Property/remoteIdentity" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgv">remoteIdentity</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgvp">remoteIdentity</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgvp"></a> <a name="//apple_ref/swift/Property/rootKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgv">rootKey</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgvp">rootKey</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgvp"></a> <a name="//apple_ref/swift/Property/senderChain" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgv">senderChain</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgvp">senderChain</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">senderChain</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChain.html">SenderChain</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">senderChain</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChain.html">SenderChain</a></span><span class="p">?</span></code></pre> </div> </div> @@ -430,9 +427,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGv"></a> + <a name="/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGvp"></a> <a name="//apple_ref/swift/Property/receiverChains" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGv">receiverChains</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGvp">receiverChains</a> </code> </div> <div class="height-container"> @@ -447,7 +444,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">receiverChains</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">receiverChains</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">]</span></code></pre> </div> </div> @@ -457,9 +454,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgvp"></a> <a name="//apple_ref/swift/Property/pendingPreKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgv">pendingPreKey</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgvp">pendingPreKey</a> </code> </div> <div class="height-container"> @@ -474,7 +471,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">pendingPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PendingPreKey.html">PendingPreKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">pendingPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PendingPreKey.html">PendingPreKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -484,9 +481,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgvp"></a> <a name="//apple_ref/swift/Property/aliceBaseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgv">aliceBaseKey</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgvp">aliceBaseKey</a> </code> </div> <div class="height-container"> @@ -501,7 +498,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">aliceBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">aliceBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -528,7 +525,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">()</span></code></pre> </div> </div> @@ -538,9 +535,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC13receiverChainAA08ReceiverF0CSgAA9PublicKeyV3for_tF"></a> + <a name="/s:14SignalProtocol12SessionStateC13receiverChain3forAA08ReceiverF0CSgAA9PublicKeyV_tF"></a> <a name="//apple_ref/swift/Method/receiverChain(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC13receiverChainAA08ReceiverF0CSgAA9PublicKeyV3for_tF">receiverChain(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC13receiverChain3forAA08ReceiverF0CSgAA9PublicKeyV_tF">receiverChain(for:)</a> </code> </div> <div class="height-container"> @@ -555,7 +552,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">receiverChain</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeralKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">receiverChain</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeralKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">?</span></code></pre> </div> </div> @@ -588,9 +585,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC3addyAA13ReceiverChainC08receiverG0_tF"></a> + <a name="/s:14SignalProtocol12SessionStateC3add13receiverChainyAA08ReceiverG0C_tF"></a> <a name="//apple_ref/swift/Method/add(receiverChain:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC3addyAA13ReceiverChainC08receiverG0_tF">add(receiverChain:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC3add13receiverChainyAA08ReceiverG0C_tF">add(receiverChain:)</a> </code> </div> <div class="height-container"> @@ -605,7 +602,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">receiverChain</span><span class="p">:</span> <span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">receiverChain</span><span class="p">:</span> <span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">)</span></code></pre> </div> </div> @@ -634,9 +631,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV05chainH0_AA06PublicH0V3fortKF"></a> + <a name="/s:14SignalProtocol12SessionStateC3set8chainKey3foryAA012RatchetChainG0V_AA06PublicG0VtKF"></a> <a name="//apple_ref/swift/Method/set(chainKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV05chainH0_AA06PublicH0V3fortKF">set(chainKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC3set8chainKey3foryAA012RatchetChainG0V_AA06PublicG0VtKF">set(chainKey:for:)</a> </code> </div> <div class="height-container"> @@ -656,7 +653,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeralKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeralKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -697,9 +694,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC3setyAA18RatchetMessageKeysV07messageH0_AA9PublicKeyV3fortF"></a> + <a name="/s:14SignalProtocol12SessionStateC3set11messageKeys3foryAA014RatchetMessageG0V_AA9PublicKeyVtF"></a> <a name="//apple_ref/swift/Method/set(messageKeys:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC3setyAA18RatchetMessageKeysV07messageH0_AA9PublicKeyV3fortF">set(messageKeys:for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC3set11messageKeys3foryAA014RatchetMessageG0V_AA9PublicKeyVtF">set(messageKeys:for:)</a> </code> </div> <div class="height-container"> @@ -719,7 +716,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -760,9 +757,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC17removeMessageKeysAA07RatchetfG0VSgAA9PublicKeyV3for_s6UInt32V3andtF"></a> + <a name="/s:14SignalProtocol12SessionStateC17removeMessageKeys3for3andAA07RatchetfG0VSgAA9PublicKeyV_s6UInt32VtF"></a> <a name="//apple_ref/swift/Method/removeMessageKeys(for:and:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC17removeMessageKeysAA07RatchetfG0VSgAA9PublicKeyV3for_s6UInt32V3andtF">removeMessageKeys(for:and:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC17removeMessageKeys3for3andAA07RatchetfG0VSgAA9PublicKeyV_s6UInt32VtF">removeMessageKeys(for:and:)</a> </code> </div> <div class="height-container"> @@ -777,7 +774,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">removeMessageKeys</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">removeMessageKeys</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> </div> </div> @@ -822,9 +819,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC16receiverChainKeyAA07RatchetfG0VSgAA06PublicG0V3for_tF"></a> + <a name="/s:14SignalProtocol12SessionStateC16receiverChainKey3forAA07RatchetfG0VSgAA06PublicG0V_tF"></a> <a name="//apple_ref/swift/Method/receiverChainKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC16receiverChainKeyAA07RatchetfG0VSgAA06PublicG0V3for_tF">receiverChainKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC16receiverChainKey3forAA07RatchetfG0VSgAA06PublicG0V_tF">receiverChainKey(for:)</a> </code> </div> <div class="height-container"> @@ -839,7 +836,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">receiverChainKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">receiverChainKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -872,9 +869,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV08receivergH0_AA06PublicH0V3fortKF"></a> + <a name="/s:14SignalProtocol12SessionStateC3set16receiverChainKey3foryAA07RatchetgH0V_AA06PublicH0VtKF"></a> <a name="//apple_ref/swift/Method/set(receiverChainKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV08receivergH0_AA06PublicH0V3fortKF">set(receiverChainKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC3set16receiverChainKey3foryAA07RatchetgH0V_AA06PublicH0VtKF">set(receiverChainKey:for:)</a> </code> </div> <div class="height-container"> @@ -894,7 +891,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">receiverChainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">receiverChainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -935,9 +932,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC15aliceInitializeyAA7KeyPairV011ourIdentityG0_AF0i4BaseG0AA06PublicG0V05theirjG0AJ0m9SignedPreG0AJSg0m7OneTimeoG0AJ0m7RatchetG0tKF"></a> + <a name="/s:14SignalProtocol12SessionStateC15aliceInitialize14ourIdentityKey0g4BaseI005theirhI00k9SignedPreI00k7OneTimemI00k7RatchetI0yAA0I4PairV_AlA06PublicI0VA2NSgANtKF"></a> <a name="//apple_ref/swift/Method/aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC15aliceInitializeyAA7KeyPairV011ourIdentityG0_AF0i4BaseG0AA06PublicG0V05theirjG0AJ0m9SignedPreG0AJSg0m7OneTimeoG0AJ0m7RatchetG0tKF">aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC15aliceInitialize14ourIdentityKey0g4BaseI005theirhI00k9SignedPreI00k7OneTimemI00k7RatchetI0yAA0I4PairV_AlA06PublicI0VA2NSgANtKF">aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)</a> </code> </div> <div class="height-container"> @@ -957,13 +954,13 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">aliceInitialize</span><span class="p">(</span> - <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span><span class="p">,</span> - <span class="nv">ourBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> - <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">theirSignedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">theirOneTimePreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?,</span> - <span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">aliceInitialize</span><span class="p">(</span> + <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span><span class="p">,</span> + <span class="nv">ourBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> + <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">theirSignedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">theirOneTimePreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?,</span> + <span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -1052,9 +1049,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC13bobInitializeyAA7KeyPairV011ourIdentityG0_AF0i9SignedPreG0AFSg0i7OneTimelG0AF0i7RatchetG0AA06PublicG0V05theirjG0AM0q4BaseG0tKF"></a> + <a name="/s:14SignalProtocol12SessionStateC13bobInitialize14ourIdentityKey0g9SignedPreI00g7OneTimekI00g7RatchetI005theirhI00o4BaseI0yAA0I4PairV_A2LSgAlA06PublicI0VAOtKF"></a> <a name="//apple_ref/swift/Method/bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC13bobInitializeyAA7KeyPairV011ourIdentityG0_AF0i9SignedPreG0AFSg0i7OneTimelG0AF0i7RatchetG0AA06PublicG0V05theirjG0AM0q4BaseG0tKF">bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC13bobInitialize14ourIdentityKey0g9SignedPreI00g7OneTimekI00g7RatchetI005theirhI00o4BaseI0yAA0I4PairV_A2LSgAlA06PublicI0VAOtKF">bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)</a> </code> </div> <div class="height-container"> @@ -1074,13 +1071,13 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">bobInitialize</span><span class="p">(</span> - <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span><span class="p">,</span> - <span class="nv">ourSignedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> - <span class="nv">ourOneTimePreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">?,</span> - <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> - <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">theirBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">bobInitialize</span><span class="p">(</span> + <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span><span class="p">,</span> + <span class="nv">ourSignedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> + <span class="nv">ourOneTimePreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">?,</span> + <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> + <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">theirBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -1169,9 +1166,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC19symmetricInitializeyAA19SymmetricParametersV10parameters_tKF"></a> + <a name="/s:14SignalProtocol12SessionStateC19symmetricInitialize10parametersyAA19SymmetricParametersV_tKF"></a> <a name="//apple_ref/swift/Method/symmetricInitialize(parameters:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC19symmetricInitializeyAA19SymmetricParametersV10parameters_tKF">symmetricInitialize(parameters:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC19symmetricInitialize10parametersyAA19SymmetricParametersV_tKF">symmetricInitialize(parameters:)</a> </code> </div> <div class="height-container"> @@ -1191,7 +1188,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">symmetricInitialize</span><span class="p">(</span><span class="n">parameters</span> <span class="nv">params</span><span class="p">:</span> <span class="kt"><a href="../Structs/SymmetricParameters.html">SymmetricParameters</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">symmetricInitialize</span><span class="p">(</span><span class="n">parameters</span> <span class="nv">params</span><span class="p">:</span> <span class="kt"><a href="../Structs/SymmetricParameters.html">SymmetricParameters</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -1220,9 +1217,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LLAA14RatchetRootKeyV04rootS0_AA0q5ChainS0V05chainS0t10Foundation4DataV6secret_tKF"></a> + <a name="/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LL6secretAA14RatchetRootKeyV04rootT0_AA0r5ChainT0V05chainT0t10Foundation4DataV_tKF"></a> <a name="//apple_ref/swift/Method/calculateDerivedKeys(secret:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LLAA14RatchetRootKeyV04rootS0_AA0q5ChainS0V05chainS0t10Foundation4DataV6secret_tKF">calculateDerivedKeys(secret:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LL6secretAA14RatchetRootKeyV04rootT0_AA0r5ChainT0V05chainT0t10Foundation4DataV_tKF">calculateDerivedKeys(secret:)</a> </code> </div> <div class="height-container"> @@ -1237,7 +1234,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">calculateDerivedKeys</span><span class="p">(</span><span class="nv">secret</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">calculateDerivedKeys</span><span class="p">(</span><span class="nv">secret</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -1281,9 +1278,9 @@ <h3 class="section-name">Protocol Buffers</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vv"></a> + <a name="/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -1298,7 +1295,7 @@ <h3 class="section-name">Protocol Buffers</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -1308,9 +1305,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateCAcA0a1_C0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol12SessionStateC4fromAcA0a1_C0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateCAcA0a1_C0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC4fromAcA0a1_C0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -1330,7 +1327,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -1359,13 +1356,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol12SessionStateC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -1380,7 +1384,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionState</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionState</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionState</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionState</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -1427,8 +1431,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Classes/SignalError.html b/Documentation/Classes/SignalError.html index 6d89ba3..45e1564 100644 --- a/Documentation/Classes/SignalError.html +++ b/Documentation/Classes/SignalError.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalError</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SignalError</span><span class="p">:</span> <span class="kt">CustomStringConvertible</span><span class="p">,</span> <span class="kt">Error</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SignalError</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span><span class="p">,</span> <span class="kt">Error</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SignalError</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOv"></a> + <a name="/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOvp"></a> <a name="//apple_ref/swift/Property/type" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOv">type</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOvp">type</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SignalError</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalErrorType.html">SignalErrorType</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalErrorType.html">SignalErrorType</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC7messageSSSgv"></a> + <a name="/s:14SignalProtocol0A5ErrorC7messageSSSgvp"></a> <a name="//apple_ref/swift/Property/message" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC7messageSSSgv">message</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC7messageSSSgvp">message</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC5causeACSgv"></a> + <a name="/s:14SignalProtocol0A5ErrorC5causeACSgvp"></a> <a name="//apple_ref/swift/Property/cause" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC5causeACSgv">cause</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC5causeACSgvp">cause</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">?</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC8functionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC8functionSSvp"></a> <a name="//apple_ref/swift/Property/function" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC8functionSSv">function</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC8functionSSvp">function</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC4fileSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC4fileSSvp"></a> <a name="//apple_ref/swift/Property/file" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC4fileSSv">file</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC4fileSSvp">file</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorCAcA0aC4TypeO_SSSgACSg5causeSS4fileSS8functiontcfc"></a> + <a name="/s:14SignalProtocol0A5ErrorC__5cause4file8functionAcA0aC4TypeO_SSSgACSgS2Stcfc"></a> <a name="//apple_ref/swift/Method/init(_:_:cause:file:function:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorCAcA0aC4TypeO_SSSgACSg5causeSS4fileSS8functiontcfc">init(_:_:cause:file:function:)</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC__5cause4file8functionAcA0aC4TypeO_SSSgACSgS2Stcfc">init(_:_:cause:file:function:)</a> </code> </div> <div class="height-container"> @@ -393,11 +390,11 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalErrorType.html">SignalErrorType</a></span><span class="p">,</span> - <span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> - <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> - <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSv">file</a></span><span class="p">,</span> - <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSv">function</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalErrorType.html">SignalErrorType</a></span><span class="p">,</span> + <span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> + <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> + <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#file</span><span class="p">,</span> + <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#function</span><span class="p">)</span></code></pre> </div> </div> @@ -474,9 +471,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorCACSS_AC5causeSS4fileSS8functiontcfc"></a> + <a name="/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_ACS2Stcfc"></a> <a name="//apple_ref/swift/Method/init(_:cause:file:function:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorCACSS_AC5causeSS4fileSS8functiontcfc">init(_:cause:file:function:)</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_ACS2Stcfc">init(_:cause:file:function:)</a> </code> </div> <div class="height-container"> @@ -491,10 +488,10 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">,</span> - <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSv">file</a></span><span class="p">,</span> - <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSv">function</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">,</span> + <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#file</span><span class="p">,</span> + <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#function</span><span class="p">)</span></code></pre> </div> </div> @@ -559,9 +556,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorCACSS_s0C0_p5causeSS4fileSS8functiontcfc"></a> + <a name="/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_s0C0_pS2Stcfc"></a> <a name="//apple_ref/swift/Method/init(_:cause:file:function:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorCACSS_s0C0_p5causeSS4fileSS8functiontcfc">init(_:cause:file:function:)</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_s0C0_pS2Stcfc">init(_:cause:file:function:)</a> </code> </div> <div class="height-container"> @@ -576,10 +573,10 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="n">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">cause</span><span class="p">:</span> <span class="kt">Error</span><span class="p">,</span> - <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSv">file</a></span><span class="p">,</span> - <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSv">function</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">cause</span><span class="p">:</span> <span class="kt">Error</span><span class="p">,</span> + <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#file</span><span class="p">,</span> + <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#function</span><span class="p">)</span></code></pre> </div> </div> @@ -644,9 +641,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC11descriptionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC11descriptionSSvp"></a> <a name="//apple_ref/swift/Property/description" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC11descriptionSSv">description</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC11descriptionSSvp">description</a> </code> </div> <div class="height-container"> @@ -661,7 +658,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -671,9 +668,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC16shortDescriptionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC16shortDescriptionSSvp"></a> <a name="//apple_ref/swift/Property/shortDescription" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC16shortDescriptionSSv">shortDescription</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC16shortDescriptionSSvp">shortDescription</a> </code> </div> <div class="height-container"> @@ -688,7 +685,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">shortDescription</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">shortDescription</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -698,9 +695,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC15longDescriptionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp"></a> <a name="//apple_ref/swift/Property/longDescription" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC15longDescriptionSSv">longDescription</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp">longDescription</a> </code> </div> <div class="height-container"> @@ -715,7 +712,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">longDescription</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">longDescription</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -725,9 +722,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSvp"></a> <a name="//apple_ref/swift/Property/trace" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSv">trace</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSvp">trace</a> </code> </div> <div class="height-container"> @@ -735,14 +732,14 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The trace of the error which is used to build the <code><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSv">longDescription</a></code></p> + <p>The trace of the error which is used to build the <code><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp">longDescription</a></code></p> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">trace</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">trace</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -752,9 +749,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSvp"></a> <a name="//apple_ref/swift/Property/localizedDescription" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSv">localizedDescription</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSvp">localizedDescription</a> </code> </div> <div class="height-container"> @@ -769,7 +766,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">localizedDescription</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">localizedDescription</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -781,8 +778,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Enums.html b/Documentation/Enums.html index 01f242d..d6e1a7d 100644 --- a/Documentation/Enums.html +++ b/Documentation/Enums.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>Enums Reference</title> + <title>Enumerations Reference</title> <link rel="stylesheet" type="text/css" href="css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="css/highlight.css" /> <meta charset='utf-8'> @@ -10,7 +10,8 @@ </head> <body> - <a title="Enums Reference"></a> + <a name="//apple_ref/swift/Section/Enumerations" class="dashAnchor"></a> + <a title="Enumerations Reference"></a> <header> <div class="content-wrapper"> <p><a href="index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -21,7 +22,7 @@ <p id="breadcrumbs"> <a href="index.html">SignalProtocol Reference</a> <img id="carat" src="img/carat.png" /> - Enums Reference + Enumerations Reference </p> </div> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -224,8 +222,8 @@ <article class="main-content"> <section> <section class="section"> - <h1>Enums</h1> - <p>The following enums are available globally.</p> + <h1>Enumerations</h1> + <p>The following enumerations are available globally.</p> </section> <section class="section task-group-section"> @@ -252,7 +250,7 @@ <h1>Enums</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalErrorType</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalErrorType</span> <span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -266,9 +264,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO"></a> - <a name="//apple_ref/swift/Enum/CipherTextType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO">CipherTextType</a> + <a name="/s:14SignalProtocol0A16EncryptionSchemeO"></a> + <a name="//apple_ref/swift/Enum/SignalEncryptionScheme" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO">SignalEncryptionScheme</a> </code> </div> <div class="height-container"> @@ -276,15 +274,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The <code>CipherTextType</code> enum describes the different types of messages.</p> + <p>Specifies the type of algorithm to use for encryption and decryption.</p> - <a href="Enums/CipherTextType.html" class="slightly-smaller">See more</a> + <a href="Enums/SignalEncryptionScheme.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">CipherTextType</span><span class="p">:</span> <span class="kt">UInt8</span><span class="p">,</span> <span class="kt">CustomStringConvertible</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalEncryptionScheme</span></code></pre> </div> </div> @@ -298,9 +296,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A16EncryptionSchemeO"></a> - <a name="//apple_ref/swift/Enum/SignalEncryptionScheme" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO">SignalEncryptionScheme</a> + <a name="/s:14SignalProtocol14CipherTextTypeO"></a> + <a name="//apple_ref/swift/Enum/CipherTextType" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO">CipherTextType</a> </code> </div> <div class="height-container"> @@ -308,15 +306,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Specifies the type of algorithm to use for encryption and decryption.</p> + <p>The <code>CipherTextType</code> enum describes the different types of messages.</p> - <a href="Enums/SignalEncryptionScheme.html" class="slightly-smaller">See more</a> + <a href="Enums/CipherTextType.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalEncryptionScheme</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">CipherTextType</span> <span class="p">:</span> <span class="kt">UInt8</span><span class="p">,</span> <span class="kt">CustomStringConvertible</span></code></pre> </div> </div> @@ -328,8 +326,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Enums/CipherTextType.html b/Documentation/Enums/CipherTextType.html index f1cfe08..2ca0cbe 100644 --- a/Documentation/Enums/CipherTextType.html +++ b/Documentation/Enums/CipherTextType.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>CipherTextType Enum Reference</title> + <title>CipherTextType Enumeration Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Enum/CipherTextType" class="dashAnchor"></a> - <a title="CipherTextType Enum Reference"></a> + <a title="CipherTextType Enumeration Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - CipherTextType Enum Reference + CipherTextType Enumeration Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>CipherTextType</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">CipherTextType</span><span class="p">:</span> <span class="kt">UInt8</span><span class="p">,</span> <span class="kt">CustomStringConvertible</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">CipherTextType</span> <span class="p">:</span> <span class="kt">UInt8</span><span class="p">,</span> <span class="kt">CustomStringConvertible</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>CipherTextType</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO6signalA2CmF"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO6signalyA2CmF"></a> <a name="//apple_ref/swift/Element/signal" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO6signalA2CmF">signal</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO6signalyA2CmF">signal</a> </code> </div> <div class="height-container"> @@ -258,23 +255,19 @@ <h1>CipherTextType</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">signal</span> <span class="o">=</span> <span class="mi">2</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">signal</span> <span class="o">=</span> <span class="mi">2</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO6preKeyA2CmF"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO6preKeyyA2CmF"></a> <a name="//apple_ref/swift/Element/preKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO6preKeyA2CmF">preKey</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO6preKeyyA2CmF">preKey</a> </code> </div> <div class="height-container"> @@ -289,23 +282,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">preKey</span> <span class="o">=</span> <span class="mi">3</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">preKey</span> <span class="o">=</span> <span class="mi">3</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO9senderKeyA2CmF"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO9senderKeyyA2CmF"></a> <a name="//apple_ref/swift/Element/senderKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO9senderKeyA2CmF">senderKey</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO9senderKeyyA2CmF">senderKey</a> </code> </div> <div class="height-container"> @@ -320,23 +309,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">senderKey</span> <span class="o">=</span> <span class="mi">4</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">senderKey</span> <span class="o">=</span> <span class="mi">4</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionA2CmF"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionyA2CmF"></a> <a name="//apple_ref/swift/Element/senderKeyDistribution" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionA2CmF">senderKeyDistribution</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionyA2CmF">senderKeyDistribution</a> </code> </div> <div class="height-container"> @@ -351,23 +336,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">senderKeyDistribution</span> <span class="o">=</span> <span class="mi">5</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">senderKeyDistribution</span> <span class="o">=</span> <span class="mi">5</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO11descriptionSSv"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO11descriptionSSvp"></a> <a name="//apple_ref/swift/Property/description" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO11descriptionSSv">description</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO11descriptionSSvp">description</a> </code> </div> <div class="height-container"> @@ -382,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -392,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/data" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVv">data</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVvp">data</a> </code> </div> <div class="height-container"> @@ -409,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -419,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeOACSg10Foundation4DataV4from_tcfc"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO4fromACSg10Foundation4DataV_tcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeOACSg10Foundation4DataV4from_tcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO4fromACSg10Foundation4DataV_tcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -441,7 +422,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">?(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">?(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -472,8 +453,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Enums/SignalEncryptionScheme.html b/Documentation/Enums/SignalEncryptionScheme.html index 8565452..50b5656 100644 --- a/Documentation/Enums/SignalEncryptionScheme.html +++ b/Documentation/Enums/SignalEncryptionScheme.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalEncryptionScheme Enum Reference</title> + <title>SignalEncryptionScheme Enumeration Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Enum/SignalEncryptionScheme" class="dashAnchor"></a> - <a title="SignalEncryptionScheme Enum Reference"></a> + <a title="SignalEncryptionScheme Enumeration Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalEncryptionScheme Enum Reference + SignalEncryptionScheme Enumeration Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalEncryptionScheme</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalEncryptionScheme</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalEncryptionScheme</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SignalEncryptionScheme</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5A2CmF"></a> + <a name="/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5yA2CmF"></a> <a name="//apple_ref/swift/Element/AES_CBCwithPKCS5" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5A2CmF">AES_CBCwithPKCS5</a> + <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5yA2CmF">AES_CBCwithPKCS5</a> </code> </div> <div class="height-container"> @@ -258,23 +255,19 @@ <h1>SignalEncryptionScheme</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="kt">AES_CBCwithPKCS5</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="kt">AES_CBCwithPKCS5</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingA2CmF"></a> + <a name="/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingyA2CmF"></a> <a name="//apple_ref/swift/Element/AES_CTRnoPadding" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingA2CmF">AES_CTRnoPadding</a> + <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingyA2CmF">AES_CTRnoPadding</a> </code> </div> <div class="height-container"> @@ -289,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="kt">AES_CTRnoPadding</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="kt">AES_CTRnoPadding</span></code></pre> </div> </div> @@ -301,8 +294,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Enums/SignalErrorType.html b/Documentation/Enums/SignalErrorType.html index 415970d..9f43db0 100644 --- a/Documentation/Enums/SignalErrorType.html +++ b/Documentation/Enums/SignalErrorType.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalErrorType Enum Reference</title> + <title>SignalErrorType Enumeration Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Enum/SignalErrorType" class="dashAnchor"></a> - <a title="SignalErrorType Enum Reference"></a> + <a title="SignalErrorType Enumeration Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalErrorType Enum Reference + SignalErrorType Enumeration Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalErrorType</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalErrorType</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalErrorType</span> <span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SignalErrorType</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO7unknownA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO7unknownyA2CmF"></a> <a name="//apple_ref/swift/Element/unknown" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO7unknownA2CmF">unknown</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO7unknownyA2CmF">unknown</a> </code> </div> <div class="height-container"> @@ -258,23 +255,19 @@ <h1>SignalErrorType</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">unknown</span> <span class="o">=</span> <span class="s">"Unknown"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">unknown</span> <span class="o">=</span> <span class="s">"Unknown"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO05curveC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO05curveC0yA2CmF"></a> <a name="//apple_ref/swift/Element/curveError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO05curveC0A2CmF">curveError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO05curveC0yA2CmF">curveError</a> </code> </div> <div class="height-container"> @@ -289,23 +282,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">curveError</span> <span class="o">=</span> <span class="s">"Curve25519"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">curveError</span> <span class="o">=</span> <span class="s">"Curve25519"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO07storageC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO07storageC0yA2CmF"></a> <a name="//apple_ref/swift/Element/storageError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO07storageC0A2CmF">storageError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO07storageC0yA2CmF">storageError</a> </code> </div> <div class="height-container"> @@ -320,23 +309,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">storageError</span> <span class="o">=</span> <span class="s">"Storage"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">storageError</span> <span class="o">=</span> <span class="s">"Storage"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageyA2CmF"></a> <a name="//apple_ref/swift/Element/duplicateMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageA2CmF">duplicateMessage</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageyA2CmF">duplicateMessage</a> </code> </div> <div class="height-container"> @@ -351,23 +336,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">duplicateMessage</span> <span class="o">=</span> <span class="s">"Duplicate message"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">duplicateMessage</span> <span class="o">=</span> <span class="s">"Duplicate message"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO07invalidD0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO07invalidD0yA2CmF"></a> <a name="//apple_ref/swift/Element/invalidType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO07invalidD0A2CmF">invalidType</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO07invalidD0yA2CmF">invalidType</a> </code> </div> <div class="height-container"> @@ -382,23 +363,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidType</span> <span class="o">=</span> <span class="s">"Invalid type"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidType</span> <span class="o">=</span> <span class="s">"Invalid type"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO10invalidKeyA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO10invalidKeyyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO10invalidKeyA2CmF">invalidKey</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO10invalidKeyyA2CmF">invalidKey</a> </code> </div> <div class="height-container"> @@ -413,23 +390,46 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidKey</span> <span class="o">=</span> <span class="s">"Invalid key"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidKey</span> <span class="o">=</span> <span class="s">"Invalid key"</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol0A9ErrorTypeO9invalidIVyA2CmF"></a> + <a name="//apple_ref/swift/Element/invalidIV" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9invalidIVyA2CmF">invalidIV</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>The initialization vector has the wrong length</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidIV</span> <span class="o">=</span> <span class="s">"Invalid iv"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO9invalidIdA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO9invalidIdyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9invalidIdA2CmF">invalidId</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9invalidIdyA2CmF">invalidId</a> </code> </div> <div class="height-container"> @@ -444,23 +444,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidId</span> <span class="o">=</span> <span class="s">"Invalid Id"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidId</span> <span class="o">=</span> <span class="s">"Invalid Id"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO10invalidMacA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO10invalidMacyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidMac" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO10invalidMacA2CmF">invalidMac</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO10invalidMacyA2CmF">invalidMac</a> </code> </div> <div class="height-container"> @@ -475,23 +471,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidMac</span> <span class="o">=</span> <span class="s">"Invalid mac"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidMac</span> <span class="o">=</span> <span class="s">"Invalid mac"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO14invalidMessageA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO14invalidMessageyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO14invalidMessageA2CmF">invalidMessage</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO14invalidMessageyA2CmF">invalidMessage</a> </code> </div> <div class="height-container"> @@ -506,23 +498,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidMessage</span> <span class="o">=</span> <span class="s">"Invalid message"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidMessage</span> <span class="o">=</span> <span class="s">"Invalid message"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO13invalidLengthA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO13invalidLengthyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13invalidLengthA2CmF">invalidLength</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13invalidLengthyA2CmF">invalidLength</a> </code> </div> <div class="height-container"> @@ -537,23 +525,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidLength</span> <span class="o">=</span> <span class="s">"Invalid length"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidLength</span> <span class="o">=</span> <span class="s">"Invalid length"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO13legacyMessageA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO13legacyMessageyA2CmF"></a> <a name="//apple_ref/swift/Element/legacyMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13legacyMessageA2CmF">legacyMessage</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13legacyMessageyA2CmF">legacyMessage</a> </code> </div> <div class="height-container"> @@ -568,23 +552,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">legacyMessage</span> <span class="o">=</span> <span class="s">"Legacy message"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">legacyMessage</span> <span class="o">=</span> <span class="s">"Legacy message"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO9noSessionA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO9noSessionyA2CmF"></a> <a name="//apple_ref/swift/Element/noSession" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9noSessionA2CmF">noSession</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9noSessionyA2CmF">noSession</a> </code> </div> <div class="height-container"> @@ -599,23 +579,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">noSession</span> <span class="o">=</span> <span class="s">"No session"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">noSession</span> <span class="o">=</span> <span class="s">"No session"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityyA2CmF"></a> <a name="//apple_ref/swift/Element/untrustedIdentity" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityA2CmF">untrustedIdentity</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityyA2CmF">untrustedIdentity</a> </code> </div> <div class="height-container"> @@ -630,23 +606,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">untrustedIdentity</span> <span class="o">=</span> <span class="s">"Untrusted identity"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">untrustedIdentity</span> <span class="o">=</span> <span class="s">"Untrusted identity"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidSignature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureA2CmF">invalidSignature</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureyA2CmF">invalidSignature</a> </code> </div> <div class="height-container"> @@ -661,23 +633,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidSignature</span> <span class="o">=</span> <span class="s">"Invalid signature"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidSignature</span> <span class="o">=</span> <span class="s">"Invalid signature"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidProtoBuf" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufA2CmF">invalidProtoBuf</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufyA2CmF">invalidProtoBuf</a> </code> </div> <div class="height-container"> @@ -692,23 +660,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidProtoBuf</span> <span class="o">=</span> <span class="s">"Invalid protoBuf"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidProtoBuf</span> <span class="o">=</span> <span class="s">"Invalid protoBuf"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchyA2CmF"></a> <a name="//apple_ref/swift/Element/fPIdentityMismatch" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchA2CmF">fPIdentityMismatch</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchyA2CmF">fPIdentityMismatch</a> </code> </div> <div class="height-container"> @@ -723,23 +687,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">fPIdentityMismatch</span> <span class="o">=</span> <span class="s">"Fingerprint identity mismatch"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">fPIdentityMismatch</span> <span class="o">=</span> <span class="s">"Fingerprint identity mismatch"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO16noCryptoProviderA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO16noCryptoProvideryA2CmF"></a> <a name="//apple_ref/swift/Element/noCryptoProvider" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16noCryptoProviderA2CmF">noCryptoProvider</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16noCryptoProvideryA2CmF">noCryptoProvider</a> </code> </div> <div class="height-container"> @@ -754,23 +714,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">noCryptoProvider</span> <span class="o">=</span> <span class="s">"No crpyto provider"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">noCryptoProvider</span> <span class="o">=</span> <span class="s">"No crpyto provider"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesyA2CmF"></a> <a name="//apple_ref/swift/Element/noRandomBytes" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesA2CmF">noRandomBytes</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesyA2CmF">noRandomBytes</a> </code> </div> <div class="height-container"> @@ -785,23 +741,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">noRandomBytes</span> <span class="o">=</span> <span class="s">"No random bytes"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">noRandomBytes</span> <span class="o">=</span> <span class="s">"No random bytes"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO04hmacC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO04hmacC0yA2CmF"></a> <a name="//apple_ref/swift/Element/hmacError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO04hmacC0A2CmF">hmacError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO04hmacC0yA2CmF">hmacError</a> </code> </div> <div class="height-container"> @@ -816,23 +768,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">hmacError</span> <span class="o">=</span> <span class="s">"HMAC error"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">hmacError</span> <span class="o">=</span> <span class="s">"HMAC error"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO06digestC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO06digestC0yA2CmF"></a> <a name="//apple_ref/swift/Element/digestError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO06digestC0A2CmF">digestError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO06digestC0yA2CmF">digestError</a> </code> </div> <div class="height-container"> @@ -847,23 +795,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">digestError</span> <span class="o">=</span> <span class="s">"Digest error"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">digestError</span> <span class="o">=</span> <span class="s">"Digest error"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO010encryptionC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO010encryptionC0yA2CmF"></a> <a name="//apple_ref/swift/Element/encryptionError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO010encryptionC0A2CmF">encryptionError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO010encryptionC0yA2CmF">encryptionError</a> </code> </div> <div class="height-container"> @@ -878,23 +822,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">encryptionError</span> <span class="o">=</span> <span class="s">"Encryption error"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">encryptionError</span> <span class="o">=</span> <span class="s">"Encryption error"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO010decryptionC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO010decryptionC0yA2CmF"></a> <a name="//apple_ref/swift/Element/decryptionError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO010decryptionC0A2CmF">decryptionError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO010decryptionC0yA2CmF">decryptionError</a> </code> </div> <div class="height-container"> @@ -909,7 +849,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">decryptionError</span> <span class="o">=</span> <span class="s">"Decryption error"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">decryptionError</span> <span class="o">=</span> <span class="s">"Decryption error"</span></code></pre> </div> </div> @@ -921,8 +861,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Functions.html b/Documentation/Functions.html index f48d6ac..968503b 100644 --- a/Documentation/Functions.html +++ b/Documentation/Functions.html @@ -10,6 +10,7 @@ </head> <body> + <a name="//apple_ref/swift/Section/Functions" class="dashAnchor"></a> <a title="Functions Reference"></a> <header> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -234,9 +232,9 @@ <h1>Functions</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF"></a> + <a name="/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF"></a> <a name="//apple_ref/swift/Function/getLogicalKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </code> </div> <div class="height-container"> @@ -252,7 +250,7 @@ <h1>Functions</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getLogicalKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">keyList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="Structs/PublicKey.html">PublicKey</a></span><span class="p">])</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getLogicalKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">keyList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="Structs/PublicKey.html">PublicKey</a></span><span class="p">])</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -285,9 +283,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF"></a> + <a name="/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF"></a> <a name="//apple_ref/swift/Function/getFingerprint(identity:stableIdentifier:iterations:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a class="token" href="#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </code> </div> <div class="height-container"> @@ -307,7 +305,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getFingerprint</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">stableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getFingerprint</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">stableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -354,8 +352,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Protocols.html b/Documentation/Protocols.html index 5cbe39b..dc745eb 100644 --- a/Documentation/Protocols.html +++ b/Documentation/Protocols.html @@ -10,6 +10,7 @@ </head> <body> + <a name="//apple_ref/swift/Section/Protocols" class="dashAnchor"></a> <a title="Protocols Reference"></a> <header> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -234,9 +232,9 @@ <h1>Protocols</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP"></a> - <a name="//apple_ref/swift/Protocol/SessionStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP">SessionStore</a> + <a name="/s:14SignalProtocol0A14CryptoProviderP"></a> + <a name="//apple_ref/swift/Protocol/SignalCryptoProvider" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP">SignalCryptoProvider</a> </code> </div> <div class="height-container"> @@ -244,17 +242,17 @@ <h1>Protocols</h1> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Implement the <code>SessionStore</code> protocol to handle the session records of the -Signal Protocol. The records should be stored in a secure database and be treated as -unspecified data blobs.</p> + <p>The <code>SignalCryptoProvider</code> protocol can be implemented to provide a custom +implementation of the cryptographic functions. Set the crypto provider +by setting the static <code>provider</code> variable of the SignalCrypto class</p> - <a href="Protocols/SessionStore.html" class="slightly-smaller">See more</a> + <a href="Protocols/SignalCryptoProvider.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SessionStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignalCryptoProvider</span></code></pre> </div> </div> @@ -268,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP"></a> - <a name="//apple_ref/swift/Protocol/KeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP">KeyStore</a> + <a name="/s:14SignalProtocol13GroupKeyStoreP"></a> + <a name="//apple_ref/swift/Protocol/GroupKeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13GroupKeyStoreP">GroupKeyStore</a> </code> </div> <div class="height-container"> @@ -278,15 +276,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Provide all local storage delegates.</p> + <p>A group key store stores the encryption keys for group messaging</p> - <a href="Protocols/KeyStore.html" class="slightly-smaller">See more</a> + <a href="Protocols/GroupKeyStore.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">KeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">GroupKeyStore</span> <span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -300,9 +298,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStoreP"></a> - <a name="//apple_ref/swift/Protocol/SenderKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP">SenderKeyStore</a> + <a name="/s:14SignalProtocol16IdentityKeyStoreP"></a> + <a name="//apple_ref/swift/Protocol/IdentityKeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP">IdentityKeyStore</a> </code> </div> <div class="height-container"> @@ -310,17 +308,49 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Implement the <code>SenderKeyStore</code> protocol to handle the sender key storage of the + <p>Implement the <code>IdentityKeyStore</code> protocol to handle the identity keys of the Signal Protocol. The keys should be stored in a secure database and be treated as unspecified data blobs.</p> - <a href="Protocols/SenderKeyStore.html" class="slightly-smaller">See more</a> + <a href="Protocols/IdentityKeyStore.html" class="slightly-smaller">See more</a> + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">IdentityKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + </ul> + </div> + <div class="task-group"> + <ul> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol8KeyStoreP"></a> + <a name="//apple_ref/swift/Protocol/KeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP">KeyStore</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Provide all local storage delegates.</p> + + <a href="Protocols/KeyStore.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SenderKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">KeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -354,7 +384,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">PreKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">PreKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -368,9 +398,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP"></a> - <a name="//apple_ref/swift/Protocol/IdentityKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP">IdentityKeyStore</a> + <a name="/s:14SignalProtocol14SenderKeyStoreP"></a> + <a name="//apple_ref/swift/Protocol/SenderKeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP">SenderKeyStore</a> </code> </div> <div class="height-container"> @@ -378,17 +408,17 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Implement the <code>IdentityKeyStore</code> protocol to handle the identity keys of the + <p>Implement the <code>SenderKeyStore</code> protocol to handle the sender key storage of the Signal Protocol. The keys should be stored in a secure database and be treated as unspecified data blobs.</p> - <a href="Protocols/IdentityKeyStore.html" class="slightly-smaller">See more</a> + <a href="Protocols/SenderKeyStore.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">IdentityKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SenderKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -402,9 +432,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP"></a> - <a name="//apple_ref/swift/Protocol/SignalCryptoProvider" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP">SignalCryptoProvider</a> + <a name="/s:14SignalProtocol12SessionStoreP"></a> + <a name="//apple_ref/swift/Protocol/SessionStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP">SessionStore</a> </code> </div> <div class="height-container"> @@ -412,17 +442,17 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The <code>SignalCryptoProvider</code> protocol can be implemented to provide a custom -implementation of the cryptographic functions. Set the crypto provider -by setting the static <code>provider</code> variable of the SignalCrypto class</p> + <p>Implement the <code>SessionStore</code> protocol to handle the session records of the +Signal Protocol. The records should be stored in a secure database and be treated as +unspecified data blobs.</p> - <a href="Protocols/SignalCryptoProvider.html" class="slightly-smaller">See more</a> + <a href="Protocols/SessionStore.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignalCryptoProvider</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SessionStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -456,7 +486,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignedPreKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignedPreKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -468,8 +498,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Protocols/GroupKeyStore.html b/Documentation/Protocols/GroupKeyStore.html new file mode 100644 index 0000000..d12a4dd --- /dev/null +++ b/Documentation/Protocols/GroupKeyStore.html @@ -0,0 +1,331 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>GroupKeyStore Protocol Reference</title> + <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> + <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> + <meta charset='utf-8'> + <script src="../js/jquery.min.js" defer></script> + <script src="../js/jazzy.js" defer></script> + + </head> + <body> + <a name="//apple_ref/swift/Protocol/GroupKeyStore" class="dashAnchor"></a> + <a title="GroupKeyStore Protocol Reference"></a> + <header> + <div class="content-wrapper"> + <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> + <p class="header-right"><a href="https://github.com/christophhagen/LibSignalProtocolSwift"><img src="../img/gh.png"/>View on GitHub</a></p> + </div> + </header> + <div class="content-wrapper"> + <p id="breadcrumbs"> + <a href="../index.html">SignalProtocol Reference</a> + <img id="carat" src="../img/carat.png" /> + GroupKeyStore Protocol Reference + </p> + </div> + <div class="content-wrapper"> + <nav class="sidebar"> + <ul class="nav-groups"> + <li class="nav-group-name"> + <a href="../Classes.html">Classes</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Classes/ReceiverChain.html">ReceiverChain</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SenderKeyRecord.html">SenderKeyRecord</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SenderKeyState.html">SenderKeyState</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SessionRecord.html">SessionRecord</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SessionState.html">SessionState</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SignalError.html">SignalError</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Enums.html">Enumerations</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Enums/CipherTextType.html">CipherTextType</a> + </li> + <li class="nav-group-task"> + <a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a> + </li> + <li class="nav-group-task"> + <a href="../Enums/SignalErrorType.html">SignalErrorType</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Functions.html">Functions</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + </li> + <li class="nav-group-task"> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Protocols.html">Protocols</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/KeyStore.html">KeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/PreKeyStore.html">PreKeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/SenderKeyStore.html">SenderKeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/SessionStore.html">SessionStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/SignedPreKeyStore.html">SignedPreKeyStore</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Structs.html">Structures</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/DeviceConsistencyMessage.html">DeviceConsistencyMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/DisplayableFingerprint.html">DisplayableFingerprint</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/Fingerprint.html">Fingerprint</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/GroupCipher.html">GroupCipher</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/HKDF.html">HKDF</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/KeyPair.html">KeyPair</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/PendingPreKey.html">PendingPreKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/PrivateKey.html">PrivateKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/PublicKey.html">PublicKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/RatchetChainKey.html">RatchetChainKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/RatchetRootKey.html">RatchetRootKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/ScannableFingerprint.html">ScannableFingerprint</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderChain.html">SenderChain</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderChainKey.html">SenderChainKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderKeyMessage.html">SenderKeyMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderMessageKey.html">SenderMessageKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionBuilder.html">SessionBuilder</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionCipher.html">SessionCipher</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionPreKey.html">SessionPreKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SignalCrypto.html">SignalCrypto</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SignalMessage.html">SignalMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Typealiases.html">Type Aliases</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> + </li> + </ul> + </li> + </ul> + </nav> + <article class="main-content"> + <section> + <section class="section"> + <h1>GroupKeyStore</h1> + <div class="declaration"> + <div class="language"> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">GroupKeyStore</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span></code></pre> + + </div> + </div> + <p>A group key store stores the encryption keys for group messaging</p> + + </section> + <section class="section task-group-section"> + <div class="task-group"> + <ul> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol13GroupKeyStoreP0C7AddressQa"></a> + <a name="//apple_ref/swift/Alias/GroupAddress" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13GroupKeyStoreP0C7AddressQa">GroupAddress</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>The type that distinguishes different groups and devices/users</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">GroupAddress</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span> <span class="k">where</span> <span class="k">Self</span><span class="o">.</span><span class="kt">GroupAddress</span> <span class="o">==</span> <span class="k">Self</span><span class="o">.</span><span class="kt"><a href="../Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa">SenderKeyStoreType</a></span><span class="o">.</span><span class="kt">Address</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa"></a> + <a name="//apple_ref/swift/Alias/SenderKeyStoreType" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa">SenderKeyStoreType</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>The type of the sender key store</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">SenderKeyStoreType</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html">SenderKeyStore</a></span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol13GroupKeyStoreP06senderdE006SenderdE4TypeQzvp"></a> + <a name="//apple_ref/swift/Property/senderKeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13GroupKeyStoreP06senderdE006SenderdE4TypeQzvp">senderKeyStore</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>The Sender Key store that stores the records for the sender key module</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">senderKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa">SenderKeyStoreType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + </ul> + </div> + </section> + </section> + <section id="footer"> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> + </section> + </article> + </div> + </body> +</div> +</html> diff --git a/Documentation/Protocols/IdentityKeyStore.html b/Documentation/Protocols/IdentityKeyStore.html index 44889df..5e723ff 100644 --- a/Documentation/Protocols/IdentityKeyStore.html +++ b/Documentation/Protocols/IdentityKeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>IdentityKeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">IdentityKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">IdentityKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>IdentityKeyStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP7Address"></a> + <a name="/s:14SignalProtocol16IdentityKeyStoreP7AddressQa"></a> <a name="//apple_ref/swift/Alias/Address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>IdentityKeyStore</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">Address</span><span class="p">:</span> <span class="kt">Hashable</span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Address</span> <span class="p">:</span> <span class="kt">Hashable</span></code></pre> </div> </div> @@ -281,7 +278,8 @@ <h4>Declaration</h4> <div class="pointer"></div> <div class="abstract"> <p>Return the identity key pair. This key should be generated once at -install time by calling <code><a href="../Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV23generateIdentityKeyPair10Foundation4DataVyKFZ">SignalCrypto.generateIdentityKeyPair()</a></code>.</p> +install time by calling <code><a href="../Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV23generateIdentityKeyPair10Foundation4DataVyKFZ">SignalCrypto.generateIdentityKeyPair()</a></code>, +or given to the constructor.</p> <div class="aside aside-note"> <p class="aside-title">Note</p> An appropriate error should be thrown, if no identity key exists @@ -298,7 +296,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">getIdentityKeyData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">getIdentityKeyData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -312,60 +310,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataV08identitydH0_tKF"></a> - <a name="//apple_ref/swift/Method/store(identityKeyData:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataV08identitydH0_tKF">store(identityKeyData:)</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>Save the identity key pair.</p> -<div class="aside aside-throws"> - <p class="aside-title">Throws</p> - <code><a href="../Classes/SignalError.html">SignalError</a></code> of type <code>storageError</code>, if the data could not be saved - -</div> - - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">identityKeyData</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> - - </div> - </div> - <div> - <h4>Parameters</h4> - <table class="graybox"> - <tbody> - <tr> - <td> - <code> - <em>identityKeyData</em> - </code> - </td> - <td> - <div> - <p>The data to store</p> - </div> - </td> - </tr> - </tbody> - </table> - </div> - </section> - </div> - </li> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP8identity10Foundation4DataVSg7AddressQz3for_tKF"></a> + <a name="/s:14SignalProtocol16IdentityKeyStoreP8identity3for10Foundation4DataVSg7AddressQz_tKF"></a> <a name="//apple_ref/swift/Method/identity(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP8identity10Foundation4DataVSg7AddressQz3for_tKF">identity(for:)</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP8identity3for10Foundation4DataVSg7AddressQz_tKF">identity(for:)</a> </code> </div> <div class="height-container"> @@ -390,7 +337,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">identity</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">identity</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> </div> </div> @@ -423,9 +370,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataVSg8identity_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol16IdentityKeyStoreP5store8identity3fory10Foundation4DataVSg_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/store(identity:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataVSg8identity_7AddressQz3fortKF">store(identity:for:)</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP5store8identity3fory10Foundation4DataVSg_7AddressQztKF">store(identity:for:)</a> </code> <span class="declaration-note"> Default implementation @@ -470,7 +417,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">?,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">?,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -548,7 +495,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">getIdentityKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">getIdentityKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -562,9 +509,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStorePAAE5storeyAA0D4PairV08identityD0_tKF"></a> - <a name="//apple_ref/swift/Method/store(identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE5storeyAA0D4PairV08identityD0_tKF">store(identityKey:)</a> + <a name="/s:14SignalProtocol16IdentityKeyStorePAAE09getPubliccD010Foundation4DataVyKF"></a> + <a name="//apple_ref/swift/Method/getPublicIdentityKey()" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE09getPubliccD010Foundation4DataVyKF">getPublicIdentityKey()</a> </code> <span class="declaration-note"> Extension method @@ -575,14 +522,15 @@ <h4>Return Value</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Save the identity key pair.</p> + <p>Return the public identity key. This key should be generated once at +install time by calling <code>KeyStore.generateIdentityKeyPair()</code>.</p> <div class="aside aside-note"> <p class="aside-title">Note</p> Possible errors: </div> -<li><code>invalidProtBuf</code> if key could not be converted to data</li> -<li><code>storageError</code>, if the data could not be saved</li> +<li><code>storageError</code> if the key data could not be accessed</li> +<li><code>invalidProtBuf</code> if the data is corrupt</li> <div class="aside aside-throws"> <p class="aside-title">Throws</p> <code><a href="../Classes/SignalError.html">SignalError</a></code> errors @@ -594,28 +542,13 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">getPublicIdentityKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> <div> - <h4>Parameters</h4> - <table class="graybox"> - <tbody> - <tr> - <td> - <code> - <em>identityKeyData</em> - </code> - </td> - <td> - <div> - <p>The data to store</p> - </div> - </td> - </tr> - </tbody> - </table> + <h4>Return Value</h4> + <p>The public identity key data</p> </div> </section> </div> @@ -655,7 +588,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">getIdentityKeyPublicData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">getIdentityKeyPublicData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -669,9 +602,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSb10Foundation4DataV8identity_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSb10Foundation4DataV_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/isTrusted(identity:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSb10Foundation4DataV8identity_7AddressQz3fortKF">isTrusted(identity:for:)</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSb10Foundation4DataV_7AddressQztKF">isTrusted(identity:for:)</a> </code> <span class="declaration-note"> Extension method @@ -698,7 +631,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">isTrusted</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">isTrusted</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -743,9 +676,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSbAA06PublicD0V8identity_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSbAA06PublicD0V_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/isTrusted(identity:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSbAA06PublicD0V8identity_7AddressQz3fortKF">isTrusted(identity:for:)</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSbAA06PublicD0V_7AddressQztKF">isTrusted(identity:for:)</a> </code> <span class="declaration-note"> Extension method @@ -767,7 +700,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">isTrusted</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">isTrusted</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -814,8 +747,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Protocols/KeyStore.html b/Documentation/Protocols/KeyStore.html index c54ffd5..a3462bb 100644 --- a/Documentation/Protocols/KeyStore.html +++ b/Documentation/Protocols/KeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>KeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">KeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">KeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -248,9 +245,9 @@ <h3 class="section-name">Associated types</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP7Address"></a> + <a name="/s:14SignalProtocol8KeyStoreP7AddressQa"></a> <a name="//apple_ref/swift/Alias/Address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP7Address">Address</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a> </code> </div> <div class="height-container"> @@ -265,7 +262,7 @@ <h3 class="section-name">Associated types</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">Address</span><span class="p">:</span> <span class="kt">CustomStringConvertible</span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Address</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span> <span class="k">where</span> <span class="k">Self</span><span class="o">.</span><span class="kt">Address</span> <span class="o">==</span> <span class="k">Self</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa">IdentityKeyStoreType</a></span><span class="o">.</span><span class="kt">Address</span></code></pre> </div> </div> @@ -275,36 +272,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP12GroupAddress"></a> - <a name="//apple_ref/swift/Alias/GroupAddress" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP12GroupAddress">GroupAddress</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>The type that distinguishes different groups and devices/users</p> - - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">GroupAddress</span><span class="p">:</span> <span class="kt">CustomStringConvertible</span></code></pre> - - </div> - </div> - </section> - </div> - </li> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol8KeyStoreP08IdentitycD4Type"></a> + <a name="/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa"></a> <a name="//apple_ref/swift/Alias/IdentityKeyStoreType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP08IdentitycD4Type">IdentityKeyStoreType</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa">IdentityKeyStoreType</a> </code> </div> <div class="height-container"> @@ -319,7 +289,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">IdentityKeyStoreType</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a></span> <span class="k">where</span> <span class="kt">IdentityKeyStoreType</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span> <span class="o">==</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">IdentityKeyStoreType</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a></span> <span class="k">where</span> <span class="k">Self</span><span class="o">.</span><span class="kt">IdentityKeyStoreType</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a></span> <span class="o">==</span> <span class="k">Self</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa">SessionStoreType</a></span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a></span></code></pre> </div> </div> @@ -329,36 +299,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP06SendercD4Type"></a> - <a name="//apple_ref/swift/Alias/SenderKeyStoreType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP06SendercD4Type">SenderKeyStoreType</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>The type of the sender key store</p> - - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">SenderKeyStoreType</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html">SenderKeyStore</a></span> <span class="k">where</span> <span class="kt">SenderKeyStoreType</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span> <span class="o">==</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP12GroupAddress">GroupAddress</a></span></code></pre> - - </div> - </div> - </section> - </div> - </li> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol8KeyStoreP07SessionD4Type"></a> + <a name="/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa"></a> <a name="//apple_ref/swift/Alias/SessionStoreType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP07SessionD4Type">SessionStoreType</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa">SessionStoreType</a> </code> </div> <div class="height-container"> @@ -373,7 +316,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">SessionStoreType</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html">SessionStore</a></span> <span class="k">where</span> <span class="kt">SessionStoreType</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span> <span class="o">==</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">SessionStoreType</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html">SessionStore</a></span></code></pre> </div> </div> @@ -394,9 +337,9 @@ <h3 class="section-name">variables</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzv"></a> + <a name="/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzvp"></a> <a name="//apple_ref/swift/Property/identityKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzv">identityKeyStore</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzvp">identityKeyStore</a> </code> </div> <div class="height-container"> @@ -411,7 +354,7 @@ <h3 class="section-name">variables</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">identityKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4Type">IdentityKeyStoreType</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">identityKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa">IdentityKeyStoreType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -421,9 +364,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pv"></a> + <a name="/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pvp"></a> <a name="//apple_ref/swift/Property/preKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pv">preKeyStore</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pvp">preKeyStore</a> </code> </div> <div class="height-container"> @@ -438,34 +381,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">preKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/PreKeyStore.html">PreKeyStore</a></span></code></pre> - - </div> - </div> - </section> - </div> - </li> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol8KeyStoreP06sendercD006SendercD4TypeQzv"></a> - <a name="//apple_ref/swift/Property/senderKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP06sendercD006SendercD4TypeQzv">senderKeyStore</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>The Sender Key store that stores the records for the sender key module</p> - - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">senderKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP06SendercD4Type">SenderKeyStoreType</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">preKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/PreKeyStore.html">PreKeyStore</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -475,9 +391,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzv"></a> + <a name="/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzvp"></a> <a name="//apple_ref/swift/Property/sessionStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzv">sessionStore</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzvp">sessionStore</a> </code> </div> <div class="height-container"> @@ -492,7 +408,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">sessionStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4Type">SessionStoreType</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">sessionStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa">SessionStoreType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -502,9 +418,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pv"></a> + <a name="/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pv">signedPreKeyStore</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pvp">signedPreKeyStore</a> </code> </div> <div class="height-container"> @@ -519,7 +435,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignedPreKeyStore.html">SignedPreKeyStore</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignedPreKeyStore.html">SignedPreKeyStore</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -533,9 +449,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStorePAAE014createIdentityC010Foundation4DataVyKF"></a> - <a name="//apple_ref/swift/Method/createIdentityKey()" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE014createIdentityC010Foundation4DataVyKF">createIdentityKey()</a> + <a name="/s:14SignalProtocol8KeyStorePAAE021signatureWithIdentityC07message10Foundation4DataVAH_tKF"></a> + <a name="//apple_ref/swift/Method/signatureWithIdentityKey(message:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE021signatureWithIdentityC07message10Foundation4DataVAH_tKF">signatureWithIdentityKey(message:)</a> </code> <span class="declaration-note"> Extension method @@ -546,16 +462,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Create a new identity key pair and store it.</p> + <p>Sign a message with the identity key.</p> <div class="aside aside-note"> <p class="aside-title">Note</p> Possible errors: </div> -<li><code>noRandomBytes</code> if the crypto provider can’t provide random bytes.</li> -<li><code>curveError</code> if no public key could be created from the random private key.</li> -<li><code>invalidProtoBuf</code> if the key pair could no be serialized</li> -<li><code>storageError</code> if the data could not be saved</li> +<li><code>storageError</code> if the key data could not be accessed</li> +<li><code>invalidProtBuf</code> if the data is corrupt</li> +<li><code>invalidSignature</code> if the message could not be signed.</li> +<li><code>noRandomBytes</code> if the crypto provider could not provide random bytes</li> <div class="aside aside-throws"> <p class="aside-title">Throws</p> <code><a href="../Classes/SignalError.html">SignalError</a></code> errors @@ -567,7 +483,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createIdentityKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">signatureWithIdentityKey</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -581,9 +497,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStorePAAE18createSignedPrekey10Foundation4DataVs6UInt32V2id_s6UInt64V9timestamptKF"></a> - <a name="//apple_ref/swift/Method/createSignedPrekey(id:timestamp:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE18createSignedPrekey10Foundation4DataVs6UInt32V2id_s6UInt64V9timestamptKF">createSignedPrekey(id:timestamp:)</a> + <a name="/s:14SignalProtocol8KeyStorePAAE18updateSignedPrekey9timestamp10Foundation4DataVs6UInt64V_tKF"></a> + <a name="//apple_ref/swift/Method/updateSignedPrekey(timestamp:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE18updateSignedPrekey9timestamp10Foundation4DataVs6UInt64V_tKF">updateSignedPrekey(timestamp:)</a> </code> <span class="declaration-note"> Extension method @@ -617,7 +533,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createSignedPrekey</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span> <span class="o">=</span> <span class="kt">UInt64</span><span class="p">(</span><span class="kt">Date</span><span class="p">()</span><span class="o">.</span><span class="n">timeIntervalSince1970</span><span class="p">))</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">updateSignedPrekey</span><span class="p">(</span><span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span> <span class="o">=</span> <span class="kt">UInt64</span><span class="p">(</span><span class="kt">Date</span><span class="p">()</span><span class="o">.</span><span class="n">timeIntervalSince1970</span><span class="p">))</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -625,18 +541,6 @@ <h4>Declaration</h4> <h4>Parameters</h4> <table class="graybox"> <tbody> - <tr> - <td> - <code> - <em>id</em> - </code> - </td> - <td> - <div> - <p>The id of the signed pre key</p> - </div> - </td> - </tr> <tr> <td> <code> @@ -662,9 +566,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStorePAAE13createPreKeysSay10Foundation4DataVGs6UInt32V5start_Si5counttKF"></a> - <a name="//apple_ref/swift/Method/createPreKeys(start:count:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE13createPreKeysSay10Foundation4DataVGs6UInt32V5start_Si5counttKF">createPreKeys(start:count:)</a> + <a name="/s:14SignalProtocol8KeyStorePAAE13createPreKeys5countSay10Foundation4DataVGSi_tKF"></a> + <a name="//apple_ref/swift/Method/createPreKeys(count:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE13createPreKeys5countSay10Foundation4DataVGSi_tKF">createPreKeys(count:)</a> </code> <span class="declaration-note"> Extension method @@ -696,7 +600,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createPreKeys</span><span class="p">(</span><span class="nv">start</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt">Data</span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createPreKeys</span><span class="p">(</span><span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt">Data</span><span class="p">]</span></code></pre> </div> </div> @@ -704,18 +608,6 @@ <h4>Declaration</h4> <h4>Parameters</h4> <table class="graybox"> <tbody> - <tr> - <td> - <code> - <em>start</em> - </code> - </td> - <td> - <div> - <p>the starting pre key ID, inclusive.</p> - </div> - </td> - </tr> <tr> <td> <code> @@ -741,9 +633,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStorePAAE11fingerprintAA11FingerprintV7AddressQz3for_AH05localG0tKF"></a> + <a name="/s:14SignalProtocol8KeyStorePAAE11fingerprint3for12localAddressAA11FingerprintV0H0Qz_AJtKF"></a> <a name="//apple_ref/swift/Method/fingerprint(for:localAddress:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE11fingerprintAA11FingerprintV7AddressQz3for_AH05localG0tKF">fingerprint(for:localAddress:)</a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE11fingerprint3for12localAddressAA11FingerprintV0H0Qz_AJtKF">fingerprint(for:localAddress:)</a> </code> <span class="declaration-note"> Extension method @@ -779,7 +671,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">fingerprint</span><span class="p">(</span><span class="k">for</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span><span class="p">,</span> <span class="nv">localAddress</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/Fingerprint.html">Fingerprint</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">fingerprint</span><span class="p">(</span><span class="k">for</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a></span><span class="p">,</span> <span class="nv">localAddress</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/Fingerprint.html">Fingerprint</a></span></code></pre> </div> </div> @@ -821,13 +713,79 @@ <h4>Return Value</h4> </section> </div> </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol8KeyStorePAAE4sign7message10Foundation4DataVAH_tKF"></a> + <a name="//apple_ref/swift/Method/sign(message:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE4sign7message10Foundation4DataVAH_tKF">sign(message:)</a> + </code> + <span class="declaration-note"> + Extension method + </span> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Sign a message with the identity key.</p> +<div class="aside aside-throws"> + <p class="aside-title">Throws</p> + SignalError errors + +</div> +<div class="aside aside-note"> + <p class="aside-title">Note</p> + +</div> +<li>invalidSignature, if the message could not be signed.</li> +<li>noRandomBytes, if the crypto provider could not provide random bytes.</li> +<li>storageError if the key data could not be accessed</li> +<li>invalidProtBuf if the data is corrupt</li> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + + </div> + </div> + <div> + <h4>Parameters</h4> + <table class="graybox"> + <tbody> + <tr> + <td> + <code> + <em>message</em> + </code> + </td> + <td> + <div> + <p>The message to sign</p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <div> + <h4>Return Value</h4> + <p>The signature of the message, <code>KeyPair.signatureLength</code> bytes</p> + </div> + </section> + </div> + </li> </ul> </div> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Protocols/PreKeyStore.html b/Documentation/Protocols/PreKeyStore.html index 1884fcb..181a2d6 100644 --- a/Documentation/Protocols/PreKeyStore.html +++ b/Documentation/Protocols/PreKeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PreKeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">PreKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">PreKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>PreKeyStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP03preD010Foundation4DataVs6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP03preD03for10Foundation4DataVs6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/preKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP03preD010Foundation4DataVs6UInt32V3for_tKF">preKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP03preD03for10Foundation4DataVs6UInt32V_tKF">preKey(for:)</a> </code> <span class="declaration-note"> Default implementation @@ -285,7 +282,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">preKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">preKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -318,9 +315,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP5storey10Foundation4DataV03preD0_s6UInt32V3fortKF"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP5store03preD03fory10Foundation4DataV_s6UInt32VtKF"></a> <a name="//apple_ref/swift/Method/store(preKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP5storey10Foundation4DataV03preD0_s6UInt32V3fortKF">store(preKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP5store03preD03fory10Foundation4DataV_s6UInt32VtKF">store(preKey:for:)</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -381,9 +378,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP08containscD0Sbs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP08containscD03forSbs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/containsPreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP08containscD0Sbs6UInt32V3for_tF">containsPreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP08containscD03forSbs6UInt32V_tF">containsPreKey(for:)</a> </code> </div> <div class="height-container"> @@ -398,7 +395,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">containsPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">containsPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -431,9 +428,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP06removecD0ys6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP06removecD03forys6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/removePreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP06removecD0ys6UInt32V3for_tKF">removePreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP06removecD03forys6UInt32V_tKF">removePreKey(for:)</a> </code> </div> <div class="height-container"> @@ -453,7 +450,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">removePreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">removePreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -486,9 +483,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vv"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/lastId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vv">lastId</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vvp">lastId</a> </code> </div> <div class="height-container"> @@ -503,7 +500,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">lastId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">lastId</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre> </div> </div> @@ -517,9 +514,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStorePAAE5storeyAA07SessioncD0V03preD0_tKF"></a> + <a name="/s:14SignalProtocol11PreKeyStorePAAE5store03preD0yAA07SessioncD0V_tKF"></a> <a name="//apple_ref/swift/Method/store(preKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStorePAAE5storeyAA07SessioncD0V03preD0_tKF">store(preKey:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStorePAAE5store03preD0yAA07SessioncD0V_tKF">store(preKey:)</a> </code> <span class="declaration-note"> Extension method @@ -549,7 +546,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKey.html">SessionPreKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKey.html">SessionPreKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -580,8 +577,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Protocols/SenderKeyStore.html b/Documentation/Protocols/SenderKeyStore.html index c427104..fb0c359 100644 --- a/Documentation/Protocols/SenderKeyStore.html +++ b/Documentation/Protocols/SenderKeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SenderKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SenderKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SenderKeyStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStoreP7Address"></a> + <a name="/s:14SignalProtocol14SenderKeyStoreP7AddressQa"></a> <a name="//apple_ref/swift/Alias/Address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP7Address">Address</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP7AddressQa">Address</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>SenderKeyStore</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">Address</span><span class="p">:</span> <span class="kt">Hashable</span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Address</span> <span class="p">:</span> <span class="kt">Hashable</span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStoreP06senderD010Foundation4DataVSg7AddressQz3for_tF"></a> + <a name="/s:14SignalProtocol14SenderKeyStoreP06senderD03for10Foundation4DataVSg7AddressQz_tF"></a> <a name="//apple_ref/swift/Method/senderKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP06senderD010Foundation4DataVSg7AddressQz3for_tF">senderKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP06senderD03for10Foundation4DataVSg7AddressQz_tF">senderKey(for:)</a> </code> <span class="declaration-note"> Default implementation @@ -300,7 +297,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">senderKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">senderKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> </div> </div> @@ -333,9 +330,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStoreP5storey10Foundation4DataV06senderD0_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol14SenderKeyStoreP5store06senderD03fory10Foundation4DataV_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/store(senderKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP5storey10Foundation4DataV06senderD0_7AddressQz3fortKF">store(senderKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP5store06senderD03fory10Foundation4DataV_7AddressQztKF">store(senderKey:for:)</a> </code> <span class="declaration-note"> Default implementation @@ -368,7 +365,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">senderKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">senderKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -411,8 +408,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Protocols/SessionStore.html b/Documentation/Protocols/SessionStore.html index 34fa485..dc2a3af 100644 --- a/Documentation/Protocols/SessionStore.html +++ b/Documentation/Protocols/SessionStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SessionStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SessionStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SessionStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP7Address"></a> + <a name="/s:14SignalProtocol12SessionStoreP7AddressQa"></a> <a name="//apple_ref/swift/Alias/Address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP7Address">Address</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>SessionStore</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">Address</span><span class="p">:</span> <span class="kt">Hashable</span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Address</span> <span class="p">:</span> <span class="kt">Hashable</span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP04loadC010Foundation4DataVSg7AddressQz3for_tKF"></a> + <a name="/s:14SignalProtocol12SessionStoreP04loadC03for10Foundation4DataVSg7AddressQz_tKF"></a> <a name="//apple_ref/swift/Method/loadSession(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP04loadC010Foundation4DataVSg7AddressQz3for_tKF">loadSession(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP04loadC03for10Foundation4DataVSg7AddressQz_tKF">loadSession(for:)</a> </code> <span class="declaration-note"> Default implementation @@ -305,7 +302,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">loadSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">loadSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> </div> </div> @@ -338,9 +335,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP5storey10Foundation4DataV7session_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol12SessionStoreP5store7session3fory10Foundation4DataV_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/store(session:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP5storey10Foundation4DataV7session_7AddressQz3fortKF">store(session:for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP5store7session3fory10Foundation4DataV_7AddressQztKF">store(session:for:)</a> </code> <span class="declaration-note"> Default implementation @@ -380,7 +377,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">session</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">session</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -425,9 +422,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP08containsC0Sb7AddressQz3for_tF"></a> + <a name="/s:14SignalProtocol12SessionStoreP08containsC03forSb7AddressQz_tF"></a> <a name="//apple_ref/swift/Method/containsSession(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP08containsC0Sb7AddressQz3for_tF">containsSession(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP08containsC03forSb7AddressQz_tF">containsSession(for:)</a> </code> </div> <div class="height-container"> @@ -442,7 +439,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">containsSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address">Address</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">containsSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -475,9 +472,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP06deleteC0y7AddressQz3for_tKF"></a> + <a name="/s:14SignalProtocol12SessionStoreP06deleteC03fory7AddressQz_tKF"></a> <a name="//apple_ref/swift/Method/deleteSession(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP06deleteC0y7AddressQz3for_tKF">deleteSession(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP06deleteC03fory7AddressQz_tKF">deleteSession(for:)</a> </code> </div> <div class="height-container"> @@ -497,7 +494,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">deleteSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">deleteSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -532,8 +529,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Protocols/SignalCryptoProvider.html b/Documentation/Protocols/SignalCryptoProvider.html index 2c5a8ac..68634c3 100644 --- a/Documentation/Protocols/SignalCryptoProvider.html +++ b/Documentation/Protocols/SignalCryptoProvider.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalCryptoProvider</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignalCryptoProvider</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignalCryptoProvider</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SignalCryptoProvider</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP6random10Foundation4DataVSi5bytes_tKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP6random5bytes10Foundation4DataVSi_tKF"></a> <a name="//apple_ref/swift/Method/random(bytes:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP6random10Foundation4DataVSi5bytes_tKF">random(bytes:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP6random5bytes10Foundation4DataVSi_tKF">random(bytes:)</a> </code> </div> <div class="height-container"> @@ -265,7 +262,7 @@ <h1>SignalCryptoProvider</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -298,9 +295,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP10hmacSHA25610Foundation4DataVAG3for_AG4withtKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP10hmacSHA2563for4with10Foundation4DataVAI_AItKF"></a> <a name="//apple_ref/swift/Method/hmacSHA256(for:with:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP10hmacSHA25610Foundation4DataVAG3for_AG4withtKF">hmacSHA256(for:with:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP10hmacSHA2563for4with10Foundation4DataVAI_AItKF">hmacSHA256(for:with:)</a> </code> </div> <div class="height-container"> @@ -321,7 +318,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -354,9 +351,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP6sha51210Foundation4DataVAG3for_tKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP6sha5123for10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/sha512(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP6sha51210Foundation4DataVAG3for_tKF">sha512(for:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP6sha5123for10Foundation4DataVAH_tKF">sha512(for:)</a> </code> </div> <div class="height-container"> @@ -376,7 +373,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -409,9 +406,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF"></a> <a name="//apple_ref/swift/Method/encrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF">encrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF">encrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -431,7 +428,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -459,7 +456,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The encryption type to use, see <code>SignalEncryptionScheme</code></p> + <p>The encryption type to use, see <code><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></code></p> </div> </td> </tr> @@ -500,9 +497,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF"></a> <a name="//apple_ref/swift/Method/decrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF">decrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF">decrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -522,7 +519,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -550,7 +547,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The encryption type to use, see <code>SignalEncryptionScheme</code></p> + <p>The encryption type to use, see <code><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></code></p> </div> </td> </tr> @@ -593,8 +590,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Protocols/SignedPreKeyStore.html b/Documentation/Protocols/SignedPreKeyStore.html index 618ce7c..9795630 100644 --- a/Documentation/Protocols/SignedPreKeyStore.html +++ b/Documentation/Protocols/SignedPreKeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignedPreKeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignedPreKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignedPreKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SignedPreKeyStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP06signeddE010Foundation4DataVs6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP06signeddE03for10Foundation4DataVs6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/signedPreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP06signeddE010Foundation4DataVs6UInt32V3for_tKF">signedPreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP06signeddE03for10Foundation4DataVs6UInt32V_tKF">signedPreKey(for:)</a> </code> <span class="declaration-note"> Default implementation @@ -285,7 +282,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">signedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">signedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -318,9 +315,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP5storey10Foundation4DataV06signeddE0_s6UInt32V3fortKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP5store06signeddE03fory10Foundation4DataV_s6UInt32VtKF"></a> <a name="//apple_ref/swift/Method/store(signedPreKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP5storey10Foundation4DataV06signeddE0_s6UInt32V3fortKF">store(signedPreKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP5store06signeddE03fory10Foundation4DataV_s6UInt32VtKF">store(signedPreKey:for:)</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -381,9 +378,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP08containscdE0Sbs6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP08containscdE03forSbs6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/containsSignedPreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP08containscdE0Sbs6UInt32V3for_tKF">containsSignedPreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP08containscdE03forSbs6UInt32V_tKF">containsSignedPreKey(for:)</a> </code> </div> <div class="height-container"> @@ -403,7 +400,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">containsSignedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">containsSignedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -436,9 +433,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP06removecdE0ys6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP06removecdE03forys6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/removeSignedPreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP06removecdE0ys6UInt32V3for_tKF">removeSignedPreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP06removecdE03forys6UInt32V_tKF">removeSignedPreKey(for:)</a> </code> </div> <div class="height-container"> @@ -458,7 +455,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">removeSignedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">removeSignedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -509,7 +506,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">allIds</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt">UInt32</span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">allIds</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt">UInt32</span><span class="p">]</span></code></pre> </div> </div> @@ -523,9 +520,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vv"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/lastId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vv">lastId</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vvp">lastId</a> </code> </div> <div class="height-container"> @@ -540,7 +537,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">lastId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">lastId</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre> </div> </div> @@ -554,9 +551,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStorePAAE5storeyAA07SessioncdE0V06signeddE0_tKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStorePAAE5store06signeddE0yAA07SessioncdE0V_tKF"></a> <a name="//apple_ref/swift/Method/store(signedPreKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStorePAAE5storeyAA07SessioncdE0V06signeddE0_tKF">store(signedPreKey:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStorePAAE5store06signeddE0yAA07SessioncdE0V_tKF">store(signedPreKey:)</a> </code> <span class="declaration-note"> Extension method @@ -586,7 +583,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -617,8 +614,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs.html b/Documentation/Structs.html index 3babc5b..b0ca282 100644 --- a/Documentation/Structs.html +++ b/Documentation/Structs.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>Structs Reference</title> + <title>Structures Reference</title> <link rel="stylesheet" type="text/css" href="css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="css/highlight.css" /> <meta charset='utf-8'> @@ -10,7 +10,8 @@ </head> <body> - <a title="Structs Reference"></a> + <a name="//apple_ref/swift/Section/Structures" class="dashAnchor"></a> + <a title="Structures Reference"></a> <header> <div class="content-wrapper"> <p><a href="index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -21,7 +22,7 @@ <p id="breadcrumbs"> <a href="index.html">SignalProtocol Reference</a> <img id="carat" src="img/carat.png" /> - Structs Reference + Structures Reference </p> </div> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -224,8 +222,8 @@ <article class="main-content"> <section> <section class="section"> - <h1>Structs</h1> - <p>The following structs are available globally.</p> + <h1>Structures</h1> + <p>The following structures are available globally.</p> </section> <section class="section task-group-section"> @@ -234,9 +232,9 @@ <h1>Structs</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV"></a> - <a name="//apple_ref/swift/Struct/SignalCrypto" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV">SignalCrypto</a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V"></a> + <a name="//apple_ref/swift/Struct/DeviceConsistencyCommitmentV0" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V">DeviceConsistencyCommitmentV0</a> </code> </div> <div class="height-container"> @@ -244,19 +242,17 @@ <h1>Structs</h1> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The <code>SignalCrypto</code> struct exposes all necessary cryptocraphic functions to the protocol. -By default CommonCrypto is used to provide these functions, but a custom provider can be -implemented as well. -Implement a provider that conforms to the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol and set the <code> -</code>SignalCrypto.provider` variable to customise the implementation.</p> + <p>Create commitments that are hashes of the identity keys of different devices. +These can be used to ensure that all identities are consistent across multiple +devices.</p> - <a href="Structs/SignalCrypto.html" class="slightly-smaller">See more</a> + <a href="Structs/DeviceConsistencyCommitmentV0.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCrypto</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyCommitmentV0</span></code></pre> </div> </div> @@ -270,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV"></a> - <a name="//apple_ref/swift/Struct/DisplayableFingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV">DisplayableFingerprint</a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV"></a> + <a name="//apple_ref/swift/Struct/DeviceConsistencyMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV">DeviceConsistencyMessage</a> </code> </div> <div class="height-container"> @@ -280,15 +276,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A Fingerprint to verify the keys specifically for displaying to the user</p> + <p>Device consistency messages can be sent between multiple devices to verify that the +identity keys and are consistent across devices.</p> - <a href="Structs/DisplayableFingerprint.html" class="slightly-smaller">See more</a> + <a href="Structs/DeviceConsistencyMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">DisplayableFingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyMessage</span></code></pre> </div> </div> @@ -302,9 +299,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV"></a> - <a name="//apple_ref/swift/Struct/HKDF" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV">HKDF</a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV"></a> + <a name="//apple_ref/swift/Struct/DeviceConsistencySignature" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV">DeviceConsistencySignature</a> </code> </div> <div class="height-container"> @@ -312,15 +309,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The Key derivation function used for the Ratchet.</p> + <p>A signature used for device consistency checks</p> - <a href="Structs/HKDF.html" class="slightly-smaller">See more</a> + <a href="Structs/DeviceConsistencySignature.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">HKDF</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencySignature</span></code></pre> </div> </div> @@ -334,9 +331,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV"></a> - <a name="//apple_ref/swift/Struct/DeviceConsistencySignature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV">DeviceConsistencySignature</a> + <a name="/s:14SignalProtocol7KeyPairV"></a> + <a name="//apple_ref/swift/Struct/KeyPair" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV">KeyPair</a> </code> </div> <div class="height-container"> @@ -344,15 +341,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A signature used for device consistency checks</p> + <p>A pair of public and private key for elliptic curve cryptopgraphy</p> - <a href="Structs/DeviceConsistencySignature.html" class="slightly-smaller">See more</a> + <a href="Structs/KeyPair.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencySignature</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">KeyPair</span></code></pre> </div> </div> @@ -366,9 +363,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV"></a> - <a name="//apple_ref/swift/Struct/SenderKeyMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV">SenderKeyMessage</a> + <a name="/s:14SignalProtocol10PrivateKeyV"></a> + <a name="//apple_ref/swift/Struct/PrivateKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV">PrivateKey</a> </code> </div> <div class="height-container"> @@ -376,15 +373,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A sender key message is used to send an encrypted message in an existing group session.</p> + <p>The private part of an elliptic curve key pair. +The key has a length of <code>KeyPair.keyLength</code> byte.</p> - <a href="Structs/SenderKeyMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/PrivateKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PrivateKey</span></code></pre> </div> </div> @@ -398,9 +396,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV"></a> - <a name="//apple_ref/swift/Struct/SessionPreKeyBundle" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV">SessionPreKeyBundle</a> + <a name="/s:14SignalProtocol9PublicKeyV"></a> + <a name="//apple_ref/swift/Struct/PublicKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV">PublicKey</a> </code> </div> <div class="height-container"> @@ -408,15 +406,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Pre key bundles are used to establish new sessions.</p> + <p>The public part of an elliptic curve key pair. +The key has a length of <code>KeyPair.keyLength</code> byte.</p> - <a href="Structs/SessionPreKeyBundle.html" class="slightly-smaller">See more</a> + <a href="Structs/PublicKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyBundle</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PublicKey</span></code></pre> </div> </div> @@ -430,9 +429,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV"></a> - <a name="//apple_ref/swift/Struct/SessionSignedPreKeyPublic" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV">SessionSignedPreKeyPublic</a> + <a name="/s:14SignalProtocol11GroupCipherV"></a> + <a name="//apple_ref/swift/Struct/GroupCipher" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV">GroupCipher</a> </code> </div> <div class="height-container"> @@ -440,17 +439,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A public signed pre key is used as part of a session bundle to establish a new session. -The public part of the key pair is signed with the identity key of the creator -to provide authentication.</p> + <p>Use a <code>GroupCipher</code> to encrypt and decrypt group messages for already +existing sessions.</p> - <a href="Structs/SessionSignedPreKeyPublic.html" class="slightly-smaller">See more</a> + <a href="Structs/GroupCipher.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionSignedPreKeyPublic</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">GroupCipher</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="Protocols/GroupKeyStore.html">GroupKeyStore</a></span></code></pre> </div> </div> @@ -485,7 +483,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionCipher</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionCipher</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -499,41 +497,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV"></a> - <a name="//apple_ref/swift/Struct/SenderChainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV">SenderChainKey</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>A key in the sender chain.</p> - - <a href="Structs/SenderChainKey.html" class="slightly-smaller">See more</a> - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderChainKey</span></code></pre> - - </div> - </div> - </section> - </div> - </li> - </ul> - </div> - <div class="task-group"> - <ul> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV"></a> - <a name="//apple_ref/swift/Struct/SessionSignedPreKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV">SessionSignedPreKey</a> + <a name="/s:14SignalProtocol0A12CommonCryptoV"></a> + <a name="//apple_ref/swift/Struct/SignalCommonCrypto" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV">SignalCommonCrypto</a> </code> </div> <div class="height-container"> @@ -541,17 +507,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A signed pre key is used as part of a session bundle to establish a new session. -The public part of the key pair is signed with the identity key of the creator -to provide authentication.</p> + <p>Implementation of the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol using +CommonCrypto.</p> - <a href="Structs/SessionSignedPreKey.html" class="slightly-smaller">See more</a> + <a href="Structs/SignalCommonCrypto.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionSignedPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCommonCrypto</span> <span class="p">:</span> <span class="kt"><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> </div> </div> @@ -565,9 +530,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV"></a> - <a name="//apple_ref/swift/Struct/Fingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV">Fingerprint</a> + <a name="/s:14SignalProtocol0A6CryptoV"></a> + <a name="//apple_ref/swift/Struct/SignalCrypto" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV">SignalCrypto</a> </code> </div> <div class="height-container"> @@ -575,16 +540,19 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A fingerprint can be used to ensure that the identities of a communication channel -match, and to detect MITM attacks.</p> + <p>The <code>SignalCrypto</code> struct exposes all necessary cryptocraphic functions to the protocol. +By default CommonCrypto is used to provide these functions, but a custom provider can be +implemented as well. +Implement a provider that conforms to the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol and set the <code> +</code>SignalCrypto.provider` variable to customise the implementation.</p> - <a href="Structs/Fingerprint.html" class="slightly-smaller">See more</a> + <a href="Structs/SignalCrypto.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Fingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCrypto</span></code></pre> </div> </div> @@ -598,9 +566,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV"></a> - <a name="//apple_ref/swift/Struct/SymmetricParameters" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV">SymmetricParameters</a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV"></a> + <a name="//apple_ref/swift/Struct/DisplayableFingerprint" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV">DisplayableFingerprint</a> </code> </div> <div class="height-container"> @@ -608,15 +576,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>All parameters needed to establish a session</p> + <p>A Fingerprint to verify the keys specifically for displaying to the user</p> - <a href="Structs/SymmetricParameters.html" class="slightly-smaller">See more</a> + <a href="Structs/DisplayableFingerprint.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SymmetricParameters</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">DisplayableFingerprint</span></code></pre> </div> </div> @@ -630,9 +598,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV"></a> - <a name="//apple_ref/swift/Struct/KeyPair" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV">KeyPair</a> + <a name="/s:14SignalProtocol11FingerprintV"></a> + <a name="//apple_ref/swift/Struct/Fingerprint" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV">Fingerprint</a> </code> </div> <div class="height-container"> @@ -640,15 +608,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A pair of public and private key for elliptic curve cryptopgraphy</p> + <p>A fingerprint can be used to ensure that the identities of a communication channel +match, and to detect MITM attacks.</p> - <a href="Structs/KeyPair.html" class="slightly-smaller">See more</a> + <a href="Structs/Fingerprint.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">KeyPair</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Fingerprint</span></code></pre> </div> </div> @@ -662,9 +631,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7AddressV"></a> - <a name="//apple_ref/swift/Struct/SignalAddress" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7AddressV">SignalAddress</a> + <a name="/s:14SignalProtocol20ScannableFingerprintV"></a> + <a name="//apple_ref/swift/Struct/ScannableFingerprint" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV">ScannableFingerprint</a> </code> </div> <div class="height-container"> @@ -672,16 +641,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A <code>SignalAddress</code> identifies a single device of a Signal user, with a user -<code>identifier</code> (such as a phone number), and the <code>deviceId</code> which specifies the device</p> + <p>A fingerprint optimised to be scanned through e.g. a QR Code</p> - <a href="Structs/SignalAddress.html" class="slightly-smaller">See more</a> + <a href="Structs/ScannableFingerprint.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalAddress</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">ScannableFingerprint</span></code></pre> </div> </div> @@ -695,9 +663,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV"></a> - <a name="//apple_ref/swift/Struct/PublicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV">PublicKey</a> + <a name="/s:14SignalProtocol17CipherTextMessageV"></a> + <a name="//apple_ref/swift/Struct/CipherTextMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV">CipherTextMessage</a> </code> </div> <div class="height-container"> @@ -705,16 +673,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The public part of an elliptic curve key pair. -The key has a length of <code>KeyPair.keyLength</code> byte.</p> + <p>A <code>CipherTextMessage</code> encapsulates an encrypted message and the type-</p> - <a href="Structs/PublicKey.html" class="slightly-smaller">See more</a> + <a href="Structs/CipherTextMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PublicKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">CipherTextMessage</span></code></pre> </div> </div> @@ -728,9 +695,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV"></a> - <a name="//apple_ref/swift/Struct/RatchetChainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV">RatchetChainKey</a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV"></a> + <a name="//apple_ref/swift/Struct/PreKeySignalMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV">PreKeySignalMessage</a> </code> </div> <div class="height-container"> @@ -738,15 +705,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A chain key for the ratchet.</p> + <p>A <code>PreKeySignalMessage</code> can be used to establish a new session.</p> - <a href="Structs/RatchetChainKey.html" class="slightly-smaller">See more</a> + <a href="Structs/PreKeySignalMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PreKeySignalMessage</span></code></pre> </div> </div> @@ -760,9 +727,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageV"></a> - <a name="//apple_ref/swift/Struct/CipherTextMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV">CipherTextMessage</a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV"></a> + <a name="//apple_ref/swift/Struct/SenderKeyDistributionMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV">SenderKeyDistributionMessage</a> </code> </div> <div class="height-container"> @@ -770,15 +737,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A <code>CipherTextMessage</code> encapsulates an encrypted message and the type-</p> + <p><code>SenderKeyDistributionMessage</code>s are used to establish group sessions.</p> - <a href="Structs/CipherTextMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/SenderKeyDistributionMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">CipherTextMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyDistributionMessage</span></code></pre> </div> </div> @@ -792,9 +759,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V"></a> - <a name="//apple_ref/swift/Struct/DeviceConsistencyCommitmentV0" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V">DeviceConsistencyCommitmentV0</a> + <a name="/s:14SignalProtocol16SenderKeyMessageV"></a> + <a name="//apple_ref/swift/Struct/SenderKeyMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV">SenderKeyMessage</a> </code> </div> <div class="height-container"> @@ -802,17 +769,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Create commitments that are hashes of the identity keys of different devices. -These can be used to ensure that all identities are consistent across multiple -devices.</p> + <p>A sender key message is used to send an encrypted message in an existing group session.</p> - <a href="Structs/DeviceConsistencyCommitmentV0.html" class="slightly-smaller">See more</a> + <a href="Structs/SenderKeyMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyCommitmentV0</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyMessage</span></code></pre> </div> </div> @@ -826,9 +791,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV"></a> - <a name="//apple_ref/swift/Struct/GroupCipher" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV">GroupCipher</a> + <a name="/s:14SignalProtocol0A7MessageV"></a> + <a name="//apple_ref/swift/Struct/SignalMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV">SignalMessage</a> </code> </div> <div class="height-container"> @@ -836,16 +801,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Use a <code>GroupCipher</code> to encrypt and decrypt group messages for already -existing sessions.</p> + <p>A <code>SignalMessage</code> is used to send an encrypted message in an established session.</p> - <a href="Structs/GroupCipher.html" class="slightly-smaller">See more</a> + <a href="Structs/SignalMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">GroupCipher</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalMessage</span></code></pre> </div> </div> @@ -859,9 +823,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV"></a> - <a name="//apple_ref/swift/Struct/SenderChain" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV">SenderChain</a> + <a name="/s:14SignalProtocol4HKDFV"></a> + <a name="//apple_ref/swift/Struct/HKDF" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol4HKDFV">HKDF</a> </code> </div> <div class="height-container"> @@ -869,15 +833,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The sender chain of a ratchet used to encrypt messages for sending.</p> + <p>The Key derivation function used for the Ratchet.</p> - <a href="Structs/SenderChain.html" class="slightly-smaller">See more</a> + <a href="Structs/HKDF.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderChain</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">HKDF</span></code></pre> </div> </div> @@ -891,9 +855,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageV"></a> - <a name="//apple_ref/swift/Struct/DeviceConsistencyMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV">DeviceConsistencyMessage</a> + <a name="/s:14SignalProtocol15RatchetChainKeyV"></a> + <a name="//apple_ref/swift/Struct/RatchetChainKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV">RatchetChainKey</a> </code> </div> <div class="height-container"> @@ -901,16 +865,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Device consistency messages can be sent between multiple devices to verify that the -identity keys and are consistent across devices.</p> + <p>A chain key for the ratchet.</p> - <a href="Structs/DeviceConsistencyMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/RatchetChainKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetChainKey</span></code></pre> </div> </div> @@ -924,9 +887,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV"></a> - <a name="//apple_ref/swift/Struct/SignalCommonCrypto" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV">SignalCommonCrypto</a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV"></a> + <a name="//apple_ref/swift/Struct/RatchetMessageKeys" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV">RatchetMessageKeys</a> </code> </div> <div class="height-container"> @@ -934,16 +897,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Implementation of the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol using -CommonCrypto.</p> + <p>The keys needed to encrypt/decrypt a message</p> - <a href="Structs/SignalCommonCrypto.html" class="slightly-smaller">See more</a> + <a href="Structs/RatchetMessageKeys.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCommonCrypto</span><span class="p">:</span> <span class="kt"><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetMessageKeys</span></code></pre> </div> </div> @@ -957,9 +919,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV"></a> - <a name="//apple_ref/swift/Struct/SessionPreKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV">SessionPreKey</a> + <a name="/s:14SignalProtocol14RatchetRootKeyV"></a> + <a name="//apple_ref/swift/Struct/RatchetRootKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV">RatchetRootKey</a> </code> </div> <div class="height-container"> @@ -967,16 +929,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A pre key used to esatblish a session. A unique pre key is used for -each new session.</p> + <p>A root key is within a ratchet to derive new sender and receiver chain keys.</p> - <a href="Structs/SessionPreKey.html" class="slightly-smaller">See more</a> + <a href="Structs/RatchetRootKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetRootKey</span></code></pre> </div> </div> @@ -990,9 +951,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicV"></a> - <a name="//apple_ref/swift/Struct/SessionPreKeyPublic" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV">SessionPreKeyPublic</a> + <a name="/s:14SignalProtocol11SenderChainV"></a> + <a name="//apple_ref/swift/Struct/SenderChain" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV">SenderChain</a> </code> </div> <div class="height-container"> @@ -1000,16 +961,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A pre key used to esatblish a session. A unique pre key is used for -each new session.</p> + <p>The sender chain of a ratchet used to encrypt messages for sending.</p> - <a href="Structs/SessionPreKeyPublic.html" class="slightly-smaller">See more</a> + <a href="Structs/SenderChain.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyPublic</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderChain</span></code></pre> </div> </div> @@ -1023,9 +983,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV"></a> - <a name="//apple_ref/swift/Struct/PreKeySignalMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV">PreKeySignalMessage</a> + <a name="/s:14SignalProtocol14SenderChainKeyV"></a> + <a name="//apple_ref/swift/Struct/SenderChainKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV">SenderChainKey</a> </code> </div> <div class="height-container"> @@ -1033,15 +993,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A <code>PreKeySignalMessage</code> can be used to establish a new session.</p> + <p>A key in the sender chain.</p> - <a href="Structs/PreKeySignalMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/SenderChainKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PreKeySignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderChainKey</span></code></pre> </div> </div> @@ -1073,39 +1033,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderMessageKey</span></code></pre> - - </div> - </div> - </section> - </div> - </li> - </ul> - </div> - <div class="task-group"> - <ul> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV"></a> - <a name="//apple_ref/swift/Struct/SenderKeyDistributionMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV">SenderKeyDistributionMessage</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p><code>SenderKeyDistributionMessage</code>s are used to establish group sessions.</p> - - <a href="Structs/SenderKeyDistributionMessage.html" class="slightly-smaller">See more</a> - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyDistributionMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderMessageKey</span></code></pre> </div> </div> @@ -1137,7 +1065,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">PendingPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">PendingPreKey</span></code></pre> </div> </div> @@ -1151,9 +1079,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV"></a> - <a name="//apple_ref/swift/Struct/ScannableFingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV">ScannableFingerprint</a> + <a name="/s:14SignalProtocol14SessionBuilderV"></a> + <a name="//apple_ref/swift/Struct/SessionBuilder" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV">SessionBuilder</a> </code> </div> <div class="height-container"> @@ -1161,15 +1089,29 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A fingerprint optimised to be scanned through e.g. a QR Code</p> + <p>Session builder is responsible for setting up encrypted sessions. + Once a session has been established, session_cipher + can be used to encrypt/decrypt messages in that session.</p> - <a href="Structs/ScannableFingerprint.html" class="slightly-smaller">See more</a> +<p>Sessions are built from one these different possible vectors:</p> + +<ul> +<li>A session_pre_key_bundle retrieved from a server</li> +<li>A pre_key_signal_message received from a client</li> +</ul> + +<p>Sessions are constructed per Signal Protocol address + (recipient name + device ID tuple). Remote logical users are identified by + their recipient name, and each logical recipient can have multiple + physical devices.</p> + + <a href="Structs/SessionBuilder.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">ScannableFingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionBuilder</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -1183,9 +1125,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV"></a> - <a name="//apple_ref/swift/Struct/SignalMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV">SignalMessage</a> + <a name="/s:14SignalProtocol13SessionPreKeyV"></a> + <a name="//apple_ref/swift/Struct/SessionPreKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV">SessionPreKey</a> </code> </div> <div class="height-container"> @@ -1193,15 +1135,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A <code>SignalMessage</code> is used to send an encrypted message in an established session.</p> + <p>A pre key used to esatblish a session. A unique pre key is used for +each new session.</p> - <a href="Structs/SignalMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionPreKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionPreKey</span></code></pre> </div> </div> @@ -1215,9 +1158,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV"></a> - <a name="//apple_ref/swift/Struct/PrivateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV">PrivateKey</a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV"></a> + <a name="//apple_ref/swift/Struct/SessionPreKeyBundle" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV">SessionPreKeyBundle</a> </code> </div> <div class="height-container"> @@ -1225,16 +1168,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The private part of an elliptic curve key pair. -The key has a length of <code>KeyPair.keyLength</code> byte.</p> + <p>Pre key bundles are used to establish new sessions.</p> - <a href="Structs/PrivateKey.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionPreKeyBundle.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PrivateKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyBundle</span></code></pre> </div> </div> @@ -1248,9 +1190,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV"></a> - <a name="//apple_ref/swift/Struct/RatchetMessageKeys" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV">RatchetMessageKeys</a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV"></a> + <a name="//apple_ref/swift/Struct/SessionPreKeyPublic" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV">SessionPreKeyPublic</a> </code> </div> <div class="height-container"> @@ -1258,15 +1200,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The keys needed to encrypt/decrypt a message</p> + <p>A pre key used to esatblish a session. A unique pre key is used for +each new session.</p> - <a href="Structs/RatchetMessageKeys.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionPreKeyPublic.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetMessageKeys</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionPreKeyPublic</span></code></pre> </div> </div> @@ -1280,9 +1223,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A13SenderKeyNameV"></a> - <a name="//apple_ref/swift/Struct/SignalSenderKeyName" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A13SenderKeyNameV">SignalSenderKeyName</a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV"></a> + <a name="//apple_ref/swift/Struct/SessionSignedPreKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV">SessionSignedPreKey</a> </code> </div> <div class="height-container"> @@ -1290,15 +1233,17 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A representation of a (group + sender + device) tuple</p> + <p>A signed pre key is used as part of a session bundle to establish a new session. +The public part of the key pair is signed with the identity key of the creator +to provide authentication.</p> - <a href="Structs/SignalSenderKeyName.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionSignedPreKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalSenderKeyName</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionSignedPreKey</span></code></pre> </div> </div> @@ -1312,9 +1257,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV"></a> - <a name="//apple_ref/swift/Struct/RatchetRootKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV">RatchetRootKey</a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV"></a> + <a name="//apple_ref/swift/Struct/SessionSignedPreKeyPublic" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV">SessionSignedPreKeyPublic</a> </code> </div> <div class="height-container"> @@ -1322,15 +1267,17 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A root key is within a ratchet to derive new sender and receiver chain keys.</p> + <p>A public signed pre key is used as part of a session bundle to establish a new session. +The public part of the key pair is signed with the identity key of the creator +to provide authentication.</p> - <a href="Structs/RatchetRootKey.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionSignedPreKeyPublic.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetRootKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionSignedPreKeyPublic</span></code></pre> </div> </div> @@ -1344,9 +1291,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV"></a> - <a name="//apple_ref/swift/Struct/SessionBuilder" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV">SessionBuilder</a> + <a name="/s:14SignalProtocol19SymmetricParametersV"></a> + <a name="//apple_ref/swift/Struct/SymmetricParameters" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV">SymmetricParameters</a> </code> </div> <div class="height-container"> @@ -1354,29 +1301,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Session builder is responsible for setting up encrypted sessions. - Once a session has been established, session_cipher - can be used to encrypt/decrypt messages in that session.</p> - -<p>Sessions are built from one these different possible vectors:</p> - -<ul> -<li>A session_pre_key_bundle retrieved from a server</li> -<li>A pre_key_signal_message received from a client</li> -</ul> - -<p>Sessions are constructed per Signal Protocol address - (recipient name + device ID tuple). Remote logical users are identified by - their recipient name, and each logical recipient can have multiple - physical devices.</p> + <p>All parameters needed to establish a session</p> - <a href="Structs/SessionBuilder.html" class="slightly-smaller">See more</a> + <a href="Structs/SymmetricParameters.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SessionBuilder</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SymmetricParameters</span></code></pre> </div> </div> @@ -1388,8 +1321,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/CipherTextMessage.html b/Documentation/Structs/CipherTextMessage.html index 8b2ac7e..ecda935 100644 --- a/Documentation/Structs/CipherTextMessage.html +++ b/Documentation/Structs/CipherTextMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>CipherTextMessage Struct Reference</title> + <title>CipherTextMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/CipherTextMessage" class="dashAnchor"></a> - <a title="CipherTextMessage Struct Reference"></a> + <a title="CipherTextMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - CipherTextMessage Struct Reference + CipherTextMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>CipherTextMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">CipherTextMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">CipherTextMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>CipherTextMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOv"></a> + <a name="/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOvp"></a> <a name="//apple_ref/swift/Property/type" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOv">type</a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOvp">type</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>CipherTextMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/CipherTextType.html">CipherTextType</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/CipherTextType.html">CipherTextType</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/data" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVv">data</a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVvp">data</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageVAcA0cD4TypeO4type_10Foundation4DataV4datatcfc"></a> + <a name="/s:14SignalProtocol17CipherTextMessageV4type4dataAcA0cD4TypeO_10Foundation4DataVtcfc"></a> <a name="//apple_ref/swift/Method/init(type:data:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageVAcA0cD4TypeO4type_10Foundation4DataV4datatcfc">init(type:data:)</a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4type4dataAcA0cD4TypeO_10Foundation4DataVtcfc">init(type:data:)</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/CipherTextType.html">CipherTextType</a></span><span class="p">,</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/CipherTextType.html">CipherTextType</a></span><span class="p">,</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -353,6 +350,13 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -373,7 +377,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -383,9 +387,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol17CipherTextMessageV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -405,7 +409,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -436,8 +440,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/DeviceConsistencyCommitmentV0.html b/Documentation/Structs/DeviceConsistencyCommitmentV0.html index 77d7402..2eb146a 100644 --- a/Documentation/Structs/DeviceConsistencyCommitmentV0.html +++ b/Documentation/Structs/DeviceConsistencyCommitmentV0.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>DeviceConsistencyCommitmentV0 Struct Reference</title> + <title>DeviceConsistencyCommitmentV0 Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/DeviceConsistencyCommitmentV0" class="dashAnchor"></a> - <a title="DeviceConsistencyCommitmentV0 Struct Reference"></a> + <a title="DeviceConsistencyCommitmentV0 Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - DeviceConsistencyCommitmentV0 Struct Reference + DeviceConsistencyCommitmentV0 Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>DeviceConsistencyCommitmentV0</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyCommitmentV0</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyCommitmentV0</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>DeviceConsistencyCommitmentV0</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvZ"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvpZ"></a> <a name="//apple_ref/swift/Variable/codeVersion" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvZ">codeVersion</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvpZ">codeVersion</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>DeviceConsistencyCommitmentV0</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">codeVersion</span><span class="p">:</span> <span class="kt">UInt16</span> <span class="o">=</span> <span class="mi">0</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">codeVersion</span><span class="p">:</span> <span class="kt">UInt16</span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/version" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvZ">version</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvpZ">version</a> </code> </div> <div class="height-container"> @@ -287,7 +284,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span> <span class="o">=</span> <span class="s">"DeviceConsistencyCommitment_V0"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -297,9 +294,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vv"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/generation" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vv">generation</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vvp">generation</a> </code> </div> <div class="height-container"> @@ -314,7 +311,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -324,9 +321,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/serialized" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVv">serialized</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVvp">serialized</a> </code> </div> <div class="height-container"> @@ -341,7 +338,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">serialized</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">serialized</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -351,9 +348,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0VACs6UInt32V10generation_SayAA9PublicKeyVG08identityJ4ListtKcfc"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generation15identityKeyListACs6UInt32V_SayAA06PublicI0VGtKcfc"></a> <a name="//apple_ref/swift/Method/init(generation:identityKeyList:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0VACs6UInt32V10generation_SayAA9PublicKeyVG08identityJ4ListtKcfc">init(generation:identityKeyList:)</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generation15identityKeyListACs6UInt32V_SayAA06PublicI0VGtKcfc">init(generation:identityKeyList:)</a> </code> </div> <div class="height-container"> @@ -374,7 +371,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">identityKeyList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">])</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">identityKeyList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">])</span> <span class="k">throws</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCodeSSSayAA0cD9SignatureVG3for_tKF"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCode3forSSSayAA0cD9SignatureVG_tKF"></a> <a name="//apple_ref/swift/Method/generateCode(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCodeSSSayAA0cD9SignatureVG3for_tKF">generateCode(for:)</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCode3forSSSayAA0cD9SignatureVG_tKF">generateCode(for:)</a> </code> </div> <div class="height-container"> @@ -426,7 +423,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">generateCode</span><span class="p">(</span><span class="k">for</span> <span class="nv">signatureList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a></span><span class="p">])</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">generateCode</span><span class="p">(</span><span class="k">for</span> <span class="nv">signatureList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a></span><span class="p">])</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">String</span></code></pre> </div> </div> @@ -461,8 +458,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/DeviceConsistencyMessage.html b/Documentation/Structs/DeviceConsistencyMessage.html index 2406854..d1a3588 100644 --- a/Documentation/Structs/DeviceConsistencyMessage.html +++ b/Documentation/Structs/DeviceConsistencyMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>DeviceConsistencyMessage Struct Reference</title> + <title>DeviceConsistencyMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/DeviceConsistencyMessage" class="dashAnchor"></a> - <a title="DeviceConsistencyMessage Struct Reference"></a> + <a title="DeviceConsistencyMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - DeviceConsistencyMessage Struct Reference + DeviceConsistencyMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>DeviceConsistencyMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyMessage</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>DeviceConsistencyMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVv"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVvp"></a> <a name="//apple_ref/swift/Property/signature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVv">signature</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVvp">signature</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>DeviceConsistencyMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a></span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vv"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/generation" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vv">generation</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vvp">generation</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageVAcA0cD12CommitmentV0V10commitment_AA7KeyPairV011identitykeyJ0tKcfc"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV10commitment15identitykeyPairAcA0cD12CommitmentV0V_AA03KeyH0VtKcfc"></a> <a name="//apple_ref/swift/Method/init(commitment:identitykeyPair:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageVAcA0cD12CommitmentV0V10commitment_AA7KeyPairV011identitykeyJ0tKcfc">init(commitment:identitykeyPair:)</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV10commitment15identitykeyPairAcA0cD12CommitmentV0V_AA03KeyH0VtKcfc">init(commitment:identitykeyPair:)</a> </code> </div> <div class="height-container"> @@ -318,7 +315,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> <span class="nv">identitykeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> <span class="nv">identitykeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -359,13 +356,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vv"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vvp"></a> <a name="//apple_ref/swift/Property/object" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vv">object</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vvp">object</a> </code> </div> <div class="height-container"> @@ -380,7 +384,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_DeviceConsistencyCodeMessage</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_DeviceConsistencyCodeMessage</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -390,9 +394,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageVAcA0a1_cd4CodeE0V4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityL0tKcfc"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAcA0a1_cd4CodeE0V_AA0cD12CommitmentV0VAA06PublicI0VtKcfc"></a> <a name="//apple_ref/swift/Method/init(from:commitment:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageVAcA0a1_cd4CodeE0V4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityL0tKcfc">init(from:commitment:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAcA0a1_cd4CodeE0V_AA0cD12CommitmentV0VAA06PublicI0VtKcfc">init(from:commitment:identityKey:)</a> </code> </div> <div class="height-container"> @@ -412,9 +416,9 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_DeviceConsistencyCodeMessage</span><span class="p">,</span> - <span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_DeviceConsistencyCodeMessage</span><span class="p">,</span> + <span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -467,6 +471,13 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers2"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers2"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -493,7 +504,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">data</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">data</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -507,9 +518,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageVAC10Foundation4DataV4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityM0tKcfc"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAC10Foundation4DataV_AA0cD12CommitmentV0VAA06PublicI0VtKcfc"></a> <a name="//apple_ref/swift/Method/init(from:commitment:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageVAC10Foundation4DataV4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityM0tKcfc">init(from:commitment:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAC10Foundation4DataV_AA0cD12CommitmentV0VAA06PublicI0VtKcfc">init(from:commitment:identityKey:)</a> </code> </div> <div class="height-container"> @@ -529,7 +540,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -584,8 +595,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/DeviceConsistencySignature.html b/Documentation/Structs/DeviceConsistencySignature.html index 20e0679..3bb3747 100644 --- a/Documentation/Structs/DeviceConsistencySignature.html +++ b/Documentation/Structs/DeviceConsistencySignature.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>DeviceConsistencySignature Struct Reference</title> + <title>DeviceConsistencySignature Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/DeviceConsistencySignature" class="dashAnchor"></a> - <a title="DeviceConsistencySignature Struct Reference"></a> + <a title="DeviceConsistencySignature Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - DeviceConsistencySignature Struct Reference + DeviceConsistencySignature Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>DeviceConsistencySignature</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencySignature</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencySignature</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>DeviceConsistencySignature</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/signature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVv">signature</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVvp">signature</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>DeviceConsistencySignature</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/vrfOutput" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVv">vrfOutput</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVvp">vrfOutput</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">vrfOutput</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">vrfOutput</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureVAC10Foundation4DataV9signature_AF9vrfOutputtcfc"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9signature9vrfOutputAC10Foundation4DataV_AHtcfc"></a> <a name="//apple_ref/swift/Method/init(signature:vrfOutput:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureVAC10Foundation4DataV9signature_AF9vrfOutputtcfc">init(signature:vrfOutput:)</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9signature9vrfOutputAC10Foundation4DataV_AHtcfc">init(signature:vrfOutput:)</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">vrfOutput</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">vrfOutput</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -357,9 +354,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV1loiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV1loiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/<(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV1loiSbAC_ACtFZ"><(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV1loiySbAC_ACtFZ"><(_:_:)</a> </code> </div> <div class="height-container"> @@ -379,7 +376,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -424,9 +421,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -446,7 +443,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -493,8 +490,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/DisplayableFingerprint.html b/Documentation/Structs/DisplayableFingerprint.html index cfebe9e..ce0bec2 100644 --- a/Documentation/Structs/DisplayableFingerprint.html +++ b/Documentation/Structs/DisplayableFingerprint.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>DisplayableFingerprint Struct Reference</title> + <title>DisplayableFingerprint Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/DisplayableFingerprint" class="dashAnchor"></a> - <a title="DisplayableFingerprint Struct Reference"></a> + <a title="DisplayableFingerprint Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - DisplayableFingerprint Struct Reference + DisplayableFingerprint Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>DisplayableFingerprint</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">DisplayableFingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">DisplayableFingerprint</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>DisplayableFingerprint</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV5localSSv"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV5localSSvp"></a> <a name="//apple_ref/swift/Property/local" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV5localSSv">local</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV5localSSvp">local</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>DisplayableFingerprint</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">local</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">local</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV6remoteSSv"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV6remoteSSvp"></a> <a name="//apple_ref/swift/Property/remote" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV6remoteSSv">remote</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV6remoteSSvp">remote</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">remote</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">remote</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSv"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSvp"></a> <a name="//apple_ref/swift/Property/displayText" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSv">displayText</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSvp">displayText</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">displayText</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">displayText</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintVACSS5local_SS6remotetcfc"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV5local6remoteACSS_SStcfc"></a> <a name="//apple_ref/swift/Method/init(local:remote:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintVACSS5local_SS6remotetcfc">init(local:remote:)</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV5local6remoteACSS_SStcfc">init(local:remote:)</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">local</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">remote</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">local</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">remote</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre> </div> </div> @@ -380,9 +377,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc"></a> <a name="//apple_ref/swift/Method/init(localFingerprint:remoteFingerprint:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc">init(localFingerprint:remoteFingerprint:)</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc">init(localFingerprint:remoteFingerprint:)</a> </code> </div> <div class="height-container"> @@ -402,7 +399,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -443,9 +440,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELLSS10Foundation4DataV11fingerprint_tFZ"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELL11fingerprintSS10Foundation4DataV_tFZ"></a> <a name="//apple_ref/swift/Method/createDisplayString(fingerprint:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELLSS10Foundation4DataV11fingerprint_tFZ">createDisplayString(fingerprint:)</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELL11fingerprintSS10Foundation4DataV_tFZ">createDisplayString(fingerprint:)</a> </code> </div> <div class="height-container"> @@ -460,7 +457,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">createDisplayString</span><span class="p">(</span><span class="nv">fingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">createDisplayString</span><span class="p">(</span><span class="nv">fingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">String</span></code></pre> </div> </div> @@ -497,9 +494,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -514,7 +511,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DisplayableFingerprint</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DisplayableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DisplayableFingerprint</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DisplayableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -561,8 +558,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/Fingerprint.html b/Documentation/Structs/Fingerprint.html index 9683abb..dc58f62 100644 --- a/Documentation/Structs/Fingerprint.html +++ b/Documentation/Structs/Fingerprint.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>Fingerprint Struct Reference</title> + <title>Fingerprint Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/Fingerprint" class="dashAnchor"></a> - <a title="Fingerprint Struct Reference"></a> + <a title="Fingerprint Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - Fingerprint Struct Reference + Fingerprint Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>Fingerprint</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Fingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Fingerprint</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>Fingerprint</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV7versions5UInt8VvZ"></a> + <a name="/s:14SignalProtocol11FingerprintV7versions5UInt8VvpZ"></a> <a name="//apple_ref/swift/Variable/version" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV7versions5UInt8VvZ">version</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV7versions5UInt8VvpZ">version</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>Fingerprint</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">UInt8</span> <span class="o">=</span> <span class="mi">0</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">UInt8</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV6lengthSivZ"></a> + <a name="/s:14SignalProtocol11FingerprintV6lengthSivpZ"></a> <a name="//apple_ref/swift/Variable/length" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV6lengthSivZ">length</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV6lengthSivpZ">length</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">length</span> <span class="o">=</span> <span class="mi">30</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">length</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV10iterationsSivZ"></a> + <a name="/s:14SignalProtocol11FingerprintV10iterationsSivpZ"></a> <a name="//apple_ref/swift/Variable/iterations" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV10iterationsSivZ">iterations</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV10iterationsSivpZ">iterations</a> </code> </div> <div class="height-container"> @@ -313,7 +310,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">iterations</span> <span class="o">=</span> <span class="mi">1024</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -323,9 +320,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vv"></a> + <a name="/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vvp"></a> <a name="//apple_ref/swift/Property/displayable" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vv">displayable</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vvp">displayable</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">displayable</span><span class="p">:</span> <span class="kt"><a href="../Structs/DisplayableFingerprint.html">DisplayableFingerprint</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">displayable</span><span class="p">:</span> <span class="kt"><a href="../Structs/DisplayableFingerprint.html">DisplayableFingerprint</a></span></code></pre> </div> </div> @@ -350,9 +347,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vv"></a> + <a name="/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vvp"></a> <a name="//apple_ref/swift/Property/scannable" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vv">scannable</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vvp">scannable</a> </code> </div> <div class="height-container"> @@ -367,7 +364,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">scannable</span><span class="p">:</span> <span class="kt"><a href="../Structs/ScannableFingerprint.html">ScannableFingerprint</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">scannable</span><span class="p">:</span> <span class="kt"><a href="../Structs/ScannableFingerprint.html">ScannableFingerprint</a></span></code></pre> </div> </div> @@ -377,9 +374,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV11displayTextSSv"></a> + <a name="/s:14SignalProtocol11FingerprintV11displayTextSSvp"></a> <a name="//apple_ref/swift/Property/displayText" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV11displayTextSSv">displayText</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV11displayTextSSvp">displayText</a> </code> </div> <div class="height-container"> @@ -394,7 +391,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">displayText</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">displayText</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -404,9 +401,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_10Foundation4DataV0D8IdentitySS06remoteeF0AG0jI0Si10iterationstKcfc"></a> + <a name="/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_10Foundation4DataVSSAKSitKcfc"></a> <a name="//apple_ref/swift/Method/init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_10Foundation4DataV0D8IdentitySS06remoteeF0AG0jI0Si10iterationstKcfc">init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_10Foundation4DataVSSAKSitKcfc">init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)</a> </code> </div> <div class="height-container"> @@ -426,12 +423,12 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> - <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> + <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivpZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -508,9 +505,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_AA9PublicKeyV0D8IdentitySS06remoteeF0AF0jI0Si10iterationstKcfc"></a> + <a name="/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_AA9PublicKeyVSSAJSitKcfc"></a> <a name="//apple_ref/swift/Method/init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_AA9PublicKeyV0D8IdentitySS06remoteeF0AF0jI0Si10iterationstKcfc">init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_AA9PublicKeyVSSAJSitKcfc">init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)</a> </code> </div> <div class="height-container"> @@ -530,12 +527,12 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> - <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> + <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivpZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -612,9 +609,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_SayAA9PublicKeyVG0D12IdentityListSS06remoteeF0AG0kiJ0Si10iterationstKcfc"></a> + <a name="/s:14SignalProtocol11FingerprintV21localStableIdentifier0D12IdentityList06remoteeF00igH010iterationsACSS_SayAA9PublicKeyVGSSAKSitKcfc"></a> <a name="//apple_ref/swift/Method/init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_SayAA9PublicKeyVG0D12IdentityListSS06remoteeF0AG0kiJ0Si10iterationstKcfc">init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D12IdentityList06remoteeF00igH010iterationsACSS_SayAA9PublicKeyVGSSAKSitKcfc">init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)</a> </code> </div> <div class="height-container"> @@ -634,12 +631,12 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> - <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">localIdentityList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">],</span> - <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">remoteIdentityList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">],</span> - <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> + <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">localIdentityList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">],</span> + <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">remoteIdentityList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">],</span> + <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivpZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -716,9 +713,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV7matchesSb10Foundation4DataVKF"></a> + <a name="/s:14SignalProtocol11FingerprintV7matchesySb10Foundation4DataVKF"></a> <a name="//apple_ref/swift/Method/matches(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV7matchesSb10Foundation4DataVKF">matches(_:)</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV7matchesySb10Foundation4DataVKF">matches(_:)</a> </code> </div> <div class="height-container"> @@ -738,7 +735,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">matches</span><span class="p">(</span><span class="n">_</span> <span class="nv">scannedData</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">matches</span><span class="p">(</span><span class="n">_</span> <span class="nv">scannedData</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -773,8 +770,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/GroupCipher.html b/Documentation/Structs/GroupCipher.html index 3962d9c..eb40b35 100644 --- a/Documentation/Structs/GroupCipher.html +++ b/Documentation/Structs/GroupCipher.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>GroupCipher Struct Reference</title> + <title>GroupCipher Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/GroupCipher" class="dashAnchor"></a> - <a title="GroupCipher Struct Reference"></a> + <a title="GroupCipher Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - GroupCipher Struct Reference + GroupCipher Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>GroupCipher</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">GroupCipher</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">GroupCipher</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a></span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>GroupCipher</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxv"></a> + <a name="/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxvp"></a> <a name="//apple_ref/swift/Property/store" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxv">store</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxvp">store</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>GroupCipher</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzv"></a> + <a name="/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzvp"></a> <a name="//apple_ref/swift/Property/address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzv">address</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzvp">address</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">address</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">GroupAddress</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">address</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">GroupAddress</span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherVACyxG0C7AddressQz7address_x5storetcfc"></a> + <a name="/s:14SignalProtocol11GroupCipherV7address5storeACyxG0C7AddressQz_xtcfc"></a> <a name="//apple_ref/swift/Method/init(address:store:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherVACyxG0C7AddressQz7address_x5storetcfc">init(address:store:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7address5storeACyxG0C7AddressQz_xtcfc">init(address:store:)</a> </code> </div> <div class="height-container"> @@ -313,7 +310,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">address</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">GroupAddress</span><span class="p">,</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">address</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">GroupAddress</span><span class="p">,</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">)</span></code></pre> </div> </div> @@ -354,9 +351,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7processyAA0D11TextMessageV7message_tKF"></a> + <a name="/s:14SignalProtocol11GroupCipherV7process7messageyAA0D11TextMessageV_tKF"></a> <a name="//apple_ref/swift/Method/process(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7processyAA0D11TextMessageV7message_tKF">process(message:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7process7messageyAA0D11TextMessageV_tKF">process(message:)</a> </code> </div> <div class="height-container"> @@ -384,7 +381,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -413,9 +410,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7processyAA28SenderKeyDistributionMessageV012distributionI0_tKF"></a> + <a name="/s:14SignalProtocol11GroupCipherV7process19distributionMessageyAA021SenderKeyDistributionG0V_tKF"></a> <a name="//apple_ref/swift/Method/process(distributionMessage:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7processyAA28SenderKeyDistributionMessageV012distributionI0_tKF">process(distributionMessage:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7process19distributionMessageyAA021SenderKeyDistributionG0V_tKF">process(distributionMessage:)</a> </code> </div> <div class="height-container"> @@ -442,7 +439,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="nv">distributionMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="nv">distributionMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -503,7 +500,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createSession</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createSession</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a></span></code></pre> </div> </div> @@ -517,9 +514,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF"></a> + <a name="/s:14SignalProtocol11GroupCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF"></a> <a name="//apple_ref/swift/Method/encrypt(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF">encrypt(_:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF">encrypt(_:)</a> </code> </div> <div class="height-container"> @@ -539,7 +536,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">plaintext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">plaintext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -572,9 +569,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7decrypt10Foundation4DataVAA16SenderKeyMessageV10ciphertext_tKF"></a> + <a name="/s:14SignalProtocol11GroupCipherV7decrypt10ciphertext10Foundation4DataVAA16SenderKeyMessageV_tKF"></a> <a name="//apple_ref/swift/Method/decrypt(ciphertext:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7decrypt10Foundation4DataVAA16SenderKeyMessageV10ciphertext_tKF">decrypt(ciphertext:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7decrypt10ciphertext10Foundation4DataVAA16SenderKeyMessageV_tKF">decrypt(ciphertext:)</a> </code> </div> <div class="height-container"> @@ -605,7 +602,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderKeyMessage.html">SenderKeyMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderKeyMessage.html">SenderKeyMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -660,7 +657,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">loadRecord</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SenderKeyRecord.html">SenderKeyRecord</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">loadRecord</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SenderKeyRecord.html">SenderKeyRecord</a></span></code></pre> </div> </div> @@ -676,8 +673,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/HKDF.html b/Documentation/Structs/HKDF.html index ea48de9..505d088 100644 --- a/Documentation/Structs/HKDF.html +++ b/Documentation/Structs/HKDF.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>HKDF Struct Reference</title> + <title>HKDF Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/HKDF" class="dashAnchor"></a> - <a title="HKDF Struct Reference"></a> + <a title="HKDF Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - HKDF Struct Reference + HKDF Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>HKDF</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">HKDF</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">HKDF</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>HKDF</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivZ"></a> + <a name="/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivpZ"></a> <a name="//apple_ref/swift/Variable/derivedRootSecretsSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivZ">derivedRootSecretsSize</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivpZ">derivedRootSecretsSize</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>HKDF</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">derivedRootSecretsSize</span> <span class="o">=</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="o">.</span><span class="n">secretSize</span> <span class="o">+</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="o">.</span><span class="n">secretSize</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">derivedRootSecretsSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvZ"></a> + <a name="/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvpZ"></a> <a name="//apple_ref/swift/Variable/iterationStartOffset" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvZ">iterationStartOffset</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvpZ">iterationStartOffset</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">iterationStartOffset</span><span class="p">:</span> <span class="kt">UInt8</span> <span class="o">=</span> <span class="mi">1</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">iterationStartOffset</span><span class="p">:</span> <span class="kt">UInt8</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV13deriveSecrets10Foundation4DataVAG8material_AG4saltAG4infoSi12outputLengthtKFZ"></a> + <a name="/s:14SignalProtocol4HKDFV13deriveSecrets8material4salt4info12outputLength10Foundation4DataVAK_A2KSitKFZ"></a> <a name="//apple_ref/swift/Method/deriveSecrets(material:salt:info:outputLength:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV13deriveSecrets10Foundation4DataVAG8material_AG4saltAG4infoSi12outputLengthtKFZ">deriveSecrets(material:salt:info:outputLength:)</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV13deriveSecrets8material4salt4info12outputLength10Foundation4DataVAK_A2KSitKFZ">deriveSecrets(material:salt:info:outputLength:)</a> </code> </div> <div class="height-container"> @@ -323,7 +320,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">deriveSecrets</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">outputLength</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">deriveSecrets</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">outputLength</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -392,9 +389,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL10Foundation4DataVAH3prk_AH4infoSi12outputLengthtKFZ"></a> + <a name="/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL3prk4info12outputLength10Foundation4DataVAK_AKSitKFZ"></a> <a name="//apple_ref/swift/Method/expand(prk:info:outputLength:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL10Foundation4DataVAH3prk_AH4infoSi12outputLengthtKFZ">expand(prk:info:outputLength:)</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL3prk4info12outputLength10Foundation4DataVAK_AKSitKFZ">expand(prk:info:outputLength:)</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">expand</span><span class="p">(</span><span class="nv">prk</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">outputLength</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">expand</span><span class="p">(</span><span class="nv">prk</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">outputLength</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -477,9 +474,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV15chainAndRootKeyAA07RatchetfG0V04rootG0_AA0h5ChainG0V0dG0t10Foundation4DataV8material_AM4saltAM4infotKFZ"></a> + <a name="/s:14SignalProtocol4HKDFV15chainAndRootKey8material4salt4infoAA07RatchetfG0V04rootG0_AA0k5ChainG0V0dG0t10Foundation4DataV_A2PtKFZ"></a> <a name="//apple_ref/swift/Method/chainAndRootKey(material:salt:info:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV15chainAndRootKeyAA07RatchetfG0V04rootG0_AA0h5ChainG0V0dG0t10Foundation4DataV8material_AM4saltAM4infotKFZ">chainAndRootKey(material:salt:info:)</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV15chainAndRootKey8material4salt4infoAA07RatchetfG0V04rootG0_AA0k5ChainG0V0dG0t10Foundation4DataV_A2PtKFZ">chainAndRootKey(material:salt:info:)</a> </code> </div> <div class="height-container"> @@ -499,7 +496,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">chainAndRootKey</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">chainAndRootKey</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -558,8 +555,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/KeyPair.html b/Documentation/Structs/KeyPair.html index 5bdca36..151a412 100644 --- a/Documentation/Structs/KeyPair.html +++ b/Documentation/Structs/KeyPair.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>KeyPair Struct Reference</title> + <title>KeyPair Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/KeyPair" class="dashAnchor"></a> - <a title="KeyPair Struct Reference"></a> + <a title="KeyPair Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - KeyPair Struct Reference + KeyPair Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>KeyPair</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">KeyPair</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">KeyPair</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>KeyPair</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvZ"></a> + <a name="/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvpZ"></a> <a name="//apple_ref/swift/Variable/DJBType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvZ">DJBType</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvpZ">DJBType</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>KeyPair</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">DJBType</span><span class="p">:</span> <span class="kt">UInt8</span> <span class="o">=</span> <span class="mh">0x05</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">DJBType</span><span class="p">:</span> <span class="kt">UInt8</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vv"></a> + <a name="/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vvp"></a> <a name="//apple_ref/swift/Property/publicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vv">publicKey</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vvp">publicKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vv"></a> + <a name="/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vvp"></a> <a name="//apple_ref/swift/Property/privateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vv">privateKey</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vvp">privateKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> </div> </div> @@ -333,9 +330,9 @@ <h3 class="section-name">Initialization</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairVAcA06PublicC0V06publicC0_AA07PrivateC0V07privateC0tcfc"></a> + <a name="/s:14SignalProtocol7KeyPairV06publicC007privateC0AcA06PublicC0V_AA07PrivateC0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(publicKey:privateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairVAcA06PublicC0V06publicC0_AA07PrivateC0V07privateC0tcfc">init(publicKey:privateKey:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV06publicC007privateC0AcA06PublicC0V_AA07PrivateC0Vtcfc">init(publicKey:privateKey:)</a> </code> </div> <div class="height-container"> @@ -350,7 +347,7 @@ <h3 class="section-name">Initialization</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -388,6 +385,57 @@ <h4>Parameters</h4> </section> </div> </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol7KeyPairV07privateC0AcA07PrivateC0V_tKcfc"></a> + <a name="//apple_ref/swift/Method/init(privateKey:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV07privateC0AcA07PrivateC0V_tKcfc">init(privateKey:)</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Create a key pair from existing public and private keys</p> +<div class="aside aside-throws"> + <p class="aside-title">Throws</p> + throws <code>SignalError.curveError</code> if the public key could not be created + +</div> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + + </div> + </div> + <div> + <h4>Parameters</h4> + <table class="graybox"> + <tbody> + <tr> + <td> + <code> + <em>privateKey</em> + </code> + </td> + <td> + <div> + <p>The private part of the key pair</p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + </section> + </div> + </li> <li class="item"> <div> <code> @@ -415,7 +463,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span> <span class="k">throws</span></code></pre> </div> </div> @@ -440,9 +488,9 @@ <h3 class="section-name">Exposed private key functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV4sign10Foundation4DataVAG7message_tKF"></a> + <a name="/s:14SignalProtocol7KeyPairV4sign7message10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/sign(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV4sign10Foundation4DataVAG7message_tKF">sign(message:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV4sign7message10Foundation4DataVAH_tKF">sign(message:)</a> </code> </div> <div class="height-container"> @@ -465,7 +513,7 @@ <h3 class="section-name">Exposed private key functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -498,9 +546,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV7signVRF10Foundation4DataVAG7message_tKF"></a> + <a name="/s:14SignalProtocol7KeyPairV7signVRF7message10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/signVRF(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV7signVRF10Foundation4DataVAG7message_tKF">signVRF(message:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV7signVRF7message10Foundation4DataVAH_tKF">signVRF(message:)</a> </code> </div> <div class="height-container"> @@ -520,7 +568,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">signVRF</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">signVRF</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -553,9 +601,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA06PublicC0V06publicC0_tKF"></a> + <a name="/s:14SignalProtocol7KeyPairV18calculateAgreement06publicC010Foundation4DataVAA06PublicC0V_tKF"></a> <a name="//apple_ref/swift/Method/calculateAgreement(publicKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA06PublicC0V06publicC0_tKF">calculateAgreement(publicKey:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV18calculateAgreement06publicC010Foundation4DataVAA06PublicC0V_tKF">calculateAgreement(publicKey:)</a> </code> </div> <div class="height-container"> @@ -575,7 +623,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -619,9 +667,9 @@ <h3 class="section-name">Exposed public key functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV6verifySb10Foundation4DataV9signature_AG3fortF"></a> + <a name="/s:14SignalProtocol7KeyPairV6verify9signature3forSb10Foundation4DataV_AItF"></a> <a name="//apple_ref/swift/Method/verify(signature:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV6verifySb10Foundation4DataV9signature_AG3fortF">verify(signature:for:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV6verify9signature3forSb10Foundation4DataV_AItF">verify(signature:for:)</a> </code> </div> <div class="height-container"> @@ -636,7 +684,7 @@ <h3 class="section-name">Exposed public key functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -681,9 +729,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF"></a> + <a name="/s:14SignalProtocol7KeyPairV6verify12vrfSignature3for10Foundation4DataVAI_AItKF"></a> <a name="//apple_ref/swift/Method/verify(vrfSignature:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF">verify(vrfSignature:for:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV6verify12vrfSignature3for10Foundation4DataVAI_AItKF">verify(vrfSignature:for:)</a> </code> </div> <div class="height-container"> @@ -704,7 +752,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">vrfSignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">vrfSignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -749,9 +797,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA07PrivateC0V07privateC0_tKF"></a> + <a name="/s:14SignalProtocol7KeyPairV18calculateAgreement07privateC010Foundation4DataVAA07PrivateC0V_tKF"></a> <a name="//apple_ref/swift/Method/calculateAgreement(privateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA07PrivateC0V07privateC0_tKF">calculateAgreement(privateKey:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV18calculateAgreement07privateC010Foundation4DataVAA07PrivateC0V_tKF">calculateAgreement(privateKey:)</a> </code> </div> <div class="height-container"> @@ -771,7 +819,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -804,13 +852,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairVAcA0a1_cD0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol7KeyPairV4fromAcA0a1_cD0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairVAcA0a1_cD0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV4fromAcA0a1_cD0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -830,7 +885,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_KeyPair</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_KeyPair</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -859,9 +914,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vv"></a> + <a name="/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -876,7 +931,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_KeyPair</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_KeyPair</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -886,13 +941,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol7KeyPairV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -907,7 +969,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">KeyPair</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">KeyPair</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">KeyPair</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">KeyPair</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -954,8 +1016,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/PendingPreKey.html b/Documentation/Structs/PendingPreKey.html index 94c1bae..16be61b 100644 --- a/Documentation/Structs/PendingPreKey.html +++ b/Documentation/Structs/PendingPreKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>PendingPreKey Struct Reference</title> + <title>PendingPreKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/PendingPreKey" class="dashAnchor"></a> - <a title="PendingPreKey Struct Reference"></a> + <a title="PendingPreKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - PendingPreKey Struct Reference + PendingPreKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PendingPreKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">PendingPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">PendingPreKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>PendingPreKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgv"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgvp"></a> <a name="//apple_ref/swift/Property/preKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgv">preKeyId</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgvp">preKeyId</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>PendingPreKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vv">signedPreKeyId</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vvp">signedPreKeyId</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vv"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vvp"></a> <a name="//apple_ref/swift/Property/baseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vv">baseKey</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vvp">baseKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -322,13 +319,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVv"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -343,7 +347,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">PendingPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">PendingPreKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -353,9 +357,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyVAcA0A8_SessionVABV4from_tKcfc"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV4fromAcA0A8_SessionVABV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyVAcA0A8_SessionVABV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV4fromAcA0A8_SessionVABV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -375,7 +379,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">PendingPreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">PendingPreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -404,13 +408,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -425,7 +436,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PendingPreKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PendingPreKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PendingPreKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PendingPreKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -441,8 +452,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/PreKeySignalMessage.html b/Documentation/Structs/PreKeySignalMessage.html index 441da36..38ba19e 100644 --- a/Documentation/Structs/PreKeySignalMessage.html +++ b/Documentation/Structs/PreKeySignalMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>PreKeySignalMessage Struct Reference</title> + <title>PreKeySignalMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/PreKeySignalMessage" class="dashAnchor"></a> - <a title="PreKeySignalMessage Struct Reference"></a> + <a title="PreKeySignalMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - PreKeySignalMessage Struct Reference + PreKeySignalMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PreKeySignalMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PreKeySignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PreKeySignalMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>PreKeySignalMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgvp"></a> <a name="//apple_ref/swift/Property/preKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgv">preKeyId</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgvp">preKeyId</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>PreKeySignalMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vv">signedPreKeyId</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vvp">signedPreKeyId</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vvp"></a> <a name="//apple_ref/swift/Property/baseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vv">baseKey</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vvp">baseKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vvp"></a> <a name="//apple_ref/swift/Property/identityKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vv">identityKey</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vvp">identityKey</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vvp"></a> <a name="//apple_ref/swift/Property/message" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vv">message</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vvp">message</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageVACs6UInt32VSg03preD2Id_AE06signedcdH0AA06PublicD0V04baseD0AJ08identityD0AA0aE0V7messagetcfc"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV03preD2Id06signedcdG004baseD008identityD07messageACs6UInt32VSg_AjA06PublicD0VAmA0aE0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageVACs6UInt32VSg03preD2Id_AE06signedcdH0AA06PublicD0V04baseD0AJ08identityD0AA0aE0V7messagetcfc">init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV03preD2Id06signedcdG004baseD008identityD07messageACs6UInt32VSg_AjA06PublicD0VAmA0aE0Vtcfc">init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)</a> </code> </div> <div class="height-container"> @@ -393,11 +390,11 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?,</span> - <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?,</span> + <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span></code></pre> </div> </div> @@ -496,7 +493,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -510,6 +507,13 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20buffers"></a> + <a name="//apple_ref/swift/Section/Protocol buffers" class="dashAnchor"></a> + <a href="#/Protocol%20buffers"> + <h3 class="section-name">Protocol buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -536,7 +540,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">asProtoObject</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Signal_PreKeySignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">asProtoObject</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Signal_PreKeySignalMessage</span></code></pre> </div> </div> @@ -550,9 +554,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageVAcA0a1_cdaE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV4fromAcA0a1_cdaE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageVAcA0a1_cdaE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV4fromAcA0a1_cdaE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -578,7 +582,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_PreKeySignalMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_PreKeySignalMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -609,8 +613,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/PrivateKey.html b/Documentation/Structs/PrivateKey.html index ee582c9..c84122e 100644 --- a/Documentation/Structs/PrivateKey.html +++ b/Documentation/Structs/PrivateKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>PrivateKey Struct Reference</title> + <title>PrivateKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/PrivateKey" class="dashAnchor"></a> - <a title="PrivateKey Struct Reference"></a> + <a title="PrivateKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - PrivateKey Struct Reference + PrivateKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PrivateKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PrivateKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PrivateKey</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>PrivateKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVv">key</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVvp">key</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>PrivateKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV5point_tKcfc"></a> + <a name="/s:14SignalProtocol10PrivateKeyV5pointAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(point:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV5point_tKcfc">init(point:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV5pointAC10Foundation4DataV_tKcfc">init(point:)</a> </code> </div> <div class="height-container"> @@ -291,7 +288,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -324,9 +321,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV15unverifiedPoint_tKcfc"></a> + <a name="/s:14SignalProtocol10PrivateKeyV15unverifiedPointAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(unverifiedPoint:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV15unverifiedPoint_tKcfc">init(unverifiedPoint:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV15unverifiedPointAC10Foundation4DataV_tKcfc">init(unverifiedPoint:)</a> </code> </div> <div class="height-container"> @@ -352,7 +349,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">unverifiedPoint</span> <span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">unverifiedPoint</span> <span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -398,7 +395,7 @@ <h4>Return Value</h4> <p>Create a new random private key.</p> <div class="aside aside-throws"> <p class="aside-title">Throws</p> - Any error from <code>signalCryptoRandom(bytes:)</code> + Any error from <code><a href="../Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6random5bytes10Foundation4DataVSi_tKFZ">SignalCrypto.random(bytes:)</a></code> </div> @@ -407,7 +404,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span> <span class="k">throws</span></code></pre> </div> </div> @@ -417,9 +414,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV4sign10Foundation4DataVAG7message_tKF"></a> + <a name="/s:14SignalProtocol10PrivateKeyV4sign7message10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/sign(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4sign10Foundation4DataVAG7message_tKF">sign(message:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4sign7message10Foundation4DataVAH_tKF">sign(message:)</a> </code> </div> <div class="height-container"> @@ -441,7 +438,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -474,9 +471,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV7signVRF10Foundation4DataVAG7message_tKF"></a> + <a name="/s:14SignalProtocol10PrivateKeyV7signVRF7message10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/signVRF(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV7signVRF10Foundation4DataVAG7message_tKF">signVRF(message:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV7signVRF7message10Foundation4DataVAH_tKF">signVRF(message:)</a> </code> </div> <div class="height-container"> @@ -496,7 +493,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">signVRF</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">signVRF</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -529,9 +526,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV18calculateAgreement10Foundation4DataVAA06PublicD0V06publicD0_tKF"></a> + <a name="/s:14SignalProtocol10PrivateKeyV18calculateAgreement06publicD010Foundation4DataVAA06PublicD0V_tKF"></a> <a name="//apple_ref/swift/Method/calculateAgreement(publicKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV18calculateAgreement10Foundation4DataVAA06PublicD0V06publicD0_tKF">calculateAgreement(publicKey:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV18calculateAgreement06publicD010Foundation4DataVAA06PublicD0V_tKF">calculateAgreement(publicKey:)</a> </code> </div> <div class="height-container"> @@ -551,7 +548,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -584,9 +581,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/data" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVv">data</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVvp">data</a> </code> </div> <div class="height-container"> @@ -601,7 +598,71 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol10PrivateKeyV7keyPairAA0dF0VyKF"></a> + <a name="//apple_ref/swift/Method/keyPair()" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV7keyPairAA0dF0VyKF">keyPair()</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Create the corresponding key pair for the private key</p> +<div class="aside aside-throws"> + <p class="aside-title">Throws</p> + throws <code>SignalError.curveError</code> if the public key could not be created + +</div> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">keyPair</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol10PrivateKeyV06publicD0AA06PublicD0VyKF"></a> + <a name="//apple_ref/swift/Method/publicKey()" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV06publicD0AA06PublicD0VyKF">publicKey()</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Create the corresponding public key for the private key</p> +<div class="aside aside-throws"> + <p class="aside-title">Throws</p> + throws <code>SignalError.curveError</code> if the public key could not be created + +</div> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">publicKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -615,9 +676,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol10PrivateKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -632,7 +693,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PrivateKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PrivateKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PrivateKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PrivateKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -677,13 +738,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol10PrivateKeyV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -703,7 +771,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -753,7 +821,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -765,8 +833,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/PublicKey.html b/Documentation/Structs/PublicKey.html index 36eb929..92dd8a2 100644 --- a/Documentation/Structs/PublicKey.html +++ b/Documentation/Structs/PublicKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>PublicKey Struct Reference</title> + <title>PublicKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/PublicKey" class="dashAnchor"></a> - <a title="PublicKey Struct Reference"></a> + <a title="PublicKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - PublicKey Struct Reference + PublicKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PublicKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PublicKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PublicKey</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>PublicKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/basePoint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvZ">basePoint</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvpZ">basePoint</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>PublicKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">basePoint</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mi">9</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="kt">UInt8</span><span class="p">](</span><span class="nv">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="mi">31</span><span class="p">))</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">basePoint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVv">key</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvp">key</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV5point_tKcfc"></a> + <a name="/s:14SignalProtocol9PublicKeyV5pointAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(point:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV5point_tKcfc">init(point:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV5pointAC10Foundation4DataV_tKcfc">init(point:)</a> </code> </div> <div class="height-container"> @@ -319,7 +316,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -348,9 +345,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyVAcA07PrivateD0V07privateD0_tKcfc"></a> + <a name="/s:14SignalProtocol9PublicKeyV07privateD0AcA07PrivateD0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(privateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyVAcA07PrivateD0V07privateD0_tKcfc">init(privateKey:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV07privateD0AcA07PrivateD0V_tKcfc">init(privateKey:)</a> </code> </div> <div class="height-container"> @@ -362,7 +359,7 @@ <h4>Parameters</h4> Fails if the key could not be generated.</p> <div class="aside aside-throws"> <p class="aside-title">Throws</p> - throws <code>SignalError.curveError</code> if the public key could not be created + <code>SignalError.curveError</code> if the public key could not be created </div> @@ -371,7 +368,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -400,9 +397,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV6verifySb10Foundation4DataV9signature_AG3fortF"></a> + <a name="/s:14SignalProtocol9PublicKeyV6verify9signature3forSb10Foundation4DataV_AItF"></a> <a name="//apple_ref/swift/Method/verify(signature:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV6verifySb10Foundation4DataV9signature_AG3fortF">verify(signature:for:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV6verify9signature3forSb10Foundation4DataV_AItF">verify(signature:for:)</a> </code> </div> <div class="height-container"> @@ -417,7 +414,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -462,9 +459,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF"></a> + <a name="/s:14SignalProtocol9PublicKeyV6verify12vrfSignature3for10Foundation4DataVAI_AItKF"></a> <a name="//apple_ref/swift/Method/verify(vrfSignature:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF">verify(vrfSignature:for:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV6verify12vrfSignature3for10Foundation4DataVAI_AItKF">verify(vrfSignature:for:)</a> </code> </div> <div class="height-container"> @@ -484,7 +481,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">vrfSignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">vrfSignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -529,9 +526,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV18calculateAgreement10Foundation4DataVAA07PrivateD0V07privateD0_tKF"></a> + <a name="/s:14SignalProtocol9PublicKeyV18calculateAgreement07privateD010Foundation4DataVAA07PrivateD0V_tKF"></a> <a name="//apple_ref/swift/Method/calculateAgreement(privateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV18calculateAgreement10Foundation4DataVAA07PrivateD0V07privateD0_tKF">calculateAgreement(privateKey:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV18calculateAgreement07privateD010Foundation4DataVAA07PrivateD0V_tKF">calculateAgreement(privateKey:)</a> </code> </div> <div class="height-container"> @@ -551,7 +548,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -588,9 +585,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV1loiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol9PublicKeyV1loiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/<(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV1loiSbAC_ACtFZ"><(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV1loiySbAC_ACtFZ"><(_:_:)</a> </code> </div> <div class="height-container"> @@ -605,7 +602,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -650,9 +647,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol9PublicKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -667,7 +664,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -712,9 +709,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/data" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVv">data</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVvp">data</a> </code> </div> <div class="height-container"> @@ -729,7 +726,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -739,13 +736,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol9PublicKeyV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -765,7 +769,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -815,7 +819,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -831,8 +835,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/RatchetChainKey.html b/Documentation/Structs/RatchetChainKey.html index 9335b6f..92d1f4b 100644 --- a/Documentation/Structs/RatchetChainKey.html +++ b/Documentation/Structs/RatchetChainKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>RatchetChainKey Struct Reference</title> + <title>RatchetChainKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/RatchetChainKey" class="dashAnchor"></a> - <a title="RatchetChainKey Struct Reference"></a> + <a title="RatchetChainKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - RatchetChainKey Struct Reference + RatchetChainKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>RatchetChainKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetChainKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>RatchetChainKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/messageKeySeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ">messageKeySeed</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ">messageKeySeed</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>RatchetChainKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeySeed</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mh">0x01</span><span class="p">])</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeySeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/chainKeySeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ">chainKeySeed</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ">chainKeySeed</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">chainKeySeed</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mh">0x02</span><span class="p">])</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">chainKeySeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/keyMaterialSeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ">keyMaterialSeed</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ">keyMaterialSeed</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyMaterialSeed</span> <span class="o">=</span> <span class="s">"WhisperMessageKeys"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyMaterialSeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivpZ"></a> <a name="//apple_ref/swift/Variable/secretSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivZ">secretSize</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivpZ">secretSize</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">secretSize</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">secretSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivpZ"></a> <a name="//apple_ref/swift/Variable/hashOutputSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivZ">hashOutputSize</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivpZ">hashOutputSize</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">hashOutputSize</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">hashOutputSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVv">key</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVvp">key</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV5indexs6UInt32Vv"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV5indexs6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/index" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV5indexs6UInt32Vv">index</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV5indexs6UInt32Vvp">index</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -430,9 +427,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyVAC10Foundation4DataV3key_s6UInt32V5indextcfc"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV3key5indexAC10Foundation4DataV_s6UInt32Vtcfc"></a> <a name="//apple_ref/swift/Method/init(key:index:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyVAC10Foundation4DataV3key_s6UInt32V5indextcfc">init(key:index:)</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV3key5indexAC10Foundation4DataV_s6UInt32Vtcfc">init(key:index:)</a> </code> </div> <div class="height-container"> @@ -447,7 +444,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">index</span> <span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span></code></pre> </div> </div> @@ -488,9 +485,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVAH4seed_tKF"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL4seed10Foundation4DataVAI_tKF"></a> <a name="//apple_ref/swift/Method/getBaseMaterial(seed:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVAH4seed_tKF">getBaseMaterial(seed:)</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL4seed10Foundation4DataVAI_tKF">getBaseMaterial(seed:)</a> </code> </div> <div class="height-container"> @@ -510,7 +507,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getBaseMaterial</span><span class="p">(</span><span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getBaseMaterial</span><span class="p">(</span><span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -565,7 +562,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">messageKeys</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">messageKeys</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span></code></pre> </div> </div> @@ -601,7 +598,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">next</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">RatchetChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">next</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">RatchetChainKey</span></code></pre> </div> </div> @@ -615,13 +612,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vv"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -636,7 +640,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">ChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">ChainKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -646,9 +650,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyVAcA0A8_SessionV0D0V0dE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV4fromAcA0A8_SessionV0D0V0dE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyVAcA0A8_SessionV0D0V0dE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV4fromAcA0A8_SessionV0D0V0dE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -668,7 +672,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">ChainKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">ChainKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -697,13 +701,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -718,7 +729,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetChainKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetChainKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetChainKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetChainKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -765,8 +776,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/RatchetMessageKeys.html b/Documentation/Structs/RatchetMessageKeys.html index b3da952..612ed96 100644 --- a/Documentation/Structs/RatchetMessageKeys.html +++ b/Documentation/Structs/RatchetMessageKeys.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>RatchetMessageKeys Struct Reference</title> + <title>RatchetMessageKeys Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/RatchetMessageKeys" class="dashAnchor"></a> - <a title="RatchetMessageKeys Struct Reference"></a> + <a title="RatchetMessageKeys Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - RatchetMessageKeys Struct Reference + RatchetMessageKeys Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>RatchetMessageKeys</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetMessageKeys</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetMessageKeys</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>RatchetMessageKeys</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivpZ"></a> <a name="//apple_ref/swift/Variable/cipherKeyLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivZ">cipherKeyLength</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivpZ">cipherKeyLength</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>RatchetMessageKeys</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">cipherKeyLength</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">cipherKeyLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivpZ"></a> <a name="//apple_ref/swift/Variable/macKeyLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivZ">macKeyLength</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivpZ">macKeyLength</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">macKeyLength</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">macKeyLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivpZ"></a> <a name="//apple_ref/swift/Variable/ivLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivZ">ivLength</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivpZ">ivLength</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">ivLength</span> <span class="o">=</span> <span class="mi">16</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">ivLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivpZ"></a> <a name="//apple_ref/swift/Variable/derivedMessageSecretsSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivZ">derivedMessageSecretsSize</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivpZ">derivedMessageSecretsSize</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">derivedMessageSecretsSize</span> <span class="o">=</span> <span class="n"><a href="../Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivZ">cipherKeyLength</a></span> <span class="o">+</span> <span class="n"><a href="../Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivZ">macKeyLength</a></span> <span class="o">+</span> <span class="n"><a href="../Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivZ">ivLength</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">derivedMessageSecretsSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/cipherKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVv">cipherKey</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVvp">cipherKey</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">cipherKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">cipherKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/macKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVv">macKey</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVvp">macKey</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/iv" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVv">iv</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVvp">iv</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -430,9 +427,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/counter" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vv">counter</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vvp">counter</a> </code> </div> <div class="height-container"> @@ -447,7 +444,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -457,9 +454,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV6cipher_AF3macAF2ivs6UInt32V7countertKcfc"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV6cipher3mac2iv7counterAC10Foundation4DataV_A2Js6UInt32VtKcfc"></a> <a name="//apple_ref/swift/Method/init(cipher:mac:iv:counter:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV6cipher_AF3macAF2ivs6UInt32V7countertKcfc">init(cipher:mac:iv:counter:)</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV6cipher3mac2iv7counterAC10Foundation4DataV_A2Js6UInt32VtKcfc">init(cipher:mac:iv:counter:)</a> </code> </div> <div class="height-container"> @@ -480,7 +477,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">cipher</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">cipher</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -533,9 +530,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV8material_tKcfc"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV8materialAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(material:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV8material_tKcfc">init(material:)</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV8materialAC10Foundation4DataV_tKcfc">init(material:)</a> </code> </div> <div class="height-container"> @@ -555,7 +552,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -584,13 +581,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -605,7 +609,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">MessageKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">MessageKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -615,9 +619,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysVAcA0A8_SessionV5ChainV0D3KeyV4from_tKcfc"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV4fromAcA0A8_SessionV5ChainV0D3KeyV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysVAcA0A8_SessionV5ChainV0D3KeyV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV4fromAcA0A8_SessionV5ChainV0D3KeyV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -637,7 +641,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">MessageKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">MessageKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -666,13 +670,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -687,7 +698,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetMessageKeys</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetMessageKeys</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetMessageKeys</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetMessageKeys</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -734,8 +745,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/RatchetRootKey.html b/Documentation/Structs/RatchetRootKey.html index debc8fb..c9280e3 100644 --- a/Documentation/Structs/RatchetRootKey.html +++ b/Documentation/Structs/RatchetRootKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>RatchetRootKey Struct Reference</title> + <title>RatchetRootKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/RatchetRootKey" class="dashAnchor"></a> - <a title="RatchetRootKey Struct Reference"></a> + <a title="RatchetRootKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - RatchetRootKey Struct Reference + RatchetRootKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>RatchetRootKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetRootKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetRootKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>RatchetRootKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/keyInfo" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvZ">keyInfo</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvpZ">keyInfo</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>RatchetRootKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyInfo</span> <span class="o">=</span> <span class="s">"WhisperRatchet"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyInfo</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivZ"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivpZ"></a> <a name="//apple_ref/swift/Variable/secretSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivZ">secretSize</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivpZ">secretSize</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">secretSize</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">secretSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVv">key</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVvp">key</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV3key_tcfc"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV3keyAC10Foundation4DataV_tcfc"></a> <a name="//apple_ref/swift/Method/init(key:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV3key_tcfc">init(key:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV3keyAC10Foundation4DataV_tcfc">init(key:)</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -368,9 +365,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV11createChainAC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V05theircE0_AA07PrivateE0V03ourcE0tKF"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV11createChain05theircE003ourcE0AC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V_AA07PrivateE0VtKF"></a> <a name="//apple_ref/swift/Method/createChain(theirRatchetKey:ourRatchetKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV11createChainAC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V05theircE0_AA07PrivateE0V03ourcE0tKF">createChain(theirRatchetKey:ourRatchetKey:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV11createChain05theircE003ourcE0AC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V_AA07PrivateE0VtKF">createChain(theirRatchetKey:ourRatchetKey:)</a> </code> </div> <div class="height-container"> @@ -390,7 +387,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">createChain</span><span class="p">(</span><span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">createChain</span><span class="p">(</span><span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -435,6 +432,13 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -456,7 +460,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -470,9 +474,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV4from_tcfc"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV4fromAC10Foundation4DataV_tcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV4from_tcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV4fromAC10Foundation4DataV_tcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -487,7 +491,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -516,13 +520,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Comparable"></a> + <a name="//apple_ref/swift/Section/Protocol Comparable" class="dashAnchor"></a> + <a href="#/Protocol%20Comparable"> + <h3 class="section-name">Protocol Comparable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV1loiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV1loiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/<(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV1loiSbAC_ACtFZ"><(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV1loiySbAC_ACtFZ"><(_:_:)</a> </code> </div> <div class="height-container"> @@ -537,7 +548,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -582,13 +593,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -603,7 +621,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -650,8 +668,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/ScannableFingerprint.html b/Documentation/Structs/ScannableFingerprint.html index 2628b9b..7ace4d7 100644 --- a/Documentation/Structs/ScannableFingerprint.html +++ b/Documentation/Structs/ScannableFingerprint.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>ScannableFingerprint Struct Reference</title> + <title>ScannableFingerprint Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/ScannableFingerprint" class="dashAnchor"></a> - <a title="ScannableFingerprint Struct Reference"></a> + <a title="ScannableFingerprint Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - ScannableFingerprint Struct Reference + ScannableFingerprint Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>ScannableFingerprint</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">ScannableFingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">ScannableFingerprint</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>ScannableFingerprint</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivZ"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivpZ"></a> <a name="//apple_ref/swift/Variable/length" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivZ">length</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivpZ">length</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>ScannableFingerprint</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">length</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">length</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvZ"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvpZ"></a> <a name="//apple_ref/swift/Variable/version" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvZ">version</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvpZ">version</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="o">=</span> <span class="mi">1</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/localFingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVv">localFingerprint</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVvp">localFingerprint</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/remoteFingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVv">remoteFingerprint</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVvp">remoteFingerprint</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc"></a> <a name="//apple_ref/swift/Method/init(localFingerprint:remoteFingerprint:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc">init(localFingerprint:remoteFingerprint:)</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc">init(localFingerprint:remoteFingerprint:)</a> </code> </div> <div class="height-container"> @@ -371,7 +368,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -412,13 +409,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintVAcA0a1_D0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV4fromAcA0a1_D0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintVAcA0a1_D0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV4fromAcA0a1_D0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -438,7 +442,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_Fingerprint</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_Fingerprint</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -467,9 +471,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vv"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -484,7 +488,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Fingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Fingerprint</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -494,13 +498,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Comparison"></a> + <a name="//apple_ref/swift/Section/Comparison" class="dashAnchor"></a> + <a href="#/Comparison"> + <h3 class="section-name">Comparison</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV7matchesSbACF"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV7matchesySbACF"></a> <a name="//apple_ref/swift/Method/matches(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV7matchesSbACF">matches(_:)</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV7matchesySbACF">matches(_:)</a> </code> </div> <div class="height-container"> @@ -515,7 +526,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">matches</span><span class="p">(</span><span class="n">_</span> <span class="nv">other</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">matches</span><span class="p">(</span><span class="n">_</span> <span class="nv">other</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -560,13 +571,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -581,7 +599,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -628,8 +646,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SenderChain.html b/Documentation/Structs/SenderChain.html index ab4eee6..fc91352 100644 --- a/Documentation/Structs/SenderChain.html +++ b/Documentation/Structs/SenderChain.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderChain Struct Reference</title> + <title>SenderChain Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderChain" class="dashAnchor"></a> - <a title="SenderChain Struct Reference"></a> + <a title="SenderChain Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderChain Struct Reference + SenderChain Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderChain</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderChain</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderChain</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderChain</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVv"></a> + <a name="/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVvp"></a> <a name="//apple_ref/swift/Property/ratchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVv">ratchetKey</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVvp">ratchetKey</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderChain</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vv"></a> + <a name="/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vvp">chainKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainVAcA7KeyPairV07ratchetE0_AA07RatchetdE0V05chainE0tcfc"></a> + <a name="/s:14SignalProtocol11SenderChainV10ratchetKey05chainF0AcA0F4PairV_AA07RatchetdF0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(ratchetKey:chainKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainVAcA7KeyPairV07ratchetE0_AA07RatchetdE0V05chainE0tcfc">init(ratchetKey:chainKey:)</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV10ratchetKey05chainF0AcA0F4PairV_AA07RatchetdF0Vtcfc">init(ratchetKey:chainKey:)</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -353,13 +350,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20buffers"></a> + <a name="//apple_ref/swift/Section/Protocol buffers" class="dashAnchor"></a> + <a href="#/Protocol%20buffers"> + <h3 class="section-name">Protocol buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vv"></a> + <a name="/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -374,7 +378,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -384,9 +388,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainVAcA0A8_SessionV0D0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol11SenderChainV4fromAcA0A8_SessionV0D0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainVAcA0A8_SessionV0D0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV4fromAcA0A8_SessionV0D0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -406,7 +410,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -435,13 +439,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol11SenderChainV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -456,7 +467,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderChain</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderChain</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderChain</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderChain</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -503,8 +514,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SenderChainKey.html b/Documentation/Structs/SenderChainKey.html index 2aa3f82..b7d0918 100644 --- a/Documentation/Structs/SenderChainKey.html +++ b/Documentation/Structs/SenderChainKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderChainKey Struct Reference</title> + <title>SenderChainKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderChainKey" class="dashAnchor"></a> - <a title="SenderChainKey Struct Reference"></a> + <a title="SenderChainKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderChainKey Struct Reference + SenderChainKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderChainKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderChainKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderChainKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/messageKeySeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ">messageKeySeed</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ">messageKeySeed</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderChainKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeySeed</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mh">0x01</span><span class="p">])</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeySeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/chainKeySeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ">chainKeySeed</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ">chainKeySeed</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">chainKeySeed</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mh">0x02</span><span class="p">])</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">chainKeySeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vv"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/iteration" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vv">iteration</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vvp">iteration</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVvp">chainKey</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyVACs6UInt32V9iteration_10Foundation4DataV05chainE0tcfc"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV9iteration05chainE0ACs6UInt32V_10Foundation4DataVtcfc"></a> <a name="//apple_ref/swift/Method/init(iteration:chainKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyVACs6UInt32V9iteration_10Foundation4DataV05chainE0tcfc">init(iteration:chainKey:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV9iteration05chainE0ACs6UInt32V_10Foundation4DataVtcfc">init(iteration:chainKey:)</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -429,7 +426,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">mutating</span> <span class="kd">func</span> <span class="nf">messageKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">mutating</span> <span class="kd">func</span> <span class="nf">messageKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span></code></pre> </div> </div> @@ -443,13 +440,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVv"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -464,7 +468,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderChainKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -474,9 +478,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyVAcA0a1_cE5StateVABV4from_tKcfc"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV4fromAcA0a1_cE5StateVABV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyVAcA0a1_cE5StateVABV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV4fromAcA0a1_cE5StateVABV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -496,7 +500,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderChainKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderChainKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -525,13 +529,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -546,7 +557,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderChainKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderChainKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderChainKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderChainKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -593,8 +604,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SenderKeyDistributionMessage.html b/Documentation/Structs/SenderKeyDistributionMessage.html index 767ef70..8e73209 100644 --- a/Documentation/Structs/SenderKeyDistributionMessage.html +++ b/Documentation/Structs/SenderKeyDistributionMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderKeyDistributionMessage Struct Reference</title> + <title>SenderKeyDistributionMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderKeyDistributionMessage" class="dashAnchor"></a> - <a title="SenderKeyDistributionMessage Struct Reference"></a> + <a title="SenderKeyDistributionMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderKeyDistributionMessage Struct Reference + SenderKeyDistributionMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyDistributionMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyDistributionMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyDistributionMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderKeyDistributionMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/id" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vv">id</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vvp">id</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderKeyDistributionMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/iteration" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vv">iteration</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vvp">iteration</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVvp">chainKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vvp"></a> <a name="//apple_ref/swift/Property/signatureKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vv">signatureKey</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vvp">signatureKey</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -371,7 +368,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -385,9 +382,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageVACs6UInt32V2id_AE9iteration10Foundation4DataV05chainD0AA06PublicD0V09signatureD0tcfc"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2id9iteration05chainD009signatureD0ACs6UInt32V_AI10Foundation4DataVAA06PublicD0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(id:iteration:chainKey:signatureKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageVACs6UInt32V2id_AE9iteration10Foundation4DataV05chainD0AA06PublicD0V09signatureD0tcfc">init(id:iteration:chainKey:signatureKey:)</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2id9iteration05chainD009signatureD0ACs6UInt32V_AI10Foundation4DataVAA06PublicD0Vtcfc">init(id:iteration:chainKey:signatureKey:)</a> </code> </div> <div class="height-container"> @@ -402,7 +399,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -467,13 +464,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -488,7 +492,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyDistributionMessage</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyDistributionMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyDistributionMessage</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyDistributionMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -533,13 +537,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20buffers"></a> + <a name="//apple_ref/swift/Section/Protocol buffers" class="dashAnchor"></a> + <a href="#/Protocol%20buffers"> + <h3 class="section-name">Protocol buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -554,7 +565,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyDistributionMessage</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyDistributionMessage</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -564,9 +575,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageVAcA0a1_cdeF0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV4fromAcA0a1_cdeF0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageVAcA0a1_cdeF0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV4fromAcA0a1_cdeF0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -586,7 +597,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyDistributionMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyDistributionMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -617,8 +628,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SenderKeyMessage.html b/Documentation/Structs/SenderKeyMessage.html index 4c6ac2e..627b2c0 100644 --- a/Documentation/Structs/SenderKeyMessage.html +++ b/Documentation/Structs/SenderKeyMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderKeyMessage Struct Reference</title> + <title>SenderKeyMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderKeyMessage" class="dashAnchor"></a> - <a title="SenderKeyMessage Struct Reference"></a> + <a title="SenderKeyMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderKeyMessage Struct Reference + SenderKeyMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderKeyMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/keyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vv">keyId</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vvp">keyId</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderKeyMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/iteration" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vv">iteration</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vvp">iteration</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/cipherText" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVv">cipherText</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVvp">cipherText</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/signature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVv">signature</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVvp">signature</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageVACs6UInt32V5keyId_AE9iteration10Foundation4DataV10cipherTextAA07PrivateD0V09signatureD0tKcfc"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV5keyId9iteration10cipherText09signatureD0ACs6UInt32V_AI10Foundation4DataVAA07PrivateD0VtKcfc"></a> <a name="//apple_ref/swift/Method/init(keyId:iteration:cipherText:signatureKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageVACs6UInt32V5keyId_AE9iteration10Foundation4DataV10cipherTextAA07PrivateD0V09signatureD0tKcfc">init(keyId:iteration:cipherText:signatureKey:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV5keyId9iteration10cipherText09signatureD0ACs6UInt32V_AI10Foundation4DataVAA07PrivateD0VtKcfc">init(keyId:iteration:cipherText:signatureKey:)</a> </code> </div> <div class="height-container"> @@ -407,7 +404,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -472,9 +469,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV6verifySbAA06PublicD0V09signatureD0_tKF"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV6verify09signatureD0SbAA06PublicD0V_tKF"></a> <a name="//apple_ref/swift/Method/verify(signatureKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV6verifySbAA06PublicD0V09signatureD0_tKF">verify(signatureKey:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV6verify09signatureD0SbAA06PublicD0V_tKF">verify(signatureKey:)</a> </code> </div> <div class="height-container"> @@ -499,7 +496,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -536,9 +533,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -553,7 +550,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyMessage</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -563,9 +560,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageVAcA0a1_cdE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV4fromAcA0a1_cdE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageVAcA0a1_cdE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV4fromAcA0a1_cdE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -591,7 +588,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -646,7 +643,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -660,9 +657,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -689,7 +686,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -720,8 +717,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SenderMessageKey.html b/Documentation/Structs/SenderMessageKey.html index 7187a03..2eff69d 100644 --- a/Documentation/Structs/SenderMessageKey.html +++ b/Documentation/Structs/SenderMessageKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderMessageKey Struct Reference</title> + <title>SenderMessageKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderMessageKey" class="dashAnchor"></a> - <a title="SenderMessageKey Struct Reference"></a> + <a title="SenderMessageKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderMessageKey Struct Reference + SenderMessageKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderMessageKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderMessageKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderMessageKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderMessageKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/infoMaterial" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvZ">infoMaterial</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvpZ">infoMaterial</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderMessageKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">infoMaterial</span> <span class="o">=</span> <span class="s">"WhisperGroup"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">infoMaterial</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ"></a> <a name="//apple_ref/swift/Variable/ivLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">ivLength</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ">ivLength</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">ivLength</span> <span class="o">=</span> <span class="mi">16</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">ivLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ"></a> <a name="//apple_ref/swift/Variable/cipherKeyLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">cipherKeyLength</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ">cipherKeyLength</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">cipherKeyLength</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">cipherKeyLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ"></a> <a name="//apple_ref/swift/Variable/secretLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">secretLength</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ">secretLength</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">secretLength</span> <span class="o">=</span> <span class="n"><a href="../Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">ivLength</a></span> <span class="o">+</span> <span class="n"><a href="../Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">cipherKeyLength</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">secretLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/iteration" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vv">iteration</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vvp">iteration</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/iv" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVv">iv</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVvp">iv</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/cipherKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVv">cipherKey</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVvp">cipherKey</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">cipherKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">cipherKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -430,9 +427,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/seed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVv">seed</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvp">seed</a> </code> </div> <div class="height-container"> @@ -447,7 +444,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -457,9 +454,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyVACs6UInt32V9iteration_10Foundation4DataV4seedtKcfc"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV9iteration4seedACs6UInt32V_10Foundation4DataVtKcfc"></a> <a name="//apple_ref/swift/Method/init(iteration:seed:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyVACs6UInt32V9iteration_10Foundation4DataV4seedtKcfc">init(iteration:seed:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV9iteration4seedACs6UInt32V_10Foundation4DataVtKcfc">init(iteration:seed:)</a> </code> </div> <div class="height-container"> @@ -479,7 +476,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -520,13 +517,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -541,7 +545,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderMessageKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderMessageKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -551,9 +555,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyVAcA0a1_cE5StateVABV4from_tKcfc"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV4fromAcA0a1_cE5StateVABV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyVAcA0a1_cE5StateVABV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV4fromAcA0a1_cE5StateVABV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -573,7 +577,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderMessageKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderMessageKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -602,13 +606,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Equatable%20protocol"></a> + <a name="//apple_ref/swift/Section/Equatable protocol" class="dashAnchor"></a> + <a href="#/Equatable%20protocol"> + <h3 class="section-name">Equatable protocol</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -623,7 +634,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderMessageKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderMessageKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderMessageKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderMessageKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -670,8 +681,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SessionBuilder.html b/Documentation/Structs/SessionBuilder.html index 3924afc..16f4712 100644 --- a/Documentation/Structs/SessionBuilder.html +++ b/Documentation/Structs/SessionBuilder.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionBuilder Struct Reference</title> + <title>SessionBuilder Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionBuilder" class="dashAnchor"></a> - <a title="SessionBuilder Struct Reference"></a> + <a title="SessionBuilder Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionBuilder Struct Reference + SessionBuilder Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionBuilder</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SessionBuilder</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionBuilder</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -255,9 +252,9 @@ <h1>SessionBuilder</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV5storexv"></a> + <a name="/s:14SignalProtocol14SessionBuilderV5storexvp"></a> <a name="//apple_ref/swift/Property/store" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV5storexv">store</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV5storexvp">store</a> </code> </div> <div class="height-container"> @@ -272,7 +269,7 @@ <h1>SessionBuilder</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> </div> </div> @@ -282,9 +279,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzv"></a> + <a name="/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzvp"></a> <a name="//apple_ref/swift/Property/remoteAddress" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzv">remoteAddress</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzvp">remoteAddress</a> </code> </div> <div class="height-container"> @@ -299,7 +296,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span></code></pre> </div> </div> @@ -309,9 +306,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderVACyxG7AddressQz06remoteE0_x5storetcfc"></a> + <a name="/s:14SignalProtocol14SessionBuilderV13remoteAddress5storeACyxG0F0Qz_xtcfc"></a> <a name="//apple_ref/swift/Method/init(remoteAddress:store:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderVACyxG7AddressQz06remoteE0_x5storetcfc">init(remoteAddress:store:)</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV13remoteAddress5storeACyxG0F0Qz_xtcfc">init(remoteAddress:store:)</a> </code> </div> <div class="height-container"> @@ -326,7 +323,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span><span class="p">,</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span><span class="p">,</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">)</span></code></pre> </div> </div> @@ -367,9 +364,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV7processs6UInt32VSgAA06PreKeyA7MessageV03prehaI0_AA0C6RecordC07sessionK0tKF"></a> + <a name="/s:14SignalProtocol14SessionBuilderV7process06preKeyA7Message13sessionRecords6UInt32VSgAA03PregaH0V_AA0cJ0CtKF"></a> <a name="//apple_ref/swift/Method/process(preKeySignalMessage:sessionRecord:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7processs6UInt32VSgAA06PreKeyA7MessageV03prehaI0_AA0C6RecordC07sessionK0tKF">process(preKeySignalMessage:sessionRecord:)</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7process06preKeyA7Message13sessionRecords6UInt32VSgAA03PregaH0V_AA0cJ0CtKF">process(preKeySignalMessage:sessionRecord:)</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeySignalMessage</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">,</span> <span class="n">sessionRecord</span> <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeySignalMessage</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">,</span> <span class="n">sessionRecord</span> <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> </div> </div> @@ -409,7 +406,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The received <code>PreKeySignalMessage</code>.</p> + <p>The received <code><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></code>.</p> </div> </td> </tr> @@ -426,9 +423,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LLs6UInt32VSgAA06PreKeyA7MessageV03prepaQ2V3_AA0C6RecordC6recordtKF"></a> + <a name="/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LL06preKeyA9MessageV36records6UInt32VSgAA03PreoaP0V_AA0C6RecordCtKF"></a> <a name="//apple_ref/swift/Method/process(preKeySignalMessageV3:record:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LLs6UInt32VSgAA06PreKeyA7MessageV03prepaQ2V3_AA0C6RecordC6recordtKF">process(preKeySignalMessageV3:record:)</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LL06preKeyA9MessageV36records6UInt32VSgAA03PreoaP0V_AA0C6RecordCtKF">process(preKeySignalMessageV3:record:)</a> </code> </div> <div class="height-container"> @@ -448,9 +445,9 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span> - <span class="n">preKeySignalMessageV3</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">,</span> - <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span> + <span class="n">preKeySignalMessageV3</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">,</span> + <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> </div> </div> @@ -466,7 +463,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The received <code>PreKeySignalMessage</code>.</p> + <p>The received <code><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></code>.</p> </div> </td> </tr> @@ -483,9 +480,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV7processyAA0C12PreKeyBundleV03pregH0_tKF"></a> + <a name="/s:14SignalProtocol14SessionBuilderV7process12preKeyBundleyAA0c3PregH0V_tKF"></a> <a name="//apple_ref/swift/Method/process(preKeyBundle:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7processyAA0C12PreKeyBundleV03pregH0_tKF">process(preKeyBundle:)</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7process12preKeyBundleyAA0c3PregH0V_tKF">process(preKeyBundle:)</a> </code> </div> <div class="height-container"> @@ -494,6 +491,15 @@ <h4>Return Value</h4> <div class="pointer"></div> <div class="abstract"> <p>Build a new session from a <code><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></code> retrieved from a server.</p> +<div class="aside aside-note"> + <p class="aside-title">Note</p> + Possible errors: + +</div> +<li><code>untrustedIdentity</code>, the identity key of the bundle is untrusted</li> +<li><code>invalidSignature</code> if the signed pre key signature is invalid</li> +<li><code>storageError</code> if the key stores could not be accessed</li> +<li><code>invalidProtobuf</code> if data is corrupt</li> <div class="aside aside-throws"> <p class="aside-title">Throws</p> <code><a href="../Classes/SignalError.html">SignalError</a></code> errors @@ -505,7 +511,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeyBundle</span> <span class="nv">bundle</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeyBundle</span> <span class="nv">bundle</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -536,8 +542,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SessionCipher.html b/Documentation/Structs/SessionCipher.html index 280e22f..dc6ceaa 100644 --- a/Documentation/Structs/SessionCipher.html +++ b/Documentation/Structs/SessionCipher.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionCipher Struct Reference</title> + <title>SessionCipher Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionCipher" class="dashAnchor"></a> - <a title="SessionCipher Struct Reference"></a> + <a title="SessionCipher Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionCipher Struct Reference + SessionCipher Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionCipher</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionCipher</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionCipher</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -251,9 +248,9 @@ <h3 class="section-name">Variables</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxv"></a> + <a name="/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxvp"></a> <a name="//apple_ref/swift/Property/store" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxv">store</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxvp">store</a> </code> </div> <div class="height-container"> @@ -268,7 +265,7 @@ <h3 class="section-name">Variables</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> </div> </div> @@ -278,9 +275,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzv"></a> + <a name="/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzvp"></a> <a name="//apple_ref/swift/Property/remoteAddress" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzv">remoteAddress</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzvp">remoteAddress</a> </code> </div> <div class="height-container"> @@ -295,7 +292,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span></code></pre> </div> </div> @@ -316,9 +313,9 @@ <h3 class="section-name">Initialization</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherVACyxGx5store_7AddressQz06remoteF0tcfc"></a> + <a name="/s:14SignalProtocol13SessionCipherV5store13remoteAddressACyxGx_0G0Qztcfc"></a> <a name="//apple_ref/swift/Method/init(store:remoteAddress:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherVACyxGx5store_7AddressQz06remoteF0tcfc">init(store:remoteAddress:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV5store13remoteAddressACyxGx_0G0Qztcfc">init(store:remoteAddress:)</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h3 class="section-name">Initialization</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span><span class="p">)</span></code></pre> </div> </div> @@ -396,9 +393,9 @@ <h3 class="section-name">Public functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF"></a> <a name="//apple_ref/swift/Method/encrypt(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF">encrypt(_:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF">encrypt(_:)</a> </code> </div> <div class="height-container"> @@ -418,7 +415,7 @@ <h3 class="section-name">Public functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -451,9 +448,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0D11TextMessageVKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypty10Foundation4DataVAA0D11TextMessageVKF"></a> <a name="//apple_ref/swift/Method/decrypt(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0D11TextMessageVKF">decrypt(_:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypty10Foundation4DataVAA0D11TextMessageVKF">decrypt(_:)</a> </code> </div> <div class="height-container"> @@ -480,7 +477,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -490,9 +487,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA06PreKeyA7MessageV03preiaJ0_tKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypt06preKeyA7Message10Foundation4DataVAA03PregaH0V_tKF"></a> <a name="//apple_ref/swift/Method/decrypt(preKeySignalMessage:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA06PreKeyA7MessageV03preiaJ0_tKF">decrypt(preKeySignalMessage:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt06preKeyA7Message10Foundation4DataVAA03PregaH0V_tKF">decrypt(preKeySignalMessage:)</a> </code> </div> <div class="height-container"> @@ -522,7 +519,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">preKeySignalMessage</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">preKeySignalMessage</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -555,9 +552,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0A7MessageV06signalH0_tKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypt13signalMessage10Foundation4DataVAA0aG0V_tKF"></a> <a name="//apple_ref/swift/Method/decrypt(signalMessage:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0A7MessageV06signalH0_tKF">decrypt(signalMessage:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt13signalMessage10Foundation4DataVAA0aG0V_tKF">decrypt(signalMessage:)</a> </code> </div> <div class="height-container"> @@ -585,7 +582,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">signalMessage</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">signalMessage</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -618,9 +615,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7processyAA0C12PreKeyBundleV03pregH0_tKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7process12preKeyBundleyAA0c3PregH0V_tKF"></a> <a name="//apple_ref/swift/Method/process(preKeyBundle:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7processyAA0C12PreKeyBundleV03pregH0_tKF">process(preKeyBundle:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7process12preKeyBundleyAA0c3PregH0V_tKF">process(preKeyBundle:)</a> </code> </div> <div class="height-container"> @@ -640,7 +637,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeyBundle</span> <span class="nv">bundle</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeyBundle</span> <span class="nv">bundle</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -693,7 +690,7 @@ <h3 class="section-name">Private functions</h3> <p>Load the session record for the remote address</p> <div class="aside aside-throws"> <p class="aside-title">Throws</p> - <code><a href="../Classes/SignalError.html">SignalError</a></code>of type <code>storageError</code> + <code><a href="../Classes/SignalError.html">SignalError</a></code> of type <code>storageError</code> </div> @@ -702,7 +699,7 @@ <h3 class="section-name">Private functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">loadSession</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">loadSession</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span></code></pre> </div> </div> @@ -716,9 +713,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C6RecordC4from_AA0A7MessageV3andtKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C6RecordC_AA0A7MessageVtKF"></a> <a name="//apple_ref/swift/Method/decrypt(from:and:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C6RecordC4from_AA0A7MessageV3andtKF">decrypt(from:and:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C6RecordC_AA0A7MessageVtKF">decrypt(from:and:)</a> </code> </div> <div class="height-container"> @@ -738,7 +735,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">from</span> <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">signalMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">from</span> <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">signalMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -754,7 +751,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The <code>SessionRecord</code> containing the sessions</p> + <p>The <code><a href="../Classes/SessionRecord.html">SessionRecord</a></code> containing the sessions</p> </div> </td> </tr> @@ -783,9 +780,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C5StateC4from_AA0A7MessageV3andtKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C5StateC_AA0A7MessageVtKF"></a> <a name="//apple_ref/swift/Method/decrypt(from:and:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C5StateC4from_AA0A7MessageV3andtKF">decrypt(from:and:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C5StateC_AA0A7MessageVtKF">decrypt(from:and:)</a> </code> </div> <div class="height-container"> @@ -805,7 +802,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">from</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">signalMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">from</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">signalMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -821,7 +818,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The <code>SessionState</code> to try</p> + <p>The <code><a href="../Classes/SessionState.html">SessionState</a></code> to try</p> </div> </td> </tr> @@ -850,9 +847,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA9PublicKeyV14theirEphemeralAA0t5ChainX0V05chainX0s6UInt32V7countertKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeral8chainKey7counterAA07RatchethI0VAA0C5StateC_AA06PublicX0VAA0z5ChainX0Vs6UInt32VtKF"></a> <a name="//apple_ref/swift/Method/getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA9PublicKeyV14theirEphemeralAA0t5ChainX0V05chainX0s6UInt32V7countertKF">getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeral8chainKey7counterAA07RatchethI0VAA0C5StateC_AA06PublicX0VAA0z5ChainX0Vs6UInt32VtKF">getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)</a> </code> </div> <div class="height-container"> @@ -872,11 +869,11 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getOrCreateMessageKeys</span><span class="p">(</span> - <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> - <span class="nv">theirEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> - <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getOrCreateMessageKeys</span><span class="p">(</span> + <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> + <span class="nv">theirEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> + <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span></code></pre> </div> </div> @@ -945,9 +942,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA06PublicI0V14theirEphemeraltKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeralAA07RatchethI0VAA0C5StateC_AA06PublicI0VtKF"></a> <a name="//apple_ref/swift/Method/getOrCreateChainKey(state:theirEphemeral:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA06PublicI0V14theirEphemeraltKF">getOrCreateChainKey(state:theirEphemeral:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeralAA07RatchethI0VAA0C5StateC_AA06PublicI0VtKF">getOrCreateChainKey(state:theirEphemeral:)</a> </code> </div> <div class="height-container"> @@ -967,7 +964,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getOrCreateChainKey</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> <span class="nv">theirEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getOrCreateChainKey</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> <span class="nv">theirEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> </div> </div> @@ -1012,9 +1009,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH9plaintexttKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys9plaintext10Foundation4DataVAA014RatchetMessageR0V_AJtKF"></a> <a name="//apple_ref/swift/Method/getCiphertext(messageKeys:plaintext:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH9plaintexttKF">getCiphertext(messageKeys:plaintext:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys9plaintext10Foundation4DataVAA014RatchetMessageR0V_AJtKF">getCiphertext(messageKeys:plaintext:)</a> </code> </div> <div class="height-container"> @@ -1034,7 +1031,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getCiphertext</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="nv">plaintext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getCiphertext</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="nv">plaintext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -1079,9 +1076,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH10ciphertexttKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys10ciphertext10Foundation4DataVAA014RatchetMessageR0V_AJtKF"></a> <a name="//apple_ref/swift/Method/getPlaintext(messageKeys:ciphertext:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH10ciphertexttKF">getPlaintext(messageKeys:ciphertext:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys10ciphertext10Foundation4DataVAA014RatchetMessageR0V_AJtKF">getPlaintext(messageKeys:ciphertext:)</a> </code> </div> <div class="height-container"> @@ -1101,7 +1098,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getPlaintext</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getPlaintext</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -1148,8 +1145,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SessionPreKey.html b/Documentation/Structs/SessionPreKey.html index a3ec933..3342ec3 100644 --- a/Documentation/Structs/SessionPreKey.html +++ b/Documentation/Structs/SessionPreKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionPreKey Struct Reference</title> + <title>SessionPreKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionPreKey" class="dashAnchor"></a> - <a title="SessionPreKey Struct Reference"></a> + <a title="SessionPreKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionPreKey Struct Reference + SessionPreKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionPreKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionPreKey</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>SessionPreKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvZ"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvpZ"></a> <a name="//apple_ref/swift/Variable/mediumMaxValue" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvZ">mediumMaxValue</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvpZ">mediumMaxValue</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>SessionPreKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">mediumMaxValue</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="o">=</span> <span class="mh">0xFFFFFF</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">mediumMaxValue</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVv"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVvp"></a> <a name="//apple_ref/swift/Property/publicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVv">publicKey</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVvp">publicKey</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a></span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vv"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vvp"></a> <a name="//apple_ref/swift/Property/privateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vv">privateKey</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vvp">privateKey</a> </code> </div> <div class="height-container"> @@ -313,7 +310,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> </div> </div> @@ -323,9 +320,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyVACs6UInt32V2id_AA0E4PairV03keyH0tcfc"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV2id7keyPairACs6UInt32V_AA0eH0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(id:keyPair:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyVACs6UInt32V2id_AA0E4PairV03keyH0tcfc">init(id:keyPair:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV2id7keyPairACs6UInt32V_AA0eH0Vtcfc">init(id:keyPair:)</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> </div> </div> @@ -381,9 +378,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyVACs6UInt32V5index_tKcfc"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV5indexACs6UInt32V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(index:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyVACs6UInt32V5index_tKcfc">init(index:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV5indexACs6UInt32V_tKcfc">init(index:)</a> </code> </div> <div class="height-container"> @@ -410,7 +407,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -439,9 +436,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vv"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vvp"></a> <a name="//apple_ref/swift/Property/keyPair" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vv">keyPair</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vvp">keyPair</a> </code> </div> <div class="height-container"> @@ -456,7 +453,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -466,13 +463,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vv"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -487,7 +491,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -497,9 +501,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyVAcA0a1_dE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV4fromAcA0a1_dE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyVAcA0a1_dE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV4fromAcA0a1_dE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -519,7 +523,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -550,8 +554,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SessionPreKeyBundle.html b/Documentation/Structs/SessionPreKeyBundle.html index b15163a..580b6eb 100644 --- a/Documentation/Structs/SessionPreKeyBundle.html +++ b/Documentation/Structs/SessionPreKeyBundle.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionPreKeyBundle Struct Reference</title> + <title>SessionPreKeyBundle Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionPreKeyBundle" class="dashAnchor"></a> - <a title="SessionPreKeyBundle Struct Reference"></a> + <a title="SessionPreKeyBundle Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionPreKeyBundle Struct Reference + SessionPreKeyBundle Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionPreKeyBundle</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyBundle</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyBundle</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SessionPreKeyBundle</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/preKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vv">preKeyId</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vvp">preKeyId</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SessionPreKeyBundle</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgvp"></a> <a name="//apple_ref/swift/Property/preKeyPublic" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgv">preKeyPublic</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgvp">preKeyPublic</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">preKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">preKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vv">signedPreKeyId</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vvp">signedPreKeyId</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyPublic" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vv">signedPreKeyPublic</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vvp">signedPreKeyPublic</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/signedPreKeySignature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVv">signedPreKeySignature</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVvp">signedPreKeySignature</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeySignature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeySignature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vvp"></a> <a name="//apple_ref/swift/Property/identityKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vv">identityKey</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vvp">identityKey</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleVACs6UInt32V03preE2Id_AA06PublicE0VSg0heJ0AE06signeddeI0AH0kdeJ010Foundation4DataV0kdE9SignatureAH08identityE0tcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE2Id0gE6Public06signeddeH00jdeI00jdE9Signature08identityE0ACs6UInt32V_AA0iE0VSgAkM10Foundation4DataVAMtcfc"></a> <a name="//apple_ref/swift/Method/init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleVACs6UInt32V03preE2Id_AA06PublicE0VSg0heJ0AE06signeddeI0AH0kdeJ010Foundation4DataV0kdE9SignatureAH08identityE0tcfc">init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Id0gE6Public06signeddeH00jdeI00jdE9Signature08identityE0ACs6UInt32V_AA0iE0VSgAkM10Foundation4DataVAMtcfc">init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)</a> </code> </div> <div class="height-container"> @@ -420,13 +417,13 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> - <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">preKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?,</span> - <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">signedPreKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">signedPreKeySignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span> + <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">preKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?,</span> + <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">signedPreKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">signedPreKeySignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -527,9 +524,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleVAcA0cdE6PublicV03preE0_AA0c6SigneddeG0V06signeddE0AA0gE0V08identityE0tcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AcA0cdE6PublicV_AA0c6SigneddeJ0VAA0jE0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(preKey:signedPreKey:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleVAcA0cdE6PublicV03preE0_AA0c6SigneddeG0V06signeddE0AA0gE0V08identityE0tcfc">init(preKey:signedPreKey:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AcA0cdE6PublicV_AA0c6SigneddeJ0VAA0jE0Vtcfc">init(preKey:signedPreKey:identityKey:)</a> </code> </div> <div class="height-container"> @@ -544,9 +541,9 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a></span><span class="p">,</span> - <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a></span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a></span><span class="p">,</span> + <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a></span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -611,9 +608,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleVAC10Foundation4DataV03preE0_AF06signeddE0AF08identityE0tKcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AC10Foundation4DataV_A2ItKcfc"></a> <a name="//apple_ref/swift/Method/init(preKey:signedPreKey:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleVAC10Foundation4DataV03preE0_AF06signeddE0AF08identityE0tKcfc">init(preKey:signedPreKey:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AC10Foundation4DataV_A2ItKcfc">init(preKey:signedPreKey:identityKey:)</a> </code> </div> <div class="height-container"> @@ -628,9 +625,9 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -685,8 +682,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SessionPreKeyPublic.html b/Documentation/Structs/SessionPreKeyPublic.html index edd6a82..3b135da 100644 --- a/Documentation/Structs/SessionPreKeyPublic.html +++ b/Documentation/Structs/SessionPreKeyPublic.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionPreKeyPublic Struct Reference</title> + <title>SessionPreKeyPublic Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionPreKeyPublic" class="dashAnchor"></a> - <a title="SessionPreKeyPublic Struct Reference"></a> + <a title="SessionPreKeyPublic Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionPreKeyPublic Struct Reference + SessionPreKeyPublic Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionPreKeyPublic</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyPublic</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionPreKeyPublic</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>SessionPreKeyPublic</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/id" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vv">id</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vvp">id</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>SessionPreKeyPublic</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vv">key</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vvp">key</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicVACs6UInt32V2id_AA0fE0V3keytcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV2id3keyACs6UInt32V_AA0fE0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(id:key:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicVACs6UInt32V2id_AA0fE0V3keytcfc">init(id:key:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV2id3keyACs6UInt32V_AA0fE0Vtcfc">init(id:key:)</a> </code> </div> <div class="height-container"> @@ -313,7 +310,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -354,13 +351,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -375,7 +379,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="o">.</span><span class="kt">PublicPart</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="o">.</span><span class="kt">PublicPart</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -385,9 +389,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicVAcA0a1_dE0V0F4PartV4from_tKcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV4fromAcA0a1_dE0V0F4PartV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicVAcA0a1_dE0V0F4PartV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV4fromAcA0a1_dE0V0F4PartV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -407,7 +411,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="o">.</span><span class="kt">PublicPart</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="o">.</span><span class="kt">PublicPart</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -438,8 +442,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SessionSignedPreKey.html b/Documentation/Structs/SessionSignedPreKey.html index e6d52cf..1a2d921 100644 --- a/Documentation/Structs/SessionSignedPreKey.html +++ b/Documentation/Structs/SessionSignedPreKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionSignedPreKey Struct Reference</title> + <title>SessionSignedPreKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionSignedPreKey" class="dashAnchor"></a> - <a title="SessionSignedPreKey Struct Reference"></a> + <a title="SessionSignedPreKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionSignedPreKey Struct Reference + SessionSignedPreKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionSignedPreKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionSignedPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionSignedPreKey</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SessionSignedPreKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVv"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVvp"></a> <a name="//apple_ref/swift/Property/publicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVv">publicKey</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVvp">publicKey</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>SessionSignedPreKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a></span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vv"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vvp"></a> <a name="//apple_ref/swift/Property/privateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vv">privateKey</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vvp">privateKey</a> </code> </div> <div class="height-container"> @@ -287,7 +284,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> </div> </div> @@ -297,9 +294,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_s6UInt64V9timestampAA0F4PairV03keyK010Foundation4DataV9signaturetcfc"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV2id9timestamp7keyPair9signatureACs6UInt32V_s6UInt64VAA0fJ0V10Foundation4DataVtcfc"></a> <a name="//apple_ref/swift/Method/init(id:timestamp:keyPair:signature:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_s6UInt64V9timestampAA0F4PairV03keyK010Foundation4DataV9signaturetcfc">init(id:timestamp:keyPair:signature:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV2id9timestamp7keyPair9signatureACs6UInt32V_s6UInt64VAA0fJ0V10Foundation4DataVtcfc">init(id:timestamp:keyPair:signature:)</a> </code> </div> <div class="height-container"> @@ -314,7 +311,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">,</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">,</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -379,9 +376,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_AA07PrivateF0V09signatureF0s6UInt64V9timestamptKcfc"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV2id09signatureF09timestampACs6UInt32V_AA07PrivateF0Vs6UInt64VtKcfc"></a> <a name="//apple_ref/swift/Method/init(id:signatureKey:timestamp:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_AA07PrivateF0V09signatureF0s6UInt64V9timestamptKcfc">init(id:signatureKey:timestamp:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV2id09signatureF09timestampACs6UInt32V_AA07PrivateF0Vs6UInt64VtKcfc">init(id:signatureKey:timestamp:)</a> </code> </div> <div class="height-container"> @@ -405,7 +402,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -470,9 +467,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vv"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vvp"></a> <a name="//apple_ref/swift/Property/keyPair" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vv">keyPair</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vvp">keyPair</a> </code> </div> <div class="height-container"> @@ -487,7 +484,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -497,13 +494,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vv"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -518,7 +522,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -528,9 +532,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyVAcA0a1_deF0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV4fromAcA0a1_deF0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyVAcA0a1_deF0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV4fromAcA0a1_deF0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -550,7 +554,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -579,13 +583,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -600,7 +611,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -616,8 +627,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SessionSignedPreKeyPublic.html b/Documentation/Structs/SessionSignedPreKeyPublic.html index 5f8f931..449df33 100644 --- a/Documentation/Structs/SessionSignedPreKeyPublic.html +++ b/Documentation/Structs/SessionSignedPreKeyPublic.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionSignedPreKeyPublic Struct Reference</title> + <title>SessionSignedPreKeyPublic Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionSignedPreKeyPublic" class="dashAnchor"></a> - <a title="SessionSignedPreKeyPublic Struct Reference"></a> + <a title="SessionSignedPreKeyPublic Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionSignedPreKeyPublic Struct Reference + SessionSignedPreKeyPublic Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionSignedPreKeyPublic</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionSignedPreKeyPublic</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionSignedPreKeyPublic</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SessionSignedPreKeyPublic</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/id" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vv">id</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vvp">id</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>SessionSignedPreKeyPublic</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vv">key</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vvp">key</a> </code> </div> <div class="height-container"> @@ -287,7 +284,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -297,9 +294,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vvp"></a> <a name="//apple_ref/swift/Property/timestamp" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vv">timestamp</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vvp">timestamp</a> </code> </div> <div class="height-container"> @@ -314,7 +311,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span></code></pre> </div> </div> @@ -324,9 +321,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/signature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVv">signature</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVvp">signature</a> </code> </div> <div class="height-container"> @@ -341,7 +338,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -351,9 +348,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicVACs6UInt32V2id_s6UInt64V9timestampAA0gF0V3key10Foundation4DataV9signaturetcfc"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2id9timestamp3key9signatureACs6UInt32V_s6UInt64VAA0gF0V10Foundation4DataVtcfc"></a> <a name="//apple_ref/swift/Method/init(id:timestamp:key:signature:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicVACs6UInt32V2id_s6UInt64V9timestampAA0gF0V3key10Foundation4DataV9signaturetcfc">init(id:timestamp:key:signature:)</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2id9timestamp3key9signatureACs6UInt32V_s6UInt64VAA0gF0V10Foundation4DataVtcfc">init(id:timestamp:key:signature:)</a> </code> </div> <div class="height-container"> @@ -368,7 +365,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -430,16 +427,54 @@ <h4>Parameters</h4> </section> </div> </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV6verify4withSbAA0gF0V_tF"></a> + <a name="//apple_ref/swift/Method/verify(with:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV6verify4withSbAA0gF0V_tF">verify(with:)</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Verify that the signed key is valid.</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="n">with</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + + </div> + </div> + <div> + <h4>Return Value</h4> + <p><code>true</code> if the signature is valid</p> + </div> + </section> + </div> + </li> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -454,7 +489,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="o">.</span><span class="kt">PublicPart</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="o">.</span><span class="kt">PublicPart</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -464,9 +499,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicVAcA0a1_deF0V0G4PartV4from_tKcfc"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV4fromAcA0a1_deF0V0G4PartV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicVAcA0a1_deF0V0G4PartV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV4fromAcA0a1_deF0V0G4PartV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -486,7 +521,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="o">.</span><span class="kt">PublicPart</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="o">.</span><span class="kt">PublicPart</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -515,13 +550,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -536,7 +578,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKeyPublic</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKeyPublic</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKeyPublic</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKeyPublic</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -552,8 +594,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SignalCommonCrypto.html b/Documentation/Structs/SignalCommonCrypto.html index 2061aa2..ba09b37 100644 --- a/Documentation/Structs/SignalCommonCrypto.html +++ b/Documentation/Structs/SignalCommonCrypto.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalCommonCrypto Struct Reference</title> + <title>SignalCommonCrypto Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SignalCommonCrypto" class="dashAnchor"></a> - <a title="SignalCommonCrypto Struct Reference"></a> + <a title="SignalCommonCrypto Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalCommonCrypto Struct Reference + SignalCommonCrypto Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalCommonCrypto</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCommonCrypto</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCommonCrypto</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> </div> </div> @@ -249,9 +246,9 @@ <h3 class="section-name">Protocol SignalCryptoProvider</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV6random10Foundation4DataVSi5bytes_tKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV6random5bytes10Foundation4DataVSi_tKF"></a> <a name="//apple_ref/swift/Method/random(bytes:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV6random10Foundation4DataVSi5bytes_tKF">random(bytes:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV6random5bytes10Foundation4DataVSi_tKF">random(bytes:)</a> </code> </div> <div class="height-container"> @@ -271,7 +268,7 @@ <h3 class="section-name">Protocol SignalCryptoProvider</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -304,9 +301,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItF"></a> <a name="//apple_ref/swift/Method/hmacSHA256(for:with:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtF">hmacSHA256(for:with:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItF">hmacSHA256(for:with:)</a> </code> </div> <div class="height-container"> @@ -321,7 +318,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -366,9 +363,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV6sha51210Foundation4DataVAG3for_tKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV6sha5123for10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/sha512(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV6sha51210Foundation4DataVAG3for_tKF">sha512(for:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV6sha5123for10Foundation4DataVAH_tKF">sha512(for:)</a> </code> </div> <div class="height-container"> @@ -388,7 +385,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -421,9 +418,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF"></a> <a name="//apple_ref/swift/Method/encrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF">encrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF">encrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -443,7 +440,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -483,7 +480,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The key for encryption (<code>kCCKeySizeAES128</code> bytes)</p> + <p>The key for encryption (<code>kCCKeySizeAES256</code> bytes)</p> </div> </td> </tr> @@ -495,7 +492,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The initialization vector</p> + <p>The initialization vector (<code>kCCBlockSizeAES128</code> bytes)</p> </div> </td> </tr> @@ -512,9 +509,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF"></a> <a name="//apple_ref/swift/Method/decrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF">decrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF">decrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -534,7 +531,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -574,7 +571,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The key for decryption (<code>kCCKeySizeAES128</code> bytes)</p> + <p>The key for decryption (<code>kCCKeySizeAES256</code> bytes)</p> </div> </td> </tr> @@ -586,7 +583,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The initialization vector</p> + <p>The initialization vector (<code>kCCBlockSizeAES128</code> bytes)</p> </div> </td> </tr> @@ -614,9 +611,9 @@ <h3 class="section-name">Encryption helper functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3cbc_AH3keyAH2ivSb7encrypttKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3cbc3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF"></a> <a name="//apple_ref/swift/Method/process(cbc:key:iv:encrypt:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3cbc_AH3keyAH2ivSb7encrypttKF">process(cbc:key:iv:encrypt:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3cbc3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF">process(cbc:key:iv:encrypt:)</a> </code> </div> <div class="height-container"> @@ -636,7 +633,7 @@ <h3 class="section-name">Encryption helper functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">cbc</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">encrypt</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">cbc</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">encrypt</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -705,9 +702,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF"></a> <a name="//apple_ref/swift/Method/encrypt(ctr:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF">encrypt(ctr:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF">encrypt(ctr:key:iv:)</a> </code> </div> <div class="height-container"> @@ -727,7 +724,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -784,9 +781,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF"></a> <a name="//apple_ref/swift/Method/decrypt(ctr:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF">decrypt(ctr:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF">decrypt(ctr:key:iv:)</a> </code> </div> <div class="height-container"> @@ -806,7 +803,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -863,9 +860,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivSb7encrypttKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF"></a> <a name="//apple_ref/swift/Method/process(ctr:key:iv:encrypt:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivSb7encrypttKF">process(ctr:key:iv:encrypt:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF">process(ctr:key:iv:encrypt:)</a> </code> </div> <div class="height-container"> @@ -885,7 +882,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">encrypt</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">encrypt</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -954,9 +951,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVSv4from_Si5counttF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL4from5count10Foundation4DataVSv_SitF"></a> <a name="//apple_ref/swift/Method/toArray(from:count:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVSv4from_Si5counttF">toArray(from:count:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL4from5count10Foundation4DataVSv_SitF">toArray(from:count:)</a> </code> </div> <div class="height-container"> @@ -971,7 +968,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">(</span><span class="n">from</span> <span class="nv">ptr</span><span class="p">:</span> <span class="kt">UnsafeMutableRawPointer</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">(</span><span class="n">from</span> <span class="nv">ptr</span><span class="p">:</span> <span class="kt">UnsafeMutableRawPointer</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -1033,7 +1030,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span></code></pre> </div> </div> @@ -1045,8 +1042,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SignalCrypto.html b/Documentation/Structs/SignalCrypto.html index 36f18b9..f18fe28 100644 --- a/Documentation/Structs/SignalCrypto.html +++ b/Documentation/Structs/SignalCrypto.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalCrypto Struct Reference</title> + <title>SignalCrypto Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SignalCrypto" class="dashAnchor"></a> - <a title="SignalCrypto Struct Reference"></a> + <a title="SignalCrypto Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalCrypto Struct Reference + SignalCrypto Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalCrypto</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCrypto</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCrypto</span></code></pre> </div> </div> @@ -252,9 +249,9 @@ <h3 class="section-name">Public crypto provider functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvpZ"></a> <a name="//apple_ref/swift/Variable/provider" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvZ">provider</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvpZ">provider</a> </code> </div> <div class="height-container"> @@ -269,7 +266,7 @@ <h3 class="section-name">Public crypto provider functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">var</span> <span class="nv">provider</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span> <span class="o">=</span> <span class="kt"><a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a></span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">var</span> <span class="nv">provider</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> </div> </div> @@ -279,9 +276,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV6random10Foundation4DataVSi5bytes_tKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV6random5bytes10Foundation4DataVSi_tKFZ"></a> <a name="//apple_ref/swift/Method/random(bytes:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV6random10Foundation4DataVSi5bytes_tKFZ">random(bytes:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV6random5bytes10Foundation4DataVSi_tKFZ">random(bytes:)</a> </code> </div> <div class="height-container"> @@ -301,7 +298,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -315,9 +312,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItKFZ"></a> <a name="//apple_ref/swift/Method/hmacSHA256(for:with:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtKFZ">hmacSHA256(for:with:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItKFZ">hmacSHA256(for:with:)</a> </code> </div> <div class="height-container"> @@ -326,7 +323,6 @@ <h4>Return Value</h4> <div class="pointer"></div> <div class="abstract"> <p>Authenticate a message with the HMAC based on SHA256.</p> -<li>salt: The salt for the HMAC.</li> <div class="aside aside-throws"> <p class="aside-title">Throws</p> Should only throw errors of type <code>SignalError.hmacError</code> @@ -338,7 +334,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -358,6 +354,18 @@ <h4>Parameters</h4> </div> </td> </tr> + <tr> + <td> + <code> + <em>salt</em> + </code> + </td> + <td> + <div> + <p>The salt for the HMAC.</p> + </div> + </td> + </tr> </tbody> </table> </div> @@ -371,9 +379,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV6sha51210Foundation4DataVAG3for_tKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV6sha5123for10Foundation4DataVAH_tKFZ"></a> <a name="//apple_ref/swift/Method/sha512(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV6sha51210Foundation4DataVAG3for_tKFZ">sha512(for:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV6sha5123for10Foundation4DataVAH_tKFZ">sha512(for:)</a> </code> </div> <div class="height-container"> @@ -393,7 +401,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -426,9 +434,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ"></a> <a name="//apple_ref/swift/Method/encrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ">encrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ">encrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -448,7 +456,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -476,7 +484,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The encryption type to use, see <code>SignalEncryptionScheme</code></p> + <p>The encryption type to use, see <code><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></code></p> </div> </td> </tr> @@ -517,9 +525,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ"></a> <a name="//apple_ref/swift/Method/decrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ">decrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ">decrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -539,7 +547,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -567,7 +575,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The encryption type to use, see <code>SignalEncryptionScheme</code></p> + <p>The encryption type to use, see <code><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></code></p> </div> </td> </tr> @@ -643,7 +651,7 @@ <h3 class="section-name">Useful helper functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateIdentityKeyPair</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateIdentityKeyPair</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -657,9 +665,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV15generatePreKeysSayAA07SessionE3KeyVGs6UInt32V5start_Si5counttKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV15generatePreKeys5start5countSayAA07SessionE3KeyVGs6UInt32V_SitKFZ"></a> <a name="//apple_ref/swift/Method/generatePreKeys(start:count:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV15generatePreKeysSayAA07SessionE3KeyVGs6UInt32V5start_Si5counttKFZ">generatePreKeys(start:count:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV15generatePreKeys5start5countSayAA07SessionE3KeyVGs6UInt32V_SitKFZ">generatePreKeys(start:count:)</a> </code> </div> <div class="height-container"> @@ -699,7 +707,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">generatePreKeys</span><span class="p">(</span><span class="nv">start</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt"><a href="../Structs/SessionPreKey.html">SessionPreKey</a></span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generatePreKeys</span><span class="p">(</span><span class="nv">start</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt"><a href="../Structs/SessionPreKey.html">SessionPreKey</a></span><span class="p">]</span></code></pre> </div> </div> @@ -744,9 +752,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV20generateSignedPreKeyAA07SessionefG0VAA07PrivateG0V08identityG0_s6UInt32V2ids6UInt64V9timestamptKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV20generateSignedPreKey08identityG02id9timestampAA07SessionefG0VAA07PrivateG0V_s6UInt32Vs6UInt64VtKFZ"></a> <a name="//apple_ref/swift/Method/generateSignedPreKey(identityKey:id:timestamp:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV20generateSignedPreKeyAA07SessionefG0VAA07PrivateG0V08identityG0_s6UInt32V2ids6UInt64V9timestamptKFZ">generateSignedPreKey(identityKey:id:timestamp:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV20generateSignedPreKey08identityG02id9timestampAA07SessionefG0VAA07PrivateG0V_s6UInt32Vs6UInt64VtKFZ">generateSignedPreKey(identityKey:id:timestamp:)</a> </code> </div> <div class="height-container"> @@ -775,7 +783,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSignedPreKey</span><span class="p">(</span><span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">,</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span> <span class="o">=</span> <span class="kt">UInt64</span><span class="p">(</span><span class="kt">Date</span><span class="p">()</span><span class="o">.</span><span class="n">timeIntervalSince1970</span><span class="p">))</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSignedPreKey</span><span class="p">(</span><span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">,</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span> <span class="o">=</span> <span class="kt">UInt64</span><span class="p">(</span><span class="kt">Date</span><span class="p">()</span><span class="o">.</span><span class="n">timeIntervalSince1970</span><span class="p">))</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a></span></code></pre> </div> </div> @@ -850,7 +858,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderKeyId</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderKeyId</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -886,7 +894,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -924,7 +932,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderSigningKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderSigningKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -955,7 +963,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="nf">init</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="nf">init</span><span class="p">()</span></code></pre> </div> </div> @@ -967,8 +975,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SignalMessage.html b/Documentation/Structs/SignalMessage.html index 732883f..14d7ae6 100644 --- a/Documentation/Structs/SignalMessage.html +++ b/Documentation/Structs/SignalMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalMessage Struct Reference</title> + <title>SignalMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SignalMessage" class="dashAnchor"></a> - <a title="SignalMessage Struct Reference"></a> + <a title="SignalMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalMessage Struct Reference + SignalMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SignalMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV9macLengthSivZ"></a> + <a name="/s:14SignalProtocol0A7MessageV9macLengthSivpZ"></a> <a name="//apple_ref/swift/Variable/macLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV9macLengthSivZ">macLength</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV9macLengthSivpZ">macLength</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SignalMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">macLength</span> <span class="o">=</span> <span class="mi">8</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">macLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vv"></a> + <a name="/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vvp"></a> <a name="//apple_ref/swift/Property/senderRatchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vv">senderRatchetKey</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vvp">senderRatchetKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">senderRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">senderRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV7counters6UInt32Vv"></a> + <a name="/s:14SignalProtocol0A7MessageV7counters6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/counter" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV7counters6UInt32Vv">counter</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV7counters6UInt32Vvp">counter</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vv"></a> + <a name="/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/previousCounter" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vv">previousCounter</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vvp">previousCounter</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/cipherText" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVv">cipherText</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVvp">cipherText</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/mac" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVv">mac</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVvp">mac</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageVAC10Foundation4DataV6macKey_AA06PublicG0V013senderRatchetG0s6UInt32V7counterAL15previousCounterAF10cipherTextAI0i8IdentityG0AI08receiverqG0tKcfc"></a> + <a name="/s:14SignalProtocol0A7MessageV6macKey013senderRatchetE07counter15previousCounter10cipherText0f8IdentityE008receivermE0AC10Foundation4DataV_AA06PublicE0Vs6UInt32VAqm2OtKcfc"></a> <a name="//apple_ref/swift/Method/init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageVAC10Foundation4DataV6macKey_AA06PublicG0V013senderRatchetG0s6UInt32V7counterAL15previousCounterAF10cipherTextAI0i8IdentityG0AI08receiverqG0tKcfc">init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV6macKey013senderRatchetE07counter15previousCounter10cipherText0f8IdentityE008receivermE0AC10Foundation4DataV_AA06PublicE0Vs6UInt32VAqm2OtKcfc">init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)</a> </code> </div> <div class="height-container"> @@ -426,13 +423,13 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">senderRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">senderRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -533,9 +530,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL10Foundation4DataVAA9PublicKeyV014senderIdentityQ0_AJ08receiversQ0AH03macQ0AH7messagetKF"></a> + <a name="/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL17senderIdentityKey08receiveroP003macP07message10Foundation4DataVAA06PublicP0V_An2LtKF"></a> <a name="//apple_ref/swift/Method/getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL10Foundation4DataVAA9PublicKeyV014senderIdentityQ0_AJ08receiversQ0AH03macQ0AH7messagetKF">getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL17senderIdentityKey08receiveroP003macP07message10Foundation4DataVAA06PublicP0V_An2LtKF">getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)</a> </code> </div> <div class="height-container"> @@ -543,7 +540,7 @@ <h4>Parameters</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Calculate the MAC of the message. The length of the MAC is specified by <code><a href="../Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivZ">SignalMessage.macLength</a></code></p> + <p>Calculate the MAC of the message. The length of the MAC is specified by <code><a href="../Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivpZ">SignalMessage.macLength</a></code></p> <div class="aside aside-throws"> <p class="aside-title">Throws</p> <code><a href="../Classes/SignalError.html">SignalError</a></code> of type <code>hmacError</code>, if the message HMAC could not be calculated @@ -555,10 +552,10 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getMac</span><span class="p">(</span><span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getMac</span><span class="p">(</span><span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -627,9 +624,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV9verifyMacSbAA9PublicKeyV014senderIdentityG0_AF08receiveriG010Foundation4DataV03macG0tKF"></a> + <a name="/s:14SignalProtocol0A7MessageV9verifyMac17senderIdentityKey08receivergH003macH0SbAA06PublicH0V_AI10Foundation4DataVtKF"></a> <a name="//apple_ref/swift/Method/verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV9verifyMacSbAA9PublicKeyV014senderIdentityG0_AF08receiveriG010Foundation4DataV03macG0tKF">verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV9verifyMac17senderIdentityKey08receivergH003macH0SbAA06PublicH0V_AI10Foundation4DataVtKF">verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)</a> </code> </div> <div class="height-container"> @@ -650,9 +647,9 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verifyMac</span><span class="p">(</span><span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verifyMac</span><span class="p">(</span><span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -731,7 +728,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -745,13 +742,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vv"></a> + <a name="/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -766,7 +770,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignalMessage</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -776,9 +780,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageVAcA0a1_aC0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol0A7MessageV4fromAcA0a1_aC0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageVAcA0a1_aC0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV4fromAcA0a1_aC0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -798,7 +802,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignalMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignalMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -827,6 +831,13 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers2"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers2"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -853,7 +864,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -867,9 +878,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol0A7MessageV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -897,7 +908,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -926,13 +937,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers3"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers3"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol0A7MessageV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -952,7 +970,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SignalMessage</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SignalMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SignalMessage</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SignalMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -999,8 +1017,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Structs/SymmetricParameters.html b/Documentation/Structs/SymmetricParameters.html index f96b8cc..2a87e0d 100644 --- a/Documentation/Structs/SymmetricParameters.html +++ b/Documentation/Structs/SymmetricParameters.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SymmetricParameters Struct Reference</title> + <title>SymmetricParameters Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SymmetricParameters" class="dashAnchor"></a> - <a title="SymmetricParameters Struct Reference"></a> + <a title="SymmetricParameters Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SymmetricParameters Struct Reference + SymmetricParameters Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SymmetricParameters</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SymmetricParameters</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SymmetricParameters</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SymmetricParameters</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVvp"></a> <a name="//apple_ref/swift/Property/ourIdentityKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVv">ourIdentityKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVvp">ourIdentityKey</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SymmetricParameters</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVvp"></a> <a name="//apple_ref/swift/Property/ourBaseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVv">ourBaseKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVvp">ourBaseKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ourBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ourBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVvp"></a> <a name="//apple_ref/swift/Property/ourRatchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVv">ourRatchetKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVvp">ourRatchetKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vvp"></a> <a name="//apple_ref/swift/Property/theirBaseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vv">theirBaseKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vvp">theirBaseKey</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">theirBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">theirBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vvp"></a> <a name="//apple_ref/swift/Property/theirRatchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vv">theirRatchetKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vvp">theirRatchetKey</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vvp"></a> <a name="//apple_ref/swift/Property/theirIdentityKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vv">theirIdentityKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vvp">theirIdentityKey</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV7isAliceSbv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV7isAliceSbvp"></a> <a name="//apple_ref/swift/Property/isAlice" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV7isAliceSbv">isAlice</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV7isAliceSbvp">isAlice</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">isAlice</span><span class="p">:</span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">isAlice</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -432,8 +429,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/Typealiases.html b/Documentation/Typealiases.html index 536cb29..7a6b1fe 100644 --- a/Documentation/Typealiases.html +++ b/Documentation/Typealiases.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>Typealiases Reference</title> + <title>Type Aliases Reference</title> <link rel="stylesheet" type="text/css" href="css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="css/highlight.css" /> <meta charset='utf-8'> @@ -10,7 +10,8 @@ </head> <body> - <a title="Typealiases Reference"></a> + <a name="//apple_ref/swift/Section/Type Aliases" class="dashAnchor"></a> + <a title="Type Aliases Reference"></a> <header> <div class="content-wrapper"> <p><a href="index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -21,7 +22,7 @@ <p id="breadcrumbs"> <a href="index.html">SignalProtocol Reference</a> <img id="carat" src="img/carat.png" /> - Typealiases Reference + Type Aliases Reference </p> </div> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -224,8 +222,8 @@ <article class="main-content"> <section> <section class="section"> - <h1>Typealiases</h1> - <p>The following typealiases are available globally.</p> + <h1>Type Aliases</h1> + <p>The following type aliases are available globally.</p> </section> <section class="section task-group-section"> @@ -251,7 +249,7 @@ <h1>Typealiases</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">typealias</span> <span class="kt">RatchetIdentityKeyPair</span> <span class="o">=</span> <span class="kt"><a href="Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">typealias</span> <span class="kt">RatchetIdentityKeyPair</span> <span class="o">=</span> <span class="kt"><a href="Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -263,8 +261,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/badge.svg b/Documentation/badge.svg index 86e9d2b..a096fec 100644 --- a/Documentation/badge.svg +++ b/Documentation/badge.svg @@ -1 +1,28 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="136" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="136" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h93v20H0z"/><path fill="#4c1" d="M93 0h43v20H93z"/><path fill="url(#b)" d="M0 0h136v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830">documentation</text><text x="475" y="140" transform="scale(.1)" textLength="830">documentation</text><text x="1135" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="330">100%</text><text x="1135" y="140" transform="scale(.1)" textLength="330">100%</text></g> </svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="136" height="20"> + <linearGradient id="b" x2="0" y2="100%"> + <stop offset="0" stop-color="#bbb" stop-opacity=".1"/> + <stop offset="1" stop-opacity=".1"/> + </linearGradient> + <clipPath id="a"> + <rect width="136" height="20" rx="3" fill="#fff"/> + </clipPath> + <g clip-path="url(#a)"> + <path fill="#555" d="M0 0h93v20H0z"/> + <path fill="#4c1" d="M93 0h43v20H93z"/> + <path fill="url(#b)" d="M0 0h136v20H0z"/> + </g> + <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> + <text x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830"> + documentation + </text> + <text x="475" y="140" transform="scale(.1)" textLength="830"> + documentation + </text> + <text x="1135" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="330"> + 100% + </text> + <text x="1135" y="140" transform="scale(.1)" textLength="330"> + 100% + </text> + </g> +</svg> diff --git a/Documentation/css/jazzy.css b/Documentation/css/jazzy.css index d628282..a982892 100644 --- a/Documentation/css/jazzy.css +++ b/Documentation/css/jazzy.css @@ -150,7 +150,7 @@ header { margin-left: 246px; position: absolute; overflow: hidden; - padding-bottom: 60px; + padding-bottom: 20px; top: 70px; width: 734px; } .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { @@ -216,10 +216,12 @@ header { .item code { background-color: transparent; padding: 0; } - .item .token { + .item .token, .item .direct-link { padding-left: 3px; margin-left: 15px; font-size: 11.9px; } + .item .discouraged { + text-decoration: line-through; } .item .declaration-note { font-size: .85em; color: gray; @@ -283,9 +285,9 @@ header { .language .aside-title { color: #4b8afb; } -.aside-warning { +.aside-warning, .aside-deprecated, .aside-unavailable { border-left: 5px solid #ff6666; } - .aside-warning .aside-title { + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { color: #ff0000; } .graybox { @@ -310,8 +312,9 @@ header { font-size: 0.9em; } #footer { - position: absolute; - bottom: 10px; + position: relative; + top: 10px; + bottom: 0px; margin-left: 25px; } #footer p { margin: 0; diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes.html index 67bb42b..ce7f8a3 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes.html @@ -10,6 +10,7 @@ </head> <body> + <a name="//apple_ref/swift/Section/Classes" class="dashAnchor"></a> <a title="Classes Reference"></a> <header> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -234,9 +232,9 @@ <h1>Classes</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC"></a> - <a name="//apple_ref/swift/Class/SessionRecord" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC">SessionRecord</a> + <a name="/s:14SignalProtocol0A5ErrorC"></a> + <a name="//apple_ref/swift/Class/SignalError" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC">SignalError</a> </code> </div> <div class="height-container"> @@ -244,15 +242,15 @@ <h1>Classes</h1> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The record of a session (and previous sessions) with another party.</p> + <p>All errors thrown by <code>SignalProtocolSwift</code> are <code>SignalError</code> objects.</p> - <a href="Classes/SessionRecord.html" class="slightly-smaller">See more</a> + <a href="Classes/SignalError.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionRecord</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SignalError</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span><span class="p">,</span> <span class="kt">Error</span></code></pre> </div> </div> @@ -266,9 +264,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC"></a> - <a name="//apple_ref/swift/Class/SignalError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC">SignalError</a> + <a name="/s:14SignalProtocol15SenderKeyRecordC"></a> + <a name="//apple_ref/swift/Class/SenderKeyRecord" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC">SenderKeyRecord</a> </code> </div> <div class="height-container"> @@ -276,15 +274,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>All errors thrown by <code>SignalProtocolSwift</code> are <code>SignalError</code> objects.</p> + <p>Stores the states for a session.</p> - <a href="Classes/SignalError.html" class="slightly-smaller">See more</a> + <a href="Classes/SenderKeyRecord.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SignalError</span><span class="p">:</span> <span class="kt">CustomStringConvertible</span><span class="p">,</span> <span class="kt">Error</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyRecord</span></code></pre> </div> </div> @@ -298,9 +296,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC"></a> - <a name="//apple_ref/swift/Class/SessionState" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC">SessionState</a> + <a name="/s:14SignalProtocol14SenderKeyStateC"></a> + <a name="//apple_ref/swift/Class/SenderKeyState" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC">SenderKeyState</a> </code> </div> <div class="height-container"> @@ -308,15 +306,18 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A session state contains all data needed for communicating with a remote party.</p> + <p>A state of a group message session with a recipient, +which saves the message keys of out-of-order messages +and generates new keys for messages. +Each session can have multiple states.</p> - <a href="Classes/SessionState.html" class="slightly-smaller">See more</a> + <a href="Classes/SenderKeyState.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionState</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyState</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -348,7 +349,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">ReceiverChain</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">ReceiverChain</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -362,9 +363,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC"></a> - <a name="//apple_ref/swift/Class/SenderKeyState" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC">SenderKeyState</a> + <a name="/s:14SignalProtocol13SessionRecordC"></a> + <a name="//apple_ref/swift/Class/SessionRecord" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC">SessionRecord</a> </code> </div> <div class="height-container"> @@ -372,18 +373,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A state of a group message session with a recipient, -which saves the message keys of out-of-order messages -and generates new keys for messages. -Each session can have multiple states.</p> + <p>The record of a session (and previous sessions) with another party.</p> - <a href="Classes/SenderKeyState.html" class="slightly-smaller">See more</a> + <a href="Classes/SessionRecord.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyState</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionRecord</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -397,9 +395,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC"></a> - <a name="//apple_ref/swift/Class/SenderKeyRecord" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC">SenderKeyRecord</a> + <a name="/s:14SignalProtocol12SessionStateC"></a> + <a name="//apple_ref/swift/Class/SessionState" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC">SessionState</a> </code> </div> <div class="height-container"> @@ -407,15 +405,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Stores the states for a session.</p> + <p>A session state contains all data needed for communicating with a remote party.</p> - <a href="Classes/SenderKeyRecord.html" class="slightly-smaller">See more</a> + <a href="Classes/SessionState.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyRecord</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionState</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -427,8 +425,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/ReceiverChain.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/ReceiverChain.html index 38b5833..fd8384e 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/ReceiverChain.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/ReceiverChain.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>ReceiverChain</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">ReceiverChain</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">ReceiverChain</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>ReceiverChain</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vv"></a> + <a name="/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vvp"></a> <a name="//apple_ref/swift/Property/ratchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vv">ratchetKey</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vvp">ratchetKey</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>ReceiverChain</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vv"></a> + <a name="/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vvp">chainKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGv"></a> + <a name="/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGvp"></a> <a name="//apple_ref/swift/Property/messageKeys" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGv">messageKeys</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGvp">messageKeys</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">messageKeys</span> <span class="o">=</span> <span class="p">[</span><span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">]()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">messageKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">]</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainCAcA9PublicKeyV07ratchetF0_AA07RatchetdF0V05chainF0tcfc"></a> + <a name="/s:14SignalProtocol13ReceiverChainC10ratchetKey05chainF0AcA06PublicF0V_AA07RatchetdF0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(ratchetKey:chainKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainCAcA9PublicKeyV07ratchetF0_AA07RatchetdF0V05chainF0tcfc">init(ratchetKey:chainKey:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10ratchetKey05chainF0AcA06PublicF0V_AA07RatchetdF0Vtcfc">init(ratchetKey:chainKey:)</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -380,9 +377,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC3addyAA18RatchetMessageKeysV10messageKey_tF"></a> + <a name="/s:14SignalProtocol13ReceiverChainC3add10messageKeyyAA18RatchetMessageKeysV_tF"></a> <a name="//apple_ref/swift/Method/add(messageKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC3addyAA18RatchetMessageKeysV10messageKey_tF">add(messageKey:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC3add10messageKeyyAA18RatchetMessageKeysV_tF">add(messageKey:)</a> </code> </div> <div class="height-container"> @@ -397,7 +394,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">)</span></code></pre> </div> </div> @@ -426,9 +423,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC3hasSbAA18RatchetMessageKeysV10messageKey_tF"></a> + <a name="/s:14SignalProtocol13ReceiverChainC3has10messageKeySbAA18RatchetMessageKeysV_tF"></a> <a name="//apple_ref/swift/Method/has(messageKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC3hasSbAA18RatchetMessageKeysV10messageKey_tF">has(messageKey:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC3has10messageKeySbAA18RatchetMessageKeysV_tF">has(messageKey:)</a> </code> </div> <div class="height-container"> @@ -443,7 +440,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">has</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">has</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -476,9 +473,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC10messageKeyAA18RatchetMessageKeysVSgs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol13ReceiverChainC10messageKey3forAA18RatchetMessageKeysVSgs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/messageKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10messageKeyAA18RatchetMessageKeysVSgs6UInt32V3for_tF">messageKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC10messageKey3forAA18RatchetMessageKeysVSgs6UInt32V_tF">messageKey(for:)</a> </code> </div> <div class="height-container"> @@ -493,7 +490,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">messageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">messageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> </div> </div> @@ -526,9 +523,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC16removeMessageKeyAA07RatchetF4KeysVSgs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol13ReceiverChainC16removeMessageKey3forAA07RatchetF4KeysVSgs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/removeMessageKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC16removeMessageKeyAA07RatchetF4KeysVSgs6UInt32V3for_tF">removeMessageKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC16removeMessageKey3forAA07RatchetF4KeysVSgs6UInt32V_tF">removeMessageKey(for:)</a> </code> </div> <div class="height-container"> @@ -543,7 +540,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">removeMessageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">removeMessageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> </div> </div> @@ -587,9 +584,9 @@ <h3 class="section-name">Protocol Buffers</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vv"></a> + <a name="/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -604,7 +601,7 @@ <h3 class="section-name">Protocol Buffers</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -614,9 +611,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainCAcA0A8_SessionV0D0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol13ReceiverChainC4fromAcA0A8_SessionV0D0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainCAcA0A8_SessionV0D0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC4fromAcA0A8_SessionV0D0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -636,7 +633,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -665,13 +662,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13ReceiverChainC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol13ReceiverChainC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13ReceiverChainC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol13ReceiverChainC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -686,7 +690,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">ReceiverChain</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">ReceiverChain</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">ReceiverChain</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">ReceiverChain</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -733,8 +737,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SenderKeyRecord.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SenderKeyRecord.html index 39fe235..5d4840f 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SenderKeyRecord.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SenderKeyRecord.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyRecord</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyRecord</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyRecord</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderKeyRecord</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivZ"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivpZ"></a> <a name="//apple_ref/swift/Variable/maxStates" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivZ">maxStates</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivpZ">maxStates</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderKeyRecord</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">maxStates</span> <span class="o">=</span> <span class="mi">5</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">maxStates</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGv"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGvp"></a> <a name="//apple_ref/swift/Property/states" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGv">states</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGvp">states</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">states</span> <span class="o">=</span> <span class="p">[</span><span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">]()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">states</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">]</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgv"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgvp"></a> <a name="//apple_ref/swift/Property/state" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgv">state</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgvp">state</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">?</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC7isEmptySbv"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC7isEmptySbvp"></a> <a name="//apple_ref/swift/Property/isEmpty" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC7isEmptySbv">isEmpty</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC7isEmptySbvp">isEmpty</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">isEmpty</span><span class="p">:</span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">isEmpty</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">()</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC5state3forAA0cD5StateCSgs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/state(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgs6UInt32V3for_tF">state(for:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC5state3forAA0cD5StateCSgs6UInt32V_tF">state(for:)</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">state</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">state</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SenderKeyState.html">SenderKeyState</a></span><span class="p">?</span></code></pre> </div> </div> @@ -426,9 +423,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC03setcD0ys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedM0tF"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC03setcD02id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dK0VtF"></a> <a name="//apple_ref/swift/Method/setSenderKey(id:iteration:chainKey:signatureKeyPair:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC03setcD0ys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedM0tF">setSenderKey(id:iteration:chainKey:signatureKeyPair:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC03setcD02id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dK0VtF">setSenderKey(id:iteration:chainKey:signatureKeyPair:)</a> </code> </div> <div class="height-container"> @@ -443,11 +440,11 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">setSenderKey</span><span class="p">(</span> - <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">signatureKeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">setSenderKey</span><span class="p">(</span> + <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">signatureKeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> </div> </div> @@ -512,9 +509,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA06PublicD0V09signaturenD0AA07PrivateD0VSg0opD0tF"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD0015signaturePublicD00k7PrivateD0ys6UInt32V_AK10Foundation4DataVAA0lD0VAA0mD0VSgtF"></a> <a name="//apple_ref/swift/Method/addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA06PublicD0V09signaturenD0AA07PrivateD0VSg0opD0tF">addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD0015signaturePublicD00k7PrivateD0ys6UInt32V_AK10Foundation4DataVAA0lD0VAA0mD0VSgtF">addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)</a> </code> </div> <div class="height-container"> @@ -534,12 +531,12 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">addState</span><span class="p">(</span> - <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">addState</span><span class="p">(</span> + <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?)</span></code></pre> </div> </div> @@ -616,9 +613,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedN0tF"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dL0VtF"></a> <a name="//apple_ref/swift/Method/addState(id:iteration:chainKey:signatureKeyPair:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedN0tF">addState(id:iteration:chainKey:signatureKeyPair:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dL0VtF">addState(id:iteration:chainKey:signatureKeyPair:)</a> </code> </div> <div class="height-container"> @@ -638,10 +635,10 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">addState</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">signatureKeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">addState</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">signatureKeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> </div> </div> @@ -706,13 +703,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vv"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -727,7 +731,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyRecord</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyRecord</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -737,9 +741,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordCAcA0a1_cdE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC4fromAcA0a1_cdE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordCAcA0a1_cdE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC4fromAcA0a1_cdE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -764,7 +768,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="n">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyRecord</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyRecord</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -793,13 +797,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15SenderKeyRecordC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol15SenderKeyRecordC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol15SenderKeyRecordC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -819,7 +830,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyRecord</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyRecord</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyRecord</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyRecord</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -866,8 +877,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SenderKeyState.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SenderKeyState.html index 2bd0474..1d373fe 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SenderKeyState.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SenderKeyState.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyState</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyState</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SenderKeyState</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -244,9 +241,9 @@ <h1>SenderKeyState</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivZ"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivpZ"></a> <a name="//apple_ref/swift/Variable/messageKeyMaximum" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivZ">messageKeyMaximum</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivpZ">messageKeyMaximum</a> </code> </div> <div class="height-container"> @@ -261,7 +258,7 @@ <h1>SenderKeyState</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeyMaximum</span> <span class="o">=</span> <span class="mi">2000</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeyMaximum</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -271,9 +268,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/keyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vv">keyId</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vvp">keyId</a> </code> </div> <div class="height-container"> @@ -288,7 +285,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -298,9 +295,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vvp">chainKey</a> </code> </div> <div class="height-container"> @@ -315,7 +312,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChainKey.html">SenderChainKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChainKey.html">SenderChainKey</a></span></code></pre> </div> </div> @@ -325,9 +322,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vvp"></a> <a name="//apple_ref/swift/Property/signaturePublicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vv">signaturePublicKey</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vvp">signaturePublicKey</a> </code> </div> <div class="height-container"> @@ -342,7 +339,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -352,9 +349,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgvp"></a> <a name="//apple_ref/swift/Property/signaturePrivateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgv">signaturePrivateKey</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgvp">signaturePrivateKey</a> </code> </div> <div class="height-container"> @@ -369,7 +366,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -379,9 +376,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGvp"></a> <a name="//apple_ref/swift/Property/messageKeys" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGv">messageKeys</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGvp">messageKeys</a> </code> </div> <div class="height-container"> @@ -396,7 +393,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">messageKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">messageKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">]</span></code></pre> </div> </div> @@ -406,9 +403,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateCACs6UInt32V5keyId_AA0c5ChainD0V05chainD0AA06PublicD0V09signaturekD0AA07PrivateD0VSg0lmD0tcfc"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC5keyId05chainD0015signaturePublicD00i7PrivateD0ACs6UInt32V_AA0c5ChainD0VAA0jD0VAA0kD0VSgtcfc"></a> <a name="//apple_ref/swift/Method/init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateCACs6UInt32V5keyId_AA0c5ChainD0V05chainD0AA06PublicD0V09signaturekD0AA07PrivateD0VSg0lmD0tcfc">init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC5keyId05chainD0015signaturePublicD00i7PrivateD0ACs6UInt32V_AA0c5ChainD0VAA0jD0VAA0kD0VSgtcfc">init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)</a> </code> </div> <div class="height-container"> @@ -423,10 +420,10 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChainKey.html">SenderChainKey</a></span><span class="p">,</span> - <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChainKey.html">SenderChainKey</a></span><span class="p">,</span> + <span class="nv">signaturePublicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">signaturePrivateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">?)</span></code></pre> </div> </div> @@ -491,9 +488,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC3addyAA0c7MessageD0V07messageD0_Sb15removingOldKeystF"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC3add07messageD015removingOldKeysyAA0c7MessageD0V_SbtF"></a> <a name="//apple_ref/swift/Method/add(messageKey:removingOldKeys:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC3addyAA0c7MessageD0V07messageD0_Sb15removingOldKeystF">add(messageKey:removingOldKeys:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC3add07messageD015removingOldKeysyAA0c7MessageD0V_SbtF">add(messageKey:removingOldKeys:)</a> </code> </div> <div class="height-container"> @@ -508,7 +505,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">,</span> <span class="nv">removingOldKeys</span><span class="p">:</span> <span class="kt">Bool</span> <span class="o">=</span> <span class="kc">true</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">messageKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">,</span> <span class="nv">removingOldKeys</span><span class="p">:</span> <span class="kt">Bool</span> <span class="o">=</span> <span class="kc">true</span><span class="p">)</span></code></pre> </div> </div> @@ -549,9 +546,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC07messageD0AA0c7MessageD0VSgs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC07messageD03forAA0c7MessageD0VSgs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/messageKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC07messageD0AA0c7MessageD0VSgs6UInt32V3for_tF">messageKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC07messageD03forAA0c7MessageD0VSgs6UInt32V_tF">messageKey(for:)</a> </code> </div> <div class="height-container"> @@ -566,7 +563,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">messageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">messageKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -616,7 +613,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">removeOldMessageKeys</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">removeOldMessageKeys</span><span class="p">()</span></code></pre> </div> </div> @@ -626,9 +623,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC06senderD0AA0c7MessageD0Vs6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC06senderD03forAA0c7MessageD0Vs6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/senderKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC06senderD0AA0c7MessageD0Vs6UInt32V3for_tKF">senderKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC06senderD03forAA0c7MessageD0Vs6UInt32V_tKF">senderKey(for:)</a> </code> </div> <div class="height-container"> @@ -648,7 +645,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">senderKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">senderKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span></code></pre> </div> </div> @@ -692,9 +689,9 @@ <h3 class="section-name">Protocol Buffers</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateCAcA0a1_cdE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC4fromAcA0a1_cdE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateCAcA0a1_cdE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC4fromAcA0a1_cdE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -714,7 +711,7 @@ <h3 class="section-name">Protocol Buffers</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -743,9 +740,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vv"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -760,7 +757,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -770,13 +767,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStateC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol14SenderKeyStateC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStateC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -796,7 +800,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyState</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyState</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyState</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyState</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -843,8 +847,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SessionRecord.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SessionRecord.html index 09ae19e..00be3c6 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SessionRecord.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SessionRecord.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionRecord</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionRecord</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionRecord</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SessionRecord</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivZ"></a> + <a name="/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivpZ"></a> <a name="//apple_ref/swift/Variable/archivedStatesMax" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivZ">archivedStatesMax</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivpZ">archivedStatesMax</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SessionRecord</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">archivedStatesMax</span> <span class="o">=</span> <span class="mi">40</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">archivedStatesMax</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCv"></a> + <a name="/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCvp"></a> <a name="//apple_ref/swift/Property/state" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCv">state</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCvp">state</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGv"></a> + <a name="/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGvp"></a> <a name="//apple_ref/swift/Property/previousStates" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGv">previousStates</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGvp">previousStates</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">previousStates</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">previousStates</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">]</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC7isFreshSbv"></a> + <a name="/s:14SignalProtocol13SessionRecordC7isFreshSbvp"></a> <a name="//apple_ref/swift/Property/isFresh" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC7isFreshSbv">isFresh</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC7isFreshSbvp">isFresh</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">isFresh</span><span class="p">:</span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private(set)</span> <span class="k">var</span> <span class="nv">isFresh</span><span class="p">:</span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordCAcA0C5StateCSg5state_tcfc"></a> + <a name="/s:14SignalProtocol13SessionRecordC5stateAcA0C5StateCSg_tcfc"></a> <a name="//apple_ref/swift/Method/init(state:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordCAcA0C5StateCSg5state_tcfc">init(state:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC5stateAcA0C5StateCSg_tcfc">init(state:)</a> </code> </div> <div class="height-container"> @@ -362,7 +359,7 @@ <h4>Declaration</h4> <p>Create a new session record for a session.</p> <div class="aside aside-note"> <p class="aside-title">Note</p> - If the <code><a href="../Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCv">state</a></code> parameter is nil, then a ‘fresh’ session record is created. + If the <code><a href="../Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCvp">state</a></code> parameter is nil, then a ‘fresh’ session record is created. </div> @@ -371,7 +368,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">?)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">?)</span></code></pre> </div> </div> @@ -400,9 +397,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC03hasC5StateSbAA9PublicKeyV04baseH0_tF"></a> + <a name="/s:14SignalProtocol13SessionRecordC03hasC5State7baseKeySbAA06PublicH0V_tF"></a> <a name="//apple_ref/swift/Method/hasSessionState(baseKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC03hasC5StateSbAA9PublicKeyV04baseH0_tF">hasSessionState(baseKey:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC03hasC5State7baseKeySbAA06PublicH0V_tF">hasSessionState(baseKey:)</a> </code> </div> <div class="height-container"> @@ -417,7 +414,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">hasSessionState</span><span class="p">(</span><span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">hasSessionState</span><span class="p">(</span><span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -467,7 +464,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">archiveCurrentState</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">archiveCurrentState</span><span class="p">()</span></code></pre> </div> </div> @@ -477,9 +474,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC12promoteStateyAA0cF0C5state_tF"></a> + <a name="/s:14SignalProtocol13SessionRecordC12promoteState5stateyAA0cF0C_tF"></a> <a name="//apple_ref/swift/Method/promoteState(state:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC12promoteStateyAA0cF0C5state_tF">promoteState(state:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC12promoteState5stateyAA0cF0C_tF">promoteState(state:)</a> </code> </div> <div class="height-container"> @@ -499,7 +496,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">promoteState</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">promoteState</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">)</span></code></pre> </div> </div> @@ -528,9 +525,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LLyAA9PublicKeyV3for_tF"></a> + <a name="/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LL3foryAA9PublicKeyV_tF"></a> <a name="//apple_ref/swift/Method/removeState(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LLyAA9PublicKeyV3for_tF">removeState(for:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LL3foryAA9PublicKeyV_tF">removeState(for:)</a> </code> </div> <div class="height-container"> @@ -545,7 +542,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">removeState</span><span class="p">(</span><span class="k">for</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">removeState</span><span class="p">(</span><span class="k">for</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -585,9 +582,9 @@ <h3 class="section-name">Protocol Buffers</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vv"></a> + <a name="/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -602,7 +599,7 @@ <h3 class="section-name">Protocol Buffers</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Record</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Record</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -612,9 +609,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordCAcA0a1_D0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol13SessionRecordC4fromAcA0a1_D0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordCAcA0a1_D0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC4fromAcA0a1_D0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -634,7 +631,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Record</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Record</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -663,13 +660,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionRecordC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol13SessionRecordC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionRecordC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionRecordC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -684,7 +688,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionRecord</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionRecord</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionRecord</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionRecord</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -700,8 +704,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SessionState.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SessionState.html index 11395ac..951fc69 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SessionState.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SessionState.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionState</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionState</span><span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> + <pre class="highlight swift"><code><span class="kd">final</span> <span class="kd">class</span> <span class="kt">SessionState</span> <span class="p">:</span> <span class="kt">ProtocolBufferEquivalent</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SessionState</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivZ"></a> + <a name="/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivpZ"></a> <a name="//apple_ref/swift/Variable/maxReceiverChains" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivZ">maxReceiverChains</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivpZ">maxReceiverChains</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SessionState</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">maxReceiverChains</span> <span class="o">=</span> <span class="mi">5</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">maxReceiverChains</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/keyInfo" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvZ">keyInfo</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvpZ">keyInfo</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyInfo</span> <span class="o">=</span> <span class="s">"WhisperText"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyInfo</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vv"></a> + <a name="/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/previousCounter" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vv">previousCounter</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vvp">previousCounter</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="o">=</span> <span class="mi">0</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgvp"></a> <a name="//apple_ref/swift/Property/localIdentity" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgv">localIdentity</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgvp">localIdentity</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgvp"></a> <a name="//apple_ref/swift/Property/remoteIdentity" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgv">remoteIdentity</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgvp">remoteIdentity</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgvp"></a> <a name="//apple_ref/swift/Property/rootKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgv">rootKey</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgvp">rootKey</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgvp"></a> <a name="//apple_ref/swift/Property/senderChain" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgv">senderChain</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgvp">senderChain</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">senderChain</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChain.html">SenderChain</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">senderChain</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderChain.html">SenderChain</a></span><span class="p">?</span></code></pre> </div> </div> @@ -430,9 +427,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGv"></a> + <a name="/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGvp"></a> <a name="//apple_ref/swift/Property/receiverChains" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGv">receiverChains</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGvp">receiverChains</a> </code> </div> <div class="height-container"> @@ -447,7 +444,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">receiverChains</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">receiverChains</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">]</span></code></pre> </div> </div> @@ -457,9 +454,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgvp"></a> <a name="//apple_ref/swift/Property/pendingPreKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgv">pendingPreKey</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgvp">pendingPreKey</a> </code> </div> <div class="height-container"> @@ -474,7 +471,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">pendingPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PendingPreKey.html">PendingPreKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">pendingPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PendingPreKey.html">PendingPreKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -484,9 +481,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgv"></a> + <a name="/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgvp"></a> <a name="//apple_ref/swift/Property/aliceBaseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgv">aliceBaseKey</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgvp">aliceBaseKey</a> </code> </div> <div class="height-container"> @@ -501,7 +498,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">aliceBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">aliceBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -528,7 +525,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">()</span></code></pre> </div> </div> @@ -538,9 +535,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC13receiverChainAA08ReceiverF0CSgAA9PublicKeyV3for_tF"></a> + <a name="/s:14SignalProtocol12SessionStateC13receiverChain3forAA08ReceiverF0CSgAA9PublicKeyV_tF"></a> <a name="//apple_ref/swift/Method/receiverChain(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC13receiverChainAA08ReceiverF0CSgAA9PublicKeyV3for_tF">receiverChain(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC13receiverChain3forAA08ReceiverF0CSgAA9PublicKeyV_tF">receiverChain(for:)</a> </code> </div> <div class="height-container"> @@ -555,7 +552,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">receiverChain</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeralKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">receiverChain</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeralKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">?</span></code></pre> </div> </div> @@ -588,9 +585,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC3addyAA13ReceiverChainC08receiverG0_tF"></a> + <a name="/s:14SignalProtocol12SessionStateC3add13receiverChainyAA08ReceiverG0C_tF"></a> <a name="//apple_ref/swift/Method/add(receiverChain:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC3addyAA13ReceiverChainC08receiverG0_tF">add(receiverChain:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC3add13receiverChainyAA08ReceiverG0C_tF">add(receiverChain:)</a> </code> </div> <div class="height-container"> @@ -605,7 +602,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">receiverChain</span><span class="p">:</span> <span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="nv">receiverChain</span><span class="p">:</span> <span class="kt"><a href="../Classes/ReceiverChain.html">ReceiverChain</a></span><span class="p">)</span></code></pre> </div> </div> @@ -634,9 +631,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV05chainH0_AA06PublicH0V3fortKF"></a> + <a name="/s:14SignalProtocol12SessionStateC3set8chainKey3foryAA012RatchetChainG0V_AA06PublicG0VtKF"></a> <a name="//apple_ref/swift/Method/set(chainKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV05chainH0_AA06PublicH0V3fortKF">set(chainKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC3set8chainKey3foryAA012RatchetChainG0V_AA06PublicG0VtKF">set(chainKey:for:)</a> </code> </div> <div class="height-container"> @@ -656,7 +653,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeralKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeralKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -697,9 +694,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC3setyAA18RatchetMessageKeysV07messageH0_AA9PublicKeyV3fortF"></a> + <a name="/s:14SignalProtocol12SessionStateC3set11messageKeys3foryAA014RatchetMessageG0V_AA9PublicKeyVtF"></a> <a name="//apple_ref/swift/Method/set(messageKeys:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC3setyAA18RatchetMessageKeysV07messageH0_AA9PublicKeyV3fortF">set(messageKeys:for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC3set11messageKeys3foryAA014RatchetMessageG0V_AA9PublicKeyVtF">set(messageKeys:for:)</a> </code> </div> <div class="height-container"> @@ -719,7 +716,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -760,9 +757,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC17removeMessageKeysAA07RatchetfG0VSgAA9PublicKeyV3for_s6UInt32V3andtF"></a> + <a name="/s:14SignalProtocol12SessionStateC17removeMessageKeys3for3andAA07RatchetfG0VSgAA9PublicKeyV_s6UInt32VtF"></a> <a name="//apple_ref/swift/Method/removeMessageKeys(for:and:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC17removeMessageKeysAA07RatchetfG0VSgAA9PublicKeyV3for_s6UInt32V3andtF">removeMessageKeys(for:and:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC17removeMessageKeys3for3andAA07RatchetfG0VSgAA9PublicKeyV_s6UInt32VtF">removeMessageKeys(for:and:)</a> </code> </div> <div class="height-container"> @@ -777,7 +774,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">removeMessageKeys</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">removeMessageKeys</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">?</span></code></pre> </div> </div> @@ -822,9 +819,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC16receiverChainKeyAA07RatchetfG0VSgAA06PublicG0V3for_tF"></a> + <a name="/s:14SignalProtocol12SessionStateC16receiverChainKey3forAA07RatchetfG0VSgAA06PublicG0V_tF"></a> <a name="//apple_ref/swift/Method/receiverChainKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC16receiverChainKeyAA07RatchetfG0VSgAA06PublicG0V3for_tF">receiverChainKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC16receiverChainKey3forAA07RatchetfG0VSgAA06PublicG0V_tF">receiverChainKey(for:)</a> </code> </div> <div class="height-container"> @@ -839,7 +836,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">receiverChainKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">receiverChainKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -872,9 +869,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV08receivergH0_AA06PublicH0V3fortKF"></a> + <a name="/s:14SignalProtocol12SessionStateC3set16receiverChainKey3foryAA07RatchetgH0V_AA06PublicH0VtKF"></a> <a name="//apple_ref/swift/Method/set(receiverChainKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV08receivergH0_AA06PublicH0V3fortKF">set(receiverChainKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC3set16receiverChainKey3foryAA07RatchetgH0V_AA06PublicH0VtKF">set(receiverChainKey:for:)</a> </code> </div> <div class="height-container"> @@ -894,7 +891,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">receiverChainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="nv">receiverChainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">senderEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -935,9 +932,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC15aliceInitializeyAA7KeyPairV011ourIdentityG0_AF0i4BaseG0AA06PublicG0V05theirjG0AJ0m9SignedPreG0AJSg0m7OneTimeoG0AJ0m7RatchetG0tKF"></a> + <a name="/s:14SignalProtocol12SessionStateC15aliceInitialize14ourIdentityKey0g4BaseI005theirhI00k9SignedPreI00k7OneTimemI00k7RatchetI0yAA0I4PairV_AlA06PublicI0VA2NSgANtKF"></a> <a name="//apple_ref/swift/Method/aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC15aliceInitializeyAA7KeyPairV011ourIdentityG0_AF0i4BaseG0AA06PublicG0V05theirjG0AJ0m9SignedPreG0AJSg0m7OneTimeoG0AJ0m7RatchetG0tKF">aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC15aliceInitialize14ourIdentityKey0g4BaseI005theirhI00k9SignedPreI00k7OneTimemI00k7RatchetI0yAA0I4PairV_AlA06PublicI0VA2NSgANtKF">aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)</a> </code> </div> <div class="height-container"> @@ -957,13 +954,13 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">aliceInitialize</span><span class="p">(</span> - <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span><span class="p">,</span> - <span class="nv">ourBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> - <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">theirSignedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">theirOneTimePreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?,</span> - <span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">aliceInitialize</span><span class="p">(</span> + <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span><span class="p">,</span> + <span class="nv">ourBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> + <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">theirSignedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">theirOneTimePreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?,</span> + <span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -1052,9 +1049,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC13bobInitializeyAA7KeyPairV011ourIdentityG0_AF0i9SignedPreG0AFSg0i7OneTimelG0AF0i7RatchetG0AA06PublicG0V05theirjG0AM0q4BaseG0tKF"></a> + <a name="/s:14SignalProtocol12SessionStateC13bobInitialize14ourIdentityKey0g9SignedPreI00g7OneTimekI00g7RatchetI005theirhI00o4BaseI0yAA0I4PairV_A2LSgAlA06PublicI0VAOtKF"></a> <a name="//apple_ref/swift/Method/bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC13bobInitializeyAA7KeyPairV011ourIdentityG0_AF0i9SignedPreG0AFSg0i7OneTimelG0AF0i7RatchetG0AA06PublicG0V05theirjG0AM0q4BaseG0tKF">bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC13bobInitialize14ourIdentityKey0g9SignedPreI00g7OneTimekI00g7RatchetI005theirhI00o4BaseI0yAA0I4PairV_A2LSgAlA06PublicI0VAOtKF">bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)</a> </code> </div> <div class="height-container"> @@ -1074,13 +1071,13 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">bobInitialize</span><span class="p">(</span> - <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span><span class="p">,</span> - <span class="nv">ourSignedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> - <span class="nv">ourOneTimePreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">?,</span> - <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> - <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">theirBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">bobInitialize</span><span class="p">(</span> + <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span><span class="p">,</span> + <span class="nv">ourSignedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> + <span class="nv">ourOneTimePreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">?,</span> + <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> + <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">theirBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -1169,9 +1166,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC19symmetricInitializeyAA19SymmetricParametersV10parameters_tKF"></a> + <a name="/s:14SignalProtocol12SessionStateC19symmetricInitialize10parametersyAA19SymmetricParametersV_tKF"></a> <a name="//apple_ref/swift/Method/symmetricInitialize(parameters:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC19symmetricInitializeyAA19SymmetricParametersV10parameters_tKF">symmetricInitialize(parameters:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC19symmetricInitialize10parametersyAA19SymmetricParametersV_tKF">symmetricInitialize(parameters:)</a> </code> </div> <div class="height-container"> @@ -1191,7 +1188,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">symmetricInitialize</span><span class="p">(</span><span class="n">parameters</span> <span class="nv">params</span><span class="p">:</span> <span class="kt"><a href="../Structs/SymmetricParameters.html">SymmetricParameters</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">symmetricInitialize</span><span class="p">(</span><span class="n">parameters</span> <span class="nv">params</span><span class="p">:</span> <span class="kt"><a href="../Structs/SymmetricParameters.html">SymmetricParameters</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -1220,9 +1217,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LLAA14RatchetRootKeyV04rootS0_AA0q5ChainS0V05chainS0t10Foundation4DataV6secret_tKF"></a> + <a name="/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LL6secretAA14RatchetRootKeyV04rootT0_AA0r5ChainT0V05chainT0t10Foundation4DataV_tKF"></a> <a name="//apple_ref/swift/Method/calculateDerivedKeys(secret:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LLAA14RatchetRootKeyV04rootS0_AA0q5ChainS0V05chainS0t10Foundation4DataV6secret_tKF">calculateDerivedKeys(secret:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LL6secretAA14RatchetRootKeyV04rootT0_AA0r5ChainT0V05chainT0t10Foundation4DataV_tKF">calculateDerivedKeys(secret:)</a> </code> </div> <div class="height-container"> @@ -1237,7 +1234,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">calculateDerivedKeys</span><span class="p">(</span><span class="nv">secret</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">calculateDerivedKeys</span><span class="p">(</span><span class="nv">secret</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -1281,9 +1278,9 @@ <h3 class="section-name">Protocol Buffers</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vv"></a> + <a name="/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -1298,7 +1295,7 @@ <h3 class="section-name">Protocol Buffers</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -1308,9 +1305,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateCAcA0a1_C0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol12SessionStateC4fromAcA0a1_C0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateCAcA0a1_C0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC4fromAcA0a1_C0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -1330,7 +1327,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -1359,13 +1356,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStateC2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol12SessionStateC2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStateC2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStateC2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -1380,7 +1384,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionState</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionState</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionState</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionState</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -1427,8 +1431,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SignalError.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SignalError.html index 6d89ba3..45e1564 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SignalError.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Classes/SignalError.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalError</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SignalError</span><span class="p">:</span> <span class="kt">CustomStringConvertible</span><span class="p">,</span> <span class="kt">Error</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SignalError</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span><span class="p">,</span> <span class="kt">Error</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SignalError</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOv"></a> + <a name="/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOvp"></a> <a name="//apple_ref/swift/Property/type" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOv">type</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOvp">type</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SignalError</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalErrorType.html">SignalErrorType</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalErrorType.html">SignalErrorType</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC7messageSSSgv"></a> + <a name="/s:14SignalProtocol0A5ErrorC7messageSSSgvp"></a> <a name="//apple_ref/swift/Property/message" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC7messageSSSgv">message</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC7messageSSSgvp">message</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC5causeACSgv"></a> + <a name="/s:14SignalProtocol0A5ErrorC5causeACSgvp"></a> <a name="//apple_ref/swift/Property/cause" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC5causeACSgv">cause</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC5causeACSgvp">cause</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">?</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC8functionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC8functionSSvp"></a> <a name="//apple_ref/swift/Property/function" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC8functionSSv">function</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC8functionSSvp">function</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC4fileSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC4fileSSvp"></a> <a name="//apple_ref/swift/Property/file" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC4fileSSv">file</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC4fileSSvp">file</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorCAcA0aC4TypeO_SSSgACSg5causeSS4fileSS8functiontcfc"></a> + <a name="/s:14SignalProtocol0A5ErrorC__5cause4file8functionAcA0aC4TypeO_SSSgACSgS2Stcfc"></a> <a name="//apple_ref/swift/Method/init(_:_:cause:file:function:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorCAcA0aC4TypeO_SSSgACSg5causeSS4fileSS8functiontcfc">init(_:_:cause:file:function:)</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC__5cause4file8functionAcA0aC4TypeO_SSSgACSgS2Stcfc">init(_:_:cause:file:function:)</a> </code> </div> <div class="height-container"> @@ -393,11 +390,11 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalErrorType.html">SignalErrorType</a></span><span class="p">,</span> - <span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> - <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> - <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSv">file</a></span><span class="p">,</span> - <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSv">function</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalErrorType.html">SignalErrorType</a></span><span class="p">,</span> + <span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> + <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span><span class="p">,</span> + <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#file</span><span class="p">,</span> + <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#function</span><span class="p">)</span></code></pre> </div> </div> @@ -474,9 +471,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorCACSS_AC5causeSS4fileSS8functiontcfc"></a> + <a name="/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_ACS2Stcfc"></a> <a name="//apple_ref/swift/Method/init(_:cause:file:function:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorCACSS_AC5causeSS4fileSS8functiontcfc">init(_:cause:file:function:)</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_ACS2Stcfc">init(_:cause:file:function:)</a> </code> </div> <div class="height-container"> @@ -491,10 +488,10 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">,</span> - <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSv">file</a></span><span class="p">,</span> - <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSv">function</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">cause</span><span class="p">:</span> <span class="kt">SignalError</span><span class="p">,</span> + <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#file</span><span class="p">,</span> + <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#function</span><span class="p">)</span></code></pre> </div> </div> @@ -559,9 +556,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorCACSS_s0C0_p5causeSS4fileSS8functiontcfc"></a> + <a name="/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_s0C0_pS2Stcfc"></a> <a name="//apple_ref/swift/Method/init(_:cause:file:function:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorCACSS_s0C0_p5causeSS4fileSS8functiontcfc">init(_:cause:file:function:)</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_s0C0_pS2Stcfc">init(_:cause:file:function:)</a> </code> </div> <div class="height-container"> @@ -576,10 +573,10 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="n">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">cause</span><span class="p">:</span> <span class="kt">Error</span><span class="p">,</span> - <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSv">file</a></span><span class="p">,</span> - <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="err">#</span><span class="n"><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSv">function</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">cause</span><span class="p">:</span> <span class="kt">Error</span><span class="p">,</span> + <span class="nv">file</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#file</span><span class="p">,</span> + <span class="nv">function</span><span class="p">:</span> <span class="kt">String</span> <span class="o">=</span> <span class="kd">#function</span><span class="p">)</span></code></pre> </div> </div> @@ -644,9 +641,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC11descriptionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC11descriptionSSvp"></a> <a name="//apple_ref/swift/Property/description" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC11descriptionSSv">description</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC11descriptionSSvp">description</a> </code> </div> <div class="height-container"> @@ -661,7 +658,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -671,9 +668,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC16shortDescriptionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC16shortDescriptionSSvp"></a> <a name="//apple_ref/swift/Property/shortDescription" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC16shortDescriptionSSv">shortDescription</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC16shortDescriptionSSvp">shortDescription</a> </code> </div> <div class="height-container"> @@ -688,7 +685,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">shortDescription</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">shortDescription</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -698,9 +695,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC15longDescriptionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp"></a> <a name="//apple_ref/swift/Property/longDescription" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC15longDescriptionSSv">longDescription</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp">longDescription</a> </code> </div> <div class="height-container"> @@ -715,7 +712,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">longDescription</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">longDescription</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -725,9 +722,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSvp"></a> <a name="//apple_ref/swift/Property/trace" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSv">trace</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSvp">trace</a> </code> </div> <div class="height-container"> @@ -735,14 +732,14 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The trace of the error which is used to build the <code><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSv">longDescription</a></code></p> + <p>The trace of the error which is used to build the <code><a href="../Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp">longDescription</a></code></p> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">trace</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">trace</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -752,9 +749,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSv"></a> + <a name="/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSvp"></a> <a name="//apple_ref/swift/Property/localizedDescription" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSv">localizedDescription</a> + <a class="token" href="#/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSvp">localizedDescription</a> </code> </div> <div class="height-container"> @@ -769,7 +766,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">localizedDescription</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">localizedDescription</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -781,8 +778,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums.html index 01f242d..d6e1a7d 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>Enums Reference</title> + <title>Enumerations Reference</title> <link rel="stylesheet" type="text/css" href="css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="css/highlight.css" /> <meta charset='utf-8'> @@ -10,7 +10,8 @@ </head> <body> - <a title="Enums Reference"></a> + <a name="//apple_ref/swift/Section/Enumerations" class="dashAnchor"></a> + <a title="Enumerations Reference"></a> <header> <div class="content-wrapper"> <p><a href="index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -21,7 +22,7 @@ <p id="breadcrumbs"> <a href="index.html">SignalProtocol Reference</a> <img id="carat" src="img/carat.png" /> - Enums Reference + Enumerations Reference </p> </div> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -224,8 +222,8 @@ <article class="main-content"> <section> <section class="section"> - <h1>Enums</h1> - <p>The following enums are available globally.</p> + <h1>Enumerations</h1> + <p>The following enumerations are available globally.</p> </section> <section class="section task-group-section"> @@ -252,7 +250,7 @@ <h1>Enums</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalErrorType</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalErrorType</span> <span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -266,9 +264,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO"></a> - <a name="//apple_ref/swift/Enum/CipherTextType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO">CipherTextType</a> + <a name="/s:14SignalProtocol0A16EncryptionSchemeO"></a> + <a name="//apple_ref/swift/Enum/SignalEncryptionScheme" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO">SignalEncryptionScheme</a> </code> </div> <div class="height-container"> @@ -276,15 +274,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The <code>CipherTextType</code> enum describes the different types of messages.</p> + <p>Specifies the type of algorithm to use for encryption and decryption.</p> - <a href="Enums/CipherTextType.html" class="slightly-smaller">See more</a> + <a href="Enums/SignalEncryptionScheme.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">CipherTextType</span><span class="p">:</span> <span class="kt">UInt8</span><span class="p">,</span> <span class="kt">CustomStringConvertible</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalEncryptionScheme</span></code></pre> </div> </div> @@ -298,9 +296,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A16EncryptionSchemeO"></a> - <a name="//apple_ref/swift/Enum/SignalEncryptionScheme" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO">SignalEncryptionScheme</a> + <a name="/s:14SignalProtocol14CipherTextTypeO"></a> + <a name="//apple_ref/swift/Enum/CipherTextType" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO">CipherTextType</a> </code> </div> <div class="height-container"> @@ -308,15 +306,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Specifies the type of algorithm to use for encryption and decryption.</p> + <p>The <code>CipherTextType</code> enum describes the different types of messages.</p> - <a href="Enums/SignalEncryptionScheme.html" class="slightly-smaller">See more</a> + <a href="Enums/CipherTextType.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalEncryptionScheme</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">CipherTextType</span> <span class="p">:</span> <span class="kt">UInt8</span><span class="p">,</span> <span class="kt">CustomStringConvertible</span></code></pre> </div> </div> @@ -328,8 +326,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/CipherTextType.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/CipherTextType.html index f1cfe08..2ca0cbe 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/CipherTextType.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/CipherTextType.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>CipherTextType Enum Reference</title> + <title>CipherTextType Enumeration Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Enum/CipherTextType" class="dashAnchor"></a> - <a title="CipherTextType Enum Reference"></a> + <a title="CipherTextType Enumeration Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - CipherTextType Enum Reference + CipherTextType Enumeration Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>CipherTextType</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">CipherTextType</span><span class="p">:</span> <span class="kt">UInt8</span><span class="p">,</span> <span class="kt">CustomStringConvertible</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">CipherTextType</span> <span class="p">:</span> <span class="kt">UInt8</span><span class="p">,</span> <span class="kt">CustomStringConvertible</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>CipherTextType</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO6signalA2CmF"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO6signalyA2CmF"></a> <a name="//apple_ref/swift/Element/signal" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO6signalA2CmF">signal</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO6signalyA2CmF">signal</a> </code> </div> <div class="height-container"> @@ -258,23 +255,19 @@ <h1>CipherTextType</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">signal</span> <span class="o">=</span> <span class="mi">2</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">signal</span> <span class="o">=</span> <span class="mi">2</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO6preKeyA2CmF"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO6preKeyyA2CmF"></a> <a name="//apple_ref/swift/Element/preKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO6preKeyA2CmF">preKey</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO6preKeyyA2CmF">preKey</a> </code> </div> <div class="height-container"> @@ -289,23 +282,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">preKey</span> <span class="o">=</span> <span class="mi">3</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">preKey</span> <span class="o">=</span> <span class="mi">3</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO9senderKeyA2CmF"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO9senderKeyyA2CmF"></a> <a name="//apple_ref/swift/Element/senderKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO9senderKeyA2CmF">senderKey</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO9senderKeyyA2CmF">senderKey</a> </code> </div> <div class="height-container"> @@ -320,23 +309,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">senderKey</span> <span class="o">=</span> <span class="mi">4</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">senderKey</span> <span class="o">=</span> <span class="mi">4</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionA2CmF"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionyA2CmF"></a> <a name="//apple_ref/swift/Element/senderKeyDistribution" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionA2CmF">senderKeyDistribution</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionyA2CmF">senderKeyDistribution</a> </code> </div> <div class="height-container"> @@ -351,23 +336,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">senderKeyDistribution</span> <span class="o">=</span> <span class="mi">5</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">senderKeyDistribution</span> <span class="o">=</span> <span class="mi">5</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO11descriptionSSv"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO11descriptionSSvp"></a> <a name="//apple_ref/swift/Property/description" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO11descriptionSSv">description</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO11descriptionSSvp">description</a> </code> </div> <div class="height-container"> @@ -382,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -392,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/data" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVv">data</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVvp">data</a> </code> </div> <div class="height-container"> @@ -409,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -419,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14CipherTextTypeOACSg10Foundation4DataV4from_tcfc"></a> + <a name="/s:14SignalProtocol14CipherTextTypeO4fromACSg10Foundation4DataV_tcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14CipherTextTypeOACSg10Foundation4DataV4from_tcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol14CipherTextTypeO4fromACSg10Foundation4DataV_tcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -441,7 +422,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">?(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">?(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -472,8 +453,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/SignalEncryptionScheme.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/SignalEncryptionScheme.html index 8565452..50b5656 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/SignalEncryptionScheme.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/SignalEncryptionScheme.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalEncryptionScheme Enum Reference</title> + <title>SignalEncryptionScheme Enumeration Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Enum/SignalEncryptionScheme" class="dashAnchor"></a> - <a title="SignalEncryptionScheme Enum Reference"></a> + <a title="SignalEncryptionScheme Enumeration Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalEncryptionScheme Enum Reference + SignalEncryptionScheme Enumeration Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalEncryptionScheme</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalEncryptionScheme</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalEncryptionScheme</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SignalEncryptionScheme</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5A2CmF"></a> + <a name="/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5yA2CmF"></a> <a name="//apple_ref/swift/Element/AES_CBCwithPKCS5" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5A2CmF">AES_CBCwithPKCS5</a> + <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5yA2CmF">AES_CBCwithPKCS5</a> </code> </div> <div class="height-container"> @@ -258,23 +255,19 @@ <h1>SignalEncryptionScheme</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="kt">AES_CBCwithPKCS5</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="kt">AES_CBCwithPKCS5</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingA2CmF"></a> + <a name="/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingyA2CmF"></a> <a name="//apple_ref/swift/Element/AES_CTRnoPadding" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingA2CmF">AES_CTRnoPadding</a> + <a class="token" href="#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingyA2CmF">AES_CTRnoPadding</a> </code> </div> <div class="height-container"> @@ -289,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="kt">AES_CTRnoPadding</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="kt">AES_CTRnoPadding</span></code></pre> </div> </div> @@ -301,8 +294,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/SignalErrorType.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/SignalErrorType.html index 415970d..9f43db0 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/SignalErrorType.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Enums/SignalErrorType.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalErrorType Enum Reference</title> + <title>SignalErrorType Enumeration Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Enum/SignalErrorType" class="dashAnchor"></a> - <a title="SignalErrorType Enum Reference"></a> + <a title="SignalErrorType Enumeration Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalErrorType Enum Reference + SignalErrorType Enumeration Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalErrorType</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalErrorType</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">SignalErrorType</span> <span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SignalErrorType</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO7unknownA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO7unknownyA2CmF"></a> <a name="//apple_ref/swift/Element/unknown" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO7unknownA2CmF">unknown</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO7unknownyA2CmF">unknown</a> </code> </div> <div class="height-container"> @@ -258,23 +255,19 @@ <h1>SignalErrorType</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">unknown</span> <span class="o">=</span> <span class="s">"Unknown"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">unknown</span> <span class="o">=</span> <span class="s">"Unknown"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO05curveC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO05curveC0yA2CmF"></a> <a name="//apple_ref/swift/Element/curveError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO05curveC0A2CmF">curveError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO05curveC0yA2CmF">curveError</a> </code> </div> <div class="height-container"> @@ -289,23 +282,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">curveError</span> <span class="o">=</span> <span class="s">"Curve25519"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">curveError</span> <span class="o">=</span> <span class="s">"Curve25519"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO07storageC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO07storageC0yA2CmF"></a> <a name="//apple_ref/swift/Element/storageError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO07storageC0A2CmF">storageError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO07storageC0yA2CmF">storageError</a> </code> </div> <div class="height-container"> @@ -320,23 +309,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">storageError</span> <span class="o">=</span> <span class="s">"Storage"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">storageError</span> <span class="o">=</span> <span class="s">"Storage"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageyA2CmF"></a> <a name="//apple_ref/swift/Element/duplicateMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageA2CmF">duplicateMessage</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageyA2CmF">duplicateMessage</a> </code> </div> <div class="height-container"> @@ -351,23 +336,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">duplicateMessage</span> <span class="o">=</span> <span class="s">"Duplicate message"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">duplicateMessage</span> <span class="o">=</span> <span class="s">"Duplicate message"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO07invalidD0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO07invalidD0yA2CmF"></a> <a name="//apple_ref/swift/Element/invalidType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO07invalidD0A2CmF">invalidType</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO07invalidD0yA2CmF">invalidType</a> </code> </div> <div class="height-container"> @@ -382,23 +363,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidType</span> <span class="o">=</span> <span class="s">"Invalid type"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidType</span> <span class="o">=</span> <span class="s">"Invalid type"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO10invalidKeyA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO10invalidKeyyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO10invalidKeyA2CmF">invalidKey</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO10invalidKeyyA2CmF">invalidKey</a> </code> </div> <div class="height-container"> @@ -413,23 +390,46 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidKey</span> <span class="o">=</span> <span class="s">"Invalid key"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidKey</span> <span class="o">=</span> <span class="s">"Invalid key"</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol0A9ErrorTypeO9invalidIVyA2CmF"></a> + <a name="//apple_ref/swift/Element/invalidIV" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9invalidIVyA2CmF">invalidIV</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>The initialization vector has the wrong length</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidIV</span> <span class="o">=</span> <span class="s">"Invalid iv"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO9invalidIdA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO9invalidIdyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9invalidIdA2CmF">invalidId</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9invalidIdyA2CmF">invalidId</a> </code> </div> <div class="height-container"> @@ -444,23 +444,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidId</span> <span class="o">=</span> <span class="s">"Invalid Id"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidId</span> <span class="o">=</span> <span class="s">"Invalid Id"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO10invalidMacA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO10invalidMacyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidMac" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO10invalidMacA2CmF">invalidMac</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO10invalidMacyA2CmF">invalidMac</a> </code> </div> <div class="height-container"> @@ -475,23 +471,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidMac</span> <span class="o">=</span> <span class="s">"Invalid mac"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidMac</span> <span class="o">=</span> <span class="s">"Invalid mac"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO14invalidMessageA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO14invalidMessageyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO14invalidMessageA2CmF">invalidMessage</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO14invalidMessageyA2CmF">invalidMessage</a> </code> </div> <div class="height-container"> @@ -506,23 +498,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidMessage</span> <span class="o">=</span> <span class="s">"Invalid message"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidMessage</span> <span class="o">=</span> <span class="s">"Invalid message"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO13invalidLengthA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO13invalidLengthyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13invalidLengthA2CmF">invalidLength</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13invalidLengthyA2CmF">invalidLength</a> </code> </div> <div class="height-container"> @@ -537,23 +525,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidLength</span> <span class="o">=</span> <span class="s">"Invalid length"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidLength</span> <span class="o">=</span> <span class="s">"Invalid length"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO13legacyMessageA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO13legacyMessageyA2CmF"></a> <a name="//apple_ref/swift/Element/legacyMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13legacyMessageA2CmF">legacyMessage</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13legacyMessageyA2CmF">legacyMessage</a> </code> </div> <div class="height-container"> @@ -568,23 +552,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">legacyMessage</span> <span class="o">=</span> <span class="s">"Legacy message"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">legacyMessage</span> <span class="o">=</span> <span class="s">"Legacy message"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO9noSessionA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO9noSessionyA2CmF"></a> <a name="//apple_ref/swift/Element/noSession" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9noSessionA2CmF">noSession</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO9noSessionyA2CmF">noSession</a> </code> </div> <div class="height-container"> @@ -599,23 +579,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">noSession</span> <span class="o">=</span> <span class="s">"No session"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">noSession</span> <span class="o">=</span> <span class="s">"No session"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityyA2CmF"></a> <a name="//apple_ref/swift/Element/untrustedIdentity" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityA2CmF">untrustedIdentity</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityyA2CmF">untrustedIdentity</a> </code> </div> <div class="height-container"> @@ -630,23 +606,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">untrustedIdentity</span> <span class="o">=</span> <span class="s">"Untrusted identity"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">untrustedIdentity</span> <span class="o">=</span> <span class="s">"Untrusted identity"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidSignature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureA2CmF">invalidSignature</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureyA2CmF">invalidSignature</a> </code> </div> <div class="height-container"> @@ -661,23 +633,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidSignature</span> <span class="o">=</span> <span class="s">"Invalid signature"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidSignature</span> <span class="o">=</span> <span class="s">"Invalid signature"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufyA2CmF"></a> <a name="//apple_ref/swift/Element/invalidProtoBuf" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufA2CmF">invalidProtoBuf</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufyA2CmF">invalidProtoBuf</a> </code> </div> <div class="height-container"> @@ -692,23 +660,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">invalidProtoBuf</span> <span class="o">=</span> <span class="s">"Invalid protoBuf"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">invalidProtoBuf</span> <span class="o">=</span> <span class="s">"Invalid protoBuf"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchyA2CmF"></a> <a name="//apple_ref/swift/Element/fPIdentityMismatch" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchA2CmF">fPIdentityMismatch</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchyA2CmF">fPIdentityMismatch</a> </code> </div> <div class="height-container"> @@ -723,23 +687,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">fPIdentityMismatch</span> <span class="o">=</span> <span class="s">"Fingerprint identity mismatch"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">fPIdentityMismatch</span> <span class="o">=</span> <span class="s">"Fingerprint identity mismatch"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO16noCryptoProviderA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO16noCryptoProvideryA2CmF"></a> <a name="//apple_ref/swift/Element/noCryptoProvider" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16noCryptoProviderA2CmF">noCryptoProvider</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO16noCryptoProvideryA2CmF">noCryptoProvider</a> </code> </div> <div class="height-container"> @@ -754,23 +714,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">noCryptoProvider</span> <span class="o">=</span> <span class="s">"No crpyto provider"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">noCryptoProvider</span> <span class="o">=</span> <span class="s">"No crpyto provider"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesA2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesyA2CmF"></a> <a name="//apple_ref/swift/Element/noRandomBytes" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesA2CmF">noRandomBytes</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesyA2CmF">noRandomBytes</a> </code> </div> <div class="height-container"> @@ -785,23 +741,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">noRandomBytes</span> <span class="o">=</span> <span class="s">"No random bytes"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">noRandomBytes</span> <span class="o">=</span> <span class="s">"No random bytes"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO04hmacC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO04hmacC0yA2CmF"></a> <a name="//apple_ref/swift/Element/hmacError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO04hmacC0A2CmF">hmacError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO04hmacC0yA2CmF">hmacError</a> </code> </div> <div class="height-container"> @@ -816,23 +768,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">hmacError</span> <span class="o">=</span> <span class="s">"HMAC error"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">hmacError</span> <span class="o">=</span> <span class="s">"HMAC error"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO06digestC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO06digestC0yA2CmF"></a> <a name="//apple_ref/swift/Element/digestError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO06digestC0A2CmF">digestError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO06digestC0yA2CmF">digestError</a> </code> </div> <div class="height-container"> @@ -847,23 +795,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">digestError</span> <span class="o">=</span> <span class="s">"Digest error"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">digestError</span> <span class="o">=</span> <span class="s">"Digest error"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO010encryptionC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO010encryptionC0yA2CmF"></a> <a name="//apple_ref/swift/Element/encryptionError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO010encryptionC0A2CmF">encryptionError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO010encryptionC0yA2CmF">encryptionError</a> </code> </div> <div class="height-container"> @@ -878,23 +822,19 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">encryptionError</span> <span class="o">=</span> <span class="s">"Encryption error"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">encryptionError</span> <span class="o">=</span> <span class="s">"Encryption error"</span></code></pre> </div> </div> </section> </div> </li> - </ul> - </div> - <div class="task-group"> - <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A9ErrorTypeO010decryptionC0A2CmF"></a> + <a name="/s:14SignalProtocol0A9ErrorTypeO010decryptionC0yA2CmF"></a> <a name="//apple_ref/swift/Element/decryptionError" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO010decryptionC0A2CmF">decryptionError</a> + <a class="token" href="#/s:14SignalProtocol0A9ErrorTypeO010decryptionC0yA2CmF">decryptionError</a> </code> </div> <div class="height-container"> @@ -909,7 +849,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">case</span> <span class="n">decryptionError</span> <span class="o">=</span> <span class="s">"Decryption error"</span></code></pre> + <pre class="highlight swift"><code><span class="k">case</span> <span class="n">decryptionError</span> <span class="o">=</span> <span class="s">"Decryption error"</span></code></pre> </div> </div> @@ -921,8 +861,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Functions.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Functions.html index f48d6ac..968503b 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Functions.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Functions.html @@ -10,6 +10,7 @@ </head> <body> + <a name="//apple_ref/swift/Section/Functions" class="dashAnchor"></a> <a title="Functions Reference"></a> <header> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -234,9 +232,9 @@ <h1>Functions</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF"></a> + <a name="/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF"></a> <a name="//apple_ref/swift/Function/getLogicalKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </code> </div> <div class="height-container"> @@ -252,7 +250,7 @@ <h1>Functions</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getLogicalKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">keyList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="Structs/PublicKey.html">PublicKey</a></span><span class="p">])</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getLogicalKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">keyList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="Structs/PublicKey.html">PublicKey</a></span><span class="p">])</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -285,9 +283,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF"></a> + <a name="/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF"></a> <a name="//apple_ref/swift/Function/getFingerprint(identity:stableIdentifier:iterations:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a class="token" href="#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </code> </div> <div class="height-container"> @@ -307,7 +305,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getFingerprint</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">stableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getFingerprint</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">stableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -354,8 +352,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols.html index 5cbe39b..dc745eb 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols.html @@ -10,6 +10,7 @@ </head> <body> + <a name="//apple_ref/swift/Section/Protocols" class="dashAnchor"></a> <a title="Protocols Reference"></a> <header> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -234,9 +232,9 @@ <h1>Protocols</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP"></a> - <a name="//apple_ref/swift/Protocol/SessionStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP">SessionStore</a> + <a name="/s:14SignalProtocol0A14CryptoProviderP"></a> + <a name="//apple_ref/swift/Protocol/SignalCryptoProvider" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP">SignalCryptoProvider</a> </code> </div> <div class="height-container"> @@ -244,17 +242,17 @@ <h1>Protocols</h1> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Implement the <code>SessionStore</code> protocol to handle the session records of the -Signal Protocol. The records should be stored in a secure database and be treated as -unspecified data blobs.</p> + <p>The <code>SignalCryptoProvider</code> protocol can be implemented to provide a custom +implementation of the cryptographic functions. Set the crypto provider +by setting the static <code>provider</code> variable of the SignalCrypto class</p> - <a href="Protocols/SessionStore.html" class="slightly-smaller">See more</a> + <a href="Protocols/SignalCryptoProvider.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SessionStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignalCryptoProvider</span></code></pre> </div> </div> @@ -268,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP"></a> - <a name="//apple_ref/swift/Protocol/KeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP">KeyStore</a> + <a name="/s:14SignalProtocol13GroupKeyStoreP"></a> + <a name="//apple_ref/swift/Protocol/GroupKeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13GroupKeyStoreP">GroupKeyStore</a> </code> </div> <div class="height-container"> @@ -278,15 +276,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Provide all local storage delegates.</p> + <p>A group key store stores the encryption keys for group messaging</p> - <a href="Protocols/KeyStore.html" class="slightly-smaller">See more</a> + <a href="Protocols/GroupKeyStore.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">KeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">GroupKeyStore</span> <span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -300,9 +298,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStoreP"></a> - <a name="//apple_ref/swift/Protocol/SenderKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP">SenderKeyStore</a> + <a name="/s:14SignalProtocol16IdentityKeyStoreP"></a> + <a name="//apple_ref/swift/Protocol/IdentityKeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP">IdentityKeyStore</a> </code> </div> <div class="height-container"> @@ -310,17 +308,49 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Implement the <code>SenderKeyStore</code> protocol to handle the sender key storage of the + <p>Implement the <code>IdentityKeyStore</code> protocol to handle the identity keys of the Signal Protocol. The keys should be stored in a secure database and be treated as unspecified data blobs.</p> - <a href="Protocols/SenderKeyStore.html" class="slightly-smaller">See more</a> + <a href="Protocols/IdentityKeyStore.html" class="slightly-smaller">See more</a> + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">IdentityKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + </ul> + </div> + <div class="task-group"> + <ul> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol8KeyStoreP"></a> + <a name="//apple_ref/swift/Protocol/KeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP">KeyStore</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Provide all local storage delegates.</p> + + <a href="Protocols/KeyStore.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SenderKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">KeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -354,7 +384,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">PreKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">PreKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -368,9 +398,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP"></a> - <a name="//apple_ref/swift/Protocol/IdentityKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP">IdentityKeyStore</a> + <a name="/s:14SignalProtocol14SenderKeyStoreP"></a> + <a name="//apple_ref/swift/Protocol/SenderKeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP">SenderKeyStore</a> </code> </div> <div class="height-container"> @@ -378,17 +408,17 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Implement the <code>IdentityKeyStore</code> protocol to handle the identity keys of the + <p>Implement the <code>SenderKeyStore</code> protocol to handle the sender key storage of the Signal Protocol. The keys should be stored in a secure database and be treated as unspecified data blobs.</p> - <a href="Protocols/IdentityKeyStore.html" class="slightly-smaller">See more</a> + <a href="Protocols/SenderKeyStore.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">IdentityKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SenderKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -402,9 +432,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP"></a> - <a name="//apple_ref/swift/Protocol/SignalCryptoProvider" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP">SignalCryptoProvider</a> + <a name="/s:14SignalProtocol12SessionStoreP"></a> + <a name="//apple_ref/swift/Protocol/SessionStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP">SessionStore</a> </code> </div> <div class="height-container"> @@ -412,17 +442,17 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The <code>SignalCryptoProvider</code> protocol can be implemented to provide a custom -implementation of the cryptographic functions. Set the crypto provider -by setting the static <code>provider</code> variable of the SignalCrypto class</p> + <p>Implement the <code>SessionStore</code> protocol to handle the session records of the +Signal Protocol. The records should be stored in a secure database and be treated as +unspecified data blobs.</p> - <a href="Protocols/SignalCryptoProvider.html" class="slightly-smaller">See more</a> + <a href="Protocols/SessionStore.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignalCryptoProvider</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SessionStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -456,7 +486,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignedPreKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignedPreKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -468,8 +498,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/GroupKeyStore.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/GroupKeyStore.html new file mode 100644 index 0000000..d12a4dd --- /dev/null +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/GroupKeyStore.html @@ -0,0 +1,331 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>GroupKeyStore Protocol Reference</title> + <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> + <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> + <meta charset='utf-8'> + <script src="../js/jquery.min.js" defer></script> + <script src="../js/jazzy.js" defer></script> + + </head> + <body> + <a name="//apple_ref/swift/Protocol/GroupKeyStore" class="dashAnchor"></a> + <a title="GroupKeyStore Protocol Reference"></a> + <header> + <div class="content-wrapper"> + <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> + <p class="header-right"><a href="https://github.com/christophhagen/LibSignalProtocolSwift"><img src="../img/gh.png"/>View on GitHub</a></p> + </div> + </header> + <div class="content-wrapper"> + <p id="breadcrumbs"> + <a href="../index.html">SignalProtocol Reference</a> + <img id="carat" src="../img/carat.png" /> + GroupKeyStore Protocol Reference + </p> + </div> + <div class="content-wrapper"> + <nav class="sidebar"> + <ul class="nav-groups"> + <li class="nav-group-name"> + <a href="../Classes.html">Classes</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Classes/ReceiverChain.html">ReceiverChain</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SenderKeyRecord.html">SenderKeyRecord</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SenderKeyState.html">SenderKeyState</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SessionRecord.html">SessionRecord</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SessionState.html">SessionState</a> + </li> + <li class="nav-group-task"> + <a href="../Classes/SignalError.html">SignalError</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Enums.html">Enumerations</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Enums/CipherTextType.html">CipherTextType</a> + </li> + <li class="nav-group-task"> + <a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a> + </li> + <li class="nav-group-task"> + <a href="../Enums/SignalErrorType.html">SignalErrorType</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Functions.html">Functions</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + </li> + <li class="nav-group-task"> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Protocols.html">Protocols</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/KeyStore.html">KeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/PreKeyStore.html">PreKeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/SenderKeyStore.html">SenderKeyStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/SessionStore.html">SessionStore</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a> + </li> + <li class="nav-group-task"> + <a href="../Protocols/SignedPreKeyStore.html">SignedPreKeyStore</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Structs.html">Structures</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/DeviceConsistencyMessage.html">DeviceConsistencyMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/DisplayableFingerprint.html">DisplayableFingerprint</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/Fingerprint.html">Fingerprint</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/GroupCipher.html">GroupCipher</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/HKDF.html">HKDF</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/KeyPair.html">KeyPair</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/PendingPreKey.html">PendingPreKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/PrivateKey.html">PrivateKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/PublicKey.html">PublicKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/RatchetChainKey.html">RatchetChainKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/RatchetRootKey.html">RatchetRootKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/ScannableFingerprint.html">ScannableFingerprint</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderChain.html">SenderChain</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderChainKey.html">SenderChainKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderKeyMessage.html">SenderKeyMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SenderMessageKey.html">SenderMessageKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionBuilder.html">SessionBuilder</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionCipher.html">SessionCipher</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionPreKey.html">SessionPreKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SignalCrypto.html">SignalCrypto</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SignalMessage.html">SignalMessage</a> + </li> + <li class="nav-group-task"> + <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> + </li> + </ul> + </li> + <li class="nav-group-name"> + <a href="../Typealiases.html">Type Aliases</a> + <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> + </li> + </ul> + </li> + </ul> + </nav> + <article class="main-content"> + <section> + <section class="section"> + <h1>GroupKeyStore</h1> + <div class="declaration"> + <div class="language"> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">GroupKeyStore</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span></code></pre> + + </div> + </div> + <p>A group key store stores the encryption keys for group messaging</p> + + </section> + <section class="section task-group-section"> + <div class="task-group"> + <ul> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol13GroupKeyStoreP0C7AddressQa"></a> + <a name="//apple_ref/swift/Alias/GroupAddress" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13GroupKeyStoreP0C7AddressQa">GroupAddress</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>The type that distinguishes different groups and devices/users</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">GroupAddress</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span> <span class="k">where</span> <span class="k">Self</span><span class="o">.</span><span class="kt">GroupAddress</span> <span class="o">==</span> <span class="k">Self</span><span class="o">.</span><span class="kt"><a href="../Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa">SenderKeyStoreType</a></span><span class="o">.</span><span class="kt">Address</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa"></a> + <a name="//apple_ref/swift/Alias/SenderKeyStoreType" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa">SenderKeyStoreType</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>The type of the sender key store</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">SenderKeyStoreType</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html">SenderKeyStore</a></span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol13GroupKeyStoreP06senderdE006SenderdE4TypeQzvp"></a> + <a name="//apple_ref/swift/Property/senderKeyStore" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13GroupKeyStoreP06senderdE006SenderdE4TypeQzvp">senderKeyStore</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>The Sender Key store that stores the records for the sender key module</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">senderKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa">SenderKeyStoreType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + </ul> + </div> + </section> + </section> + <section id="footer"> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> + </section> + </article> + </div> + </body> +</div> +</html> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/IdentityKeyStore.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/IdentityKeyStore.html index 44889df..5e723ff 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/IdentityKeyStore.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/IdentityKeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>IdentityKeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">IdentityKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">IdentityKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>IdentityKeyStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP7Address"></a> + <a name="/s:14SignalProtocol16IdentityKeyStoreP7AddressQa"></a> <a name="//apple_ref/swift/Alias/Address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>IdentityKeyStore</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">Address</span><span class="p">:</span> <span class="kt">Hashable</span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Address</span> <span class="p">:</span> <span class="kt">Hashable</span></code></pre> </div> </div> @@ -281,7 +278,8 @@ <h4>Declaration</h4> <div class="pointer"></div> <div class="abstract"> <p>Return the identity key pair. This key should be generated once at -install time by calling <code><a href="../Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV23generateIdentityKeyPair10Foundation4DataVyKFZ">SignalCrypto.generateIdentityKeyPair()</a></code>.</p> +install time by calling <code><a href="../Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV23generateIdentityKeyPair10Foundation4DataVyKFZ">SignalCrypto.generateIdentityKeyPair()</a></code>, +or given to the constructor.</p> <div class="aside aside-note"> <p class="aside-title">Note</p> An appropriate error should be thrown, if no identity key exists @@ -298,7 +296,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">getIdentityKeyData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">getIdentityKeyData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -312,60 +310,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataV08identitydH0_tKF"></a> - <a name="//apple_ref/swift/Method/store(identityKeyData:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataV08identitydH0_tKF">store(identityKeyData:)</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>Save the identity key pair.</p> -<div class="aside aside-throws"> - <p class="aside-title">Throws</p> - <code><a href="../Classes/SignalError.html">SignalError</a></code> of type <code>storageError</code>, if the data could not be saved - -</div> - - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">identityKeyData</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> - - </div> - </div> - <div> - <h4>Parameters</h4> - <table class="graybox"> - <tbody> - <tr> - <td> - <code> - <em>identityKeyData</em> - </code> - </td> - <td> - <div> - <p>The data to store</p> - </div> - </td> - </tr> - </tbody> - </table> - </div> - </section> - </div> - </li> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP8identity10Foundation4DataVSg7AddressQz3for_tKF"></a> + <a name="/s:14SignalProtocol16IdentityKeyStoreP8identity3for10Foundation4DataVSg7AddressQz_tKF"></a> <a name="//apple_ref/swift/Method/identity(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP8identity10Foundation4DataVSg7AddressQz3for_tKF">identity(for:)</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP8identity3for10Foundation4DataVSg7AddressQz_tKF">identity(for:)</a> </code> </div> <div class="height-container"> @@ -390,7 +337,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">identity</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">identity</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> </div> </div> @@ -423,9 +370,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataVSg8identity_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol16IdentityKeyStoreP5store8identity3fory10Foundation4DataVSg_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/store(identity:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataVSg8identity_7AddressQz3fortKF">store(identity:for:)</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStoreP5store8identity3fory10Foundation4DataVSg_7AddressQztKF">store(identity:for:)</a> </code> <span class="declaration-note"> Default implementation @@ -470,7 +417,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">?,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">?,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -548,7 +495,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">getIdentityKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">getIdentityKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -562,9 +509,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStorePAAE5storeyAA0D4PairV08identityD0_tKF"></a> - <a name="//apple_ref/swift/Method/store(identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE5storeyAA0D4PairV08identityD0_tKF">store(identityKey:)</a> + <a name="/s:14SignalProtocol16IdentityKeyStorePAAE09getPubliccD010Foundation4DataVyKF"></a> + <a name="//apple_ref/swift/Method/getPublicIdentityKey()" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE09getPubliccD010Foundation4DataVyKF">getPublicIdentityKey()</a> </code> <span class="declaration-note"> Extension method @@ -575,14 +522,15 @@ <h4>Return Value</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Save the identity key pair.</p> + <p>Return the public identity key. This key should be generated once at +install time by calling <code>KeyStore.generateIdentityKeyPair()</code>.</p> <div class="aside aside-note"> <p class="aside-title">Note</p> Possible errors: </div> -<li><code>invalidProtBuf</code> if key could not be converted to data</li> -<li><code>storageError</code>, if the data could not be saved</li> +<li><code>storageError</code> if the key data could not be accessed</li> +<li><code>invalidProtBuf</code> if the data is corrupt</li> <div class="aside aside-throws"> <p class="aside-title">Throws</p> <code><a href="../Classes/SignalError.html">SignalError</a></code> errors @@ -594,28 +542,13 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">getPublicIdentityKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> <div> - <h4>Parameters</h4> - <table class="graybox"> - <tbody> - <tr> - <td> - <code> - <em>identityKeyData</em> - </code> - </td> - <td> - <div> - <p>The data to store</p> - </div> - </td> - </tr> - </tbody> - </table> + <h4>Return Value</h4> + <p>The public identity key data</p> </div> </section> </div> @@ -655,7 +588,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">getIdentityKeyPublicData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">getIdentityKeyPublicData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -669,9 +602,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSb10Foundation4DataV8identity_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSb10Foundation4DataV_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/isTrusted(identity:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSb10Foundation4DataV8identity_7AddressQz3fortKF">isTrusted(identity:for:)</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSb10Foundation4DataV_7AddressQztKF">isTrusted(identity:for:)</a> </code> <span class="declaration-note"> Extension method @@ -698,7 +631,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">isTrusted</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">isTrusted</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -743,9 +676,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSbAA06PublicD0V8identity_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSbAA06PublicD0V_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/isTrusted(identity:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSbAA06PublicD0V8identity_7AddressQz3fortKF">isTrusted(identity:for:)</a> + <a class="token" href="#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSbAA06PublicD0V_7AddressQztKF">isTrusted(identity:for:)</a> </code> <span class="declaration-note"> Extension method @@ -767,7 +700,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">isTrusted</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">isTrusted</span><span class="p">(</span><span class="nv">identity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -814,8 +747,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/KeyStore.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/KeyStore.html index c54ffd5..a3462bb 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/KeyStore.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/KeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>KeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">KeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">KeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -248,9 +245,9 @@ <h3 class="section-name">Associated types</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP7Address"></a> + <a name="/s:14SignalProtocol8KeyStoreP7AddressQa"></a> <a name="//apple_ref/swift/Alias/Address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP7Address">Address</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a> </code> </div> <div class="height-container"> @@ -265,7 +262,7 @@ <h3 class="section-name">Associated types</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">Address</span><span class="p">:</span> <span class="kt">CustomStringConvertible</span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Address</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span> <span class="k">where</span> <span class="k">Self</span><span class="o">.</span><span class="kt">Address</span> <span class="o">==</span> <span class="k">Self</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa">IdentityKeyStoreType</a></span><span class="o">.</span><span class="kt">Address</span></code></pre> </div> </div> @@ -275,36 +272,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP12GroupAddress"></a> - <a name="//apple_ref/swift/Alias/GroupAddress" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP12GroupAddress">GroupAddress</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>The type that distinguishes different groups and devices/users</p> - - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">GroupAddress</span><span class="p">:</span> <span class="kt">CustomStringConvertible</span></code></pre> - - </div> - </div> - </section> - </div> - </li> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol8KeyStoreP08IdentitycD4Type"></a> + <a name="/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa"></a> <a name="//apple_ref/swift/Alias/IdentityKeyStoreType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP08IdentitycD4Type">IdentityKeyStoreType</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa">IdentityKeyStoreType</a> </code> </div> <div class="height-container"> @@ -319,7 +289,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">IdentityKeyStoreType</span><span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a></span> <span class="k">where</span> <span class="kt">IdentityKeyStoreType</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span> <span class="o">==</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">IdentityKeyStoreType</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a></span> <span class="k">where</span> <span class="k">Self</span><span class="o">.</span><span class="kt">IdentityKeyStoreType</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a></span> <span class="o">==</span> <span class="k">Self</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa">SessionStoreType</a></span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a></span></code></pre> </div> </div> @@ -329,36 +299,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP06SendercD4Type"></a> - <a name="//apple_ref/swift/Alias/SenderKeyStoreType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP06SendercD4Type">SenderKeyStoreType</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>The type of the sender key store</p> - - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">SenderKeyStoreType</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html">SenderKeyStore</a></span> <span class="k">where</span> <span class="kt">SenderKeyStoreType</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span> <span class="o">==</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP12GroupAddress">GroupAddress</a></span></code></pre> - - </div> - </div> - </section> - </div> - </li> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol8KeyStoreP07SessionD4Type"></a> + <a name="/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa"></a> <a name="//apple_ref/swift/Alias/SessionStoreType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP07SessionD4Type">SessionStoreType</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa">SessionStoreType</a> </code> </div> <div class="height-container"> @@ -373,7 +316,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">SessionStoreType</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html">SessionStore</a></span> <span class="k">where</span> <span class="kt">SessionStoreType</span><span class="o">.</span><span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span> <span class="o">==</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">SessionStoreType</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html">SessionStore</a></span></code></pre> </div> </div> @@ -394,9 +337,9 @@ <h3 class="section-name">variables</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzv"></a> + <a name="/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzvp"></a> <a name="//apple_ref/swift/Property/identityKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzv">identityKeyStore</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzvp">identityKeyStore</a> </code> </div> <div class="height-container"> @@ -411,7 +354,7 @@ <h3 class="section-name">variables</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">identityKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4Type">IdentityKeyStoreType</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">identityKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa">IdentityKeyStoreType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -421,9 +364,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pv"></a> + <a name="/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pvp"></a> <a name="//apple_ref/swift/Property/preKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pv">preKeyStore</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pvp">preKeyStore</a> </code> </div> <div class="height-container"> @@ -438,34 +381,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">preKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/PreKeyStore.html">PreKeyStore</a></span></code></pre> - - </div> - </div> - </section> - </div> - </li> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol8KeyStoreP06sendercD006SendercD4TypeQzv"></a> - <a name="//apple_ref/swift/Property/senderKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP06sendercD006SendercD4TypeQzv">senderKeyStore</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>The Sender Key store that stores the records for the sender key module</p> - - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">senderKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP06SendercD4Type">SenderKeyStoreType</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">preKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/PreKeyStore.html">PreKeyStore</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -475,9 +391,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzv"></a> + <a name="/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzvp"></a> <a name="//apple_ref/swift/Property/sessionStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzv">sessionStore</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzvp">sessionStore</a> </code> </div> <div class="height-container"> @@ -492,7 +408,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">sessionStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4Type">SessionStoreType</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">sessionStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa">SessionStoreType</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -502,9 +418,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pv"></a> + <a name="/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyStore" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pv">signedPreKeyStore</a> + <a class="token" href="#/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pvp">signedPreKeyStore</a> </code> </div> <div class="height-container"> @@ -519,7 +435,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignedPreKeyStore.html">SignedPreKeyStore</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeyStore</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignedPreKeyStore.html">SignedPreKeyStore</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -533,9 +449,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStorePAAE014createIdentityC010Foundation4DataVyKF"></a> - <a name="//apple_ref/swift/Method/createIdentityKey()" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE014createIdentityC010Foundation4DataVyKF">createIdentityKey()</a> + <a name="/s:14SignalProtocol8KeyStorePAAE021signatureWithIdentityC07message10Foundation4DataVAH_tKF"></a> + <a name="//apple_ref/swift/Method/signatureWithIdentityKey(message:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE021signatureWithIdentityC07message10Foundation4DataVAH_tKF">signatureWithIdentityKey(message:)</a> </code> <span class="declaration-note"> Extension method @@ -546,16 +462,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Create a new identity key pair and store it.</p> + <p>Sign a message with the identity key.</p> <div class="aside aside-note"> <p class="aside-title">Note</p> Possible errors: </div> -<li><code>noRandomBytes</code> if the crypto provider can’t provide random bytes.</li> -<li><code>curveError</code> if no public key could be created from the random private key.</li> -<li><code>invalidProtoBuf</code> if the key pair could no be serialized</li> -<li><code>storageError</code> if the data could not be saved</li> +<li><code>storageError</code> if the key data could not be accessed</li> +<li><code>invalidProtBuf</code> if the data is corrupt</li> +<li><code>invalidSignature</code> if the message could not be signed.</li> +<li><code>noRandomBytes</code> if the crypto provider could not provide random bytes</li> <div class="aside aside-throws"> <p class="aside-title">Throws</p> <code><a href="../Classes/SignalError.html">SignalError</a></code> errors @@ -567,7 +483,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createIdentityKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">signatureWithIdentityKey</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -581,9 +497,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStorePAAE18createSignedPrekey10Foundation4DataVs6UInt32V2id_s6UInt64V9timestamptKF"></a> - <a name="//apple_ref/swift/Method/createSignedPrekey(id:timestamp:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE18createSignedPrekey10Foundation4DataVs6UInt32V2id_s6UInt64V9timestamptKF">createSignedPrekey(id:timestamp:)</a> + <a name="/s:14SignalProtocol8KeyStorePAAE18updateSignedPrekey9timestamp10Foundation4DataVs6UInt64V_tKF"></a> + <a name="//apple_ref/swift/Method/updateSignedPrekey(timestamp:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE18updateSignedPrekey9timestamp10Foundation4DataVs6UInt64V_tKF">updateSignedPrekey(timestamp:)</a> </code> <span class="declaration-note"> Extension method @@ -617,7 +533,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createSignedPrekey</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span> <span class="o">=</span> <span class="kt">UInt64</span><span class="p">(</span><span class="kt">Date</span><span class="p">()</span><span class="o">.</span><span class="n">timeIntervalSince1970</span><span class="p">))</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">updateSignedPrekey</span><span class="p">(</span><span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span> <span class="o">=</span> <span class="kt">UInt64</span><span class="p">(</span><span class="kt">Date</span><span class="p">()</span><span class="o">.</span><span class="n">timeIntervalSince1970</span><span class="p">))</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -625,18 +541,6 @@ <h4>Declaration</h4> <h4>Parameters</h4> <table class="graybox"> <tbody> - <tr> - <td> - <code> - <em>id</em> - </code> - </td> - <td> - <div> - <p>The id of the signed pre key</p> - </div> - </td> - </tr> <tr> <td> <code> @@ -662,9 +566,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStorePAAE13createPreKeysSay10Foundation4DataVGs6UInt32V5start_Si5counttKF"></a> - <a name="//apple_ref/swift/Method/createPreKeys(start:count:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE13createPreKeysSay10Foundation4DataVGs6UInt32V5start_Si5counttKF">createPreKeys(start:count:)</a> + <a name="/s:14SignalProtocol8KeyStorePAAE13createPreKeys5countSay10Foundation4DataVGSi_tKF"></a> + <a name="//apple_ref/swift/Method/createPreKeys(count:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE13createPreKeys5countSay10Foundation4DataVGSi_tKF">createPreKeys(count:)</a> </code> <span class="declaration-note"> Extension method @@ -696,7 +600,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createPreKeys</span><span class="p">(</span><span class="nv">start</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt">Data</span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createPreKeys</span><span class="p">(</span><span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt">Data</span><span class="p">]</span></code></pre> </div> </div> @@ -704,18 +608,6 @@ <h4>Declaration</h4> <h4>Parameters</h4> <table class="graybox"> <tbody> - <tr> - <td> - <code> - <em>start</em> - </code> - </td> - <td> - <div> - <p>the starting pre key ID, inclusive.</p> - </div> - </td> - </tr> <tr> <td> <code> @@ -741,9 +633,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol8KeyStorePAAE11fingerprintAA11FingerprintV7AddressQz3for_AH05localG0tKF"></a> + <a name="/s:14SignalProtocol8KeyStorePAAE11fingerprint3for12localAddressAA11FingerprintV0H0Qz_AJtKF"></a> <a name="//apple_ref/swift/Method/fingerprint(for:localAddress:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE11fingerprintAA11FingerprintV7AddressQz3for_AH05localG0tKF">fingerprint(for:localAddress:)</a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE11fingerprint3for12localAddressAA11FingerprintV0H0Qz_AJtKF">fingerprint(for:localAddress:)</a> </code> <span class="declaration-note"> Extension method @@ -779,7 +671,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">fingerprint</span><span class="p">(</span><span class="k">for</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span><span class="p">,</span> <span class="nv">localAddress</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/Fingerprint.html">Fingerprint</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">fingerprint</span><span class="p">(</span><span class="k">for</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a></span><span class="p">,</span> <span class="nv">localAddress</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/Fingerprint.html">Fingerprint</a></span></code></pre> </div> </div> @@ -821,13 +713,79 @@ <h4>Return Value</h4> </section> </div> </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol8KeyStorePAAE4sign7message10Foundation4DataVAH_tKF"></a> + <a name="//apple_ref/swift/Method/sign(message:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol8KeyStorePAAE4sign7message10Foundation4DataVAH_tKF">sign(message:)</a> + </code> + <span class="declaration-note"> + Extension method + </span> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Sign a message with the identity key.</p> +<div class="aside aside-throws"> + <p class="aside-title">Throws</p> + SignalError errors + +</div> +<div class="aside aside-note"> + <p class="aside-title">Note</p> + +</div> +<li>invalidSignature, if the message could not be signed.</li> +<li>noRandomBytes, if the crypto provider could not provide random bytes.</li> +<li>storageError if the key data could not be accessed</li> +<li>invalidProtBuf if the data is corrupt</li> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + + </div> + </div> + <div> + <h4>Parameters</h4> + <table class="graybox"> + <tbody> + <tr> + <td> + <code> + <em>message</em> + </code> + </td> + <td> + <div> + <p>The message to sign</p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + <div> + <h4>Return Value</h4> + <p>The signature of the message, <code>KeyPair.signatureLength</code> bytes</p> + </div> + </section> + </div> + </li> </ul> </div> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/PreKeyStore.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/PreKeyStore.html index 1884fcb..181a2d6 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/PreKeyStore.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/PreKeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PreKeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">PreKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">PreKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>PreKeyStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP03preD010Foundation4DataVs6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP03preD03for10Foundation4DataVs6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/preKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP03preD010Foundation4DataVs6UInt32V3for_tKF">preKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP03preD03for10Foundation4DataVs6UInt32V_tKF">preKey(for:)</a> </code> <span class="declaration-note"> Default implementation @@ -285,7 +282,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">preKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">preKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -318,9 +315,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP5storey10Foundation4DataV03preD0_s6UInt32V3fortKF"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP5store03preD03fory10Foundation4DataV_s6UInt32VtKF"></a> <a name="//apple_ref/swift/Method/store(preKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP5storey10Foundation4DataV03preD0_s6UInt32V3fortKF">store(preKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP5store03preD03fory10Foundation4DataV_s6UInt32VtKF">store(preKey:for:)</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -381,9 +378,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP08containscD0Sbs6UInt32V3for_tF"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP08containscD03forSbs6UInt32V_tF"></a> <a name="//apple_ref/swift/Method/containsPreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP08containscD0Sbs6UInt32V3for_tF">containsPreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP08containscD03forSbs6UInt32V_tF">containsPreKey(for:)</a> </code> </div> <div class="height-container"> @@ -398,7 +395,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">containsPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">containsPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -431,9 +428,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP06removecD0ys6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP06removecD03forys6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/removePreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP06removecD0ys6UInt32V3for_tKF">removePreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP06removecD03forys6UInt32V_tKF">removePreKey(for:)</a> </code> </div> <div class="height-container"> @@ -453,7 +450,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">removePreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">removePreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -486,9 +483,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vv"></a> + <a name="/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/lastId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vv">lastId</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vvp">lastId</a> </code> </div> <div class="height-container"> @@ -503,7 +500,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">lastId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">lastId</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre> </div> </div> @@ -517,9 +514,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11PreKeyStorePAAE5storeyAA07SessioncD0V03preD0_tKF"></a> + <a name="/s:14SignalProtocol11PreKeyStorePAAE5store03preD0yAA07SessioncD0V_tKF"></a> <a name="//apple_ref/swift/Method/store(preKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11PreKeyStorePAAE5storeyAA07SessioncD0V03preD0_tKF">store(preKey:)</a> + <a class="token" href="#/s:14SignalProtocol11PreKeyStorePAAE5store03preD0yAA07SessioncD0V_tKF">store(preKey:)</a> </code> <span class="declaration-note"> Extension method @@ -549,7 +546,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKey.html">SessionPreKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKey.html">SessionPreKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -580,8 +577,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SenderKeyStore.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SenderKeyStore.html index c427104..fb0c359 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SenderKeyStore.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SenderKeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SenderKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SenderKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SenderKeyStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStoreP7Address"></a> + <a name="/s:14SignalProtocol14SenderKeyStoreP7AddressQa"></a> <a name="//apple_ref/swift/Alias/Address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP7Address">Address</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP7AddressQa">Address</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>SenderKeyStore</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">Address</span><span class="p">:</span> <span class="kt">Hashable</span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Address</span> <span class="p">:</span> <span class="kt">Hashable</span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStoreP06senderD010Foundation4DataVSg7AddressQz3for_tF"></a> + <a name="/s:14SignalProtocol14SenderKeyStoreP06senderD03for10Foundation4DataVSg7AddressQz_tF"></a> <a name="//apple_ref/swift/Method/senderKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP06senderD010Foundation4DataVSg7AddressQz3for_tF">senderKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP06senderD03for10Foundation4DataVSg7AddressQz_tF">senderKey(for:)</a> </code> <span class="declaration-note"> Default implementation @@ -300,7 +297,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">senderKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">senderKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> </div> </div> @@ -333,9 +330,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderKeyStoreP5storey10Foundation4DataV06senderD0_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol14SenderKeyStoreP5store06senderD03fory10Foundation4DataV_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/store(senderKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP5storey10Foundation4DataV06senderD0_7AddressQz3fortKF">store(senderKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderKeyStoreP5store06senderD03fory10Foundation4DataV_7AddressQztKF">store(senderKey:for:)</a> </code> <span class="declaration-note"> Default implementation @@ -368,7 +365,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">senderKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">senderKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -411,8 +408,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SessionStore.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SessionStore.html index 34fa485..dc2a3af 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SessionStore.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SessionStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SessionStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SessionStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SessionStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP7Address"></a> + <a name="/s:14SignalProtocol12SessionStoreP7AddressQa"></a> <a name="//apple_ref/swift/Alias/Address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP7Address">Address</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>SessionStore</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">associatedtype</span> <span class="kt">Address</span><span class="p">:</span> <span class="kt">Hashable</span></code></pre> + <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Address</span> <span class="p">:</span> <span class="kt">Hashable</span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP04loadC010Foundation4DataVSg7AddressQz3for_tKF"></a> + <a name="/s:14SignalProtocol12SessionStoreP04loadC03for10Foundation4DataVSg7AddressQz_tKF"></a> <a name="//apple_ref/swift/Method/loadSession(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP04loadC010Foundation4DataVSg7AddressQz3for_tKF">loadSession(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP04loadC03for10Foundation4DataVSg7AddressQz_tKF">loadSession(for:)</a> </code> <span class="declaration-note"> Default implementation @@ -305,7 +302,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">loadSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">loadSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span><span class="p">?</span></code></pre> </div> </div> @@ -338,9 +335,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP5storey10Foundation4DataV7session_7AddressQz3fortKF"></a> + <a name="/s:14SignalProtocol12SessionStoreP5store7session3fory10Foundation4DataV_7AddressQztKF"></a> <a name="//apple_ref/swift/Method/store(session:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP5storey10Foundation4DataV7session_7AddressQz3fortKF">store(session:for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP5store7session3fory10Foundation4DataV_7AddressQztKF">store(session:for:)</a> </code> <span class="declaration-note"> Default implementation @@ -380,7 +377,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">session</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">session</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -425,9 +422,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP08containsC0Sb7AddressQz3for_tF"></a> + <a name="/s:14SignalProtocol12SessionStoreP08containsC03forSb7AddressQz_tF"></a> <a name="//apple_ref/swift/Method/containsSession(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP08containsC0Sb7AddressQz3for_tF">containsSession(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP08containsC03forSb7AddressQz_tF">containsSession(for:)</a> </code> </div> <div class="height-container"> @@ -442,7 +439,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">containsSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address">Address</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">containsSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -475,9 +472,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol12SessionStoreP06deleteC0y7AddressQz3for_tKF"></a> + <a name="/s:14SignalProtocol12SessionStoreP06deleteC03fory7AddressQz_tKF"></a> <a name="//apple_ref/swift/Method/deleteSession(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol12SessionStoreP06deleteC0y7AddressQz3for_tKF">deleteSession(for:)</a> + <a class="token" href="#/s:14SignalProtocol12SessionStoreP06deleteC03fory7AddressQz_tKF">deleteSession(for:)</a> </code> </div> <div class="height-container"> @@ -497,7 +494,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">deleteSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">deleteSession</span><span class="p">(</span><span class="k">for</span> <span class="nv">address</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa">Address</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -532,8 +529,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SignalCryptoProvider.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SignalCryptoProvider.html index 2c5a8ac..68634c3 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SignalCryptoProvider.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SignalCryptoProvider.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalCryptoProvider</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignalCryptoProvider</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignalCryptoProvider</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SignalCryptoProvider</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP6random10Foundation4DataVSi5bytes_tKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP6random5bytes10Foundation4DataVSi_tKF"></a> <a name="//apple_ref/swift/Method/random(bytes:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP6random10Foundation4DataVSi5bytes_tKF">random(bytes:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP6random5bytes10Foundation4DataVSi_tKF">random(bytes:)</a> </code> </div> <div class="height-container"> @@ -265,7 +262,7 @@ <h1>SignalCryptoProvider</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -298,9 +295,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP10hmacSHA25610Foundation4DataVAG3for_AG4withtKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP10hmacSHA2563for4with10Foundation4DataVAI_AItKF"></a> <a name="//apple_ref/swift/Method/hmacSHA256(for:with:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP10hmacSHA25610Foundation4DataVAG3for_AG4withtKF">hmacSHA256(for:with:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP10hmacSHA2563for4with10Foundation4DataVAI_AItKF">hmacSHA256(for:with:)</a> </code> </div> <div class="height-container"> @@ -321,7 +318,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -354,9 +351,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP6sha51210Foundation4DataVAG3for_tKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP6sha5123for10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/sha512(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP6sha51210Foundation4DataVAG3for_tKF">sha512(for:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP6sha5123for10Foundation4DataVAH_tKF">sha512(for:)</a> </code> </div> <div class="height-container"> @@ -376,7 +373,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -409,9 +406,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF"></a> <a name="//apple_ref/swift/Method/encrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF">encrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF">encrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -431,7 +428,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -459,7 +456,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The encryption type to use, see <code>SignalEncryptionScheme</code></p> + <p>The encryption type to use, see <code><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></code></p> </div> </td> </tr> @@ -500,9 +497,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A14CryptoProviderP7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF"></a> + <a name="/s:14SignalProtocol0A14CryptoProviderP7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF"></a> <a name="//apple_ref/swift/Method/decrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF">decrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A14CryptoProviderP7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF">decrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -522,7 +519,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -550,7 +547,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The encryption type to use, see <code>SignalEncryptionScheme</code></p> + <p>The encryption type to use, see <code><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></code></p> </div> </td> </tr> @@ -593,8 +590,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SignedPreKeyStore.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SignedPreKeyStore.html index 618ce7c..9795630 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SignedPreKeyStore.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Protocols/SignedPreKeyStore.html @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignedPreKeyStore</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignedPreKeyStore</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">SignedPreKeyStore</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SignedPreKeyStore</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP06signeddE010Foundation4DataVs6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP06signeddE03for10Foundation4DataVs6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/signedPreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP06signeddE010Foundation4DataVs6UInt32V3for_tKF">signedPreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP06signeddE03for10Foundation4DataVs6UInt32V_tKF">signedPreKey(for:)</a> </code> <span class="declaration-note"> Default implementation @@ -285,7 +282,7 @@ <h4>Default Implementation</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">signedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">signedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -318,9 +315,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP5storey10Foundation4DataV06signeddE0_s6UInt32V3fortKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP5store06signeddE03fory10Foundation4DataV_s6UInt32VtKF"></a> <a name="//apple_ref/swift/Method/store(signedPreKey:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP5storey10Foundation4DataV06signeddE0_s6UInt32V3fortKF">store(signedPreKey:for:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP5store06signeddE03fory10Foundation4DataV_s6UInt32VtKF">store(signedPreKey:for:)</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -381,9 +378,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP08containscdE0Sbs6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP08containscdE03forSbs6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/containsSignedPreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP08containscdE0Sbs6UInt32V3for_tKF">containsSignedPreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP08containscdE03forSbs6UInt32V_tKF">containsSignedPreKey(for:)</a> </code> </div> <div class="height-container"> @@ -403,7 +400,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">containsSignedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">containsSignedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -436,9 +433,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP06removecdE0ys6UInt32V3for_tKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP06removecdE03forys6UInt32V_tKF"></a> <a name="//apple_ref/swift/Method/removeSignedPreKey(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP06removecdE0ys6UInt32V3for_tKF">removeSignedPreKey(for:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP06removecdE03forys6UInt32V_tKF">removeSignedPreKey(for:)</a> </code> </div> <div class="height-container"> @@ -458,7 +455,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">removeSignedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">removeSignedPreKey</span><span class="p">(</span><span class="k">for</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -509,7 +506,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">allIds</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt">UInt32</span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">allIds</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt">UInt32</span><span class="p">]</span></code></pre> </div> </div> @@ -523,9 +520,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vv"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/lastId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vv">lastId</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vvp">lastId</a> </code> </div> <div class="height-container"> @@ -540,7 +537,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">lastId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">lastId</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="p">{</span> <span class="k">get</span> <span class="k">set</span> <span class="p">}</span></code></pre> </div> </div> @@ -554,9 +551,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17SignedPreKeyStorePAAE5storeyAA07SessioncdE0V06signeddE0_tKF"></a> + <a name="/s:14SignalProtocol17SignedPreKeyStorePAAE5store06signeddE0yAA07SessioncdE0V_tKF"></a> <a name="//apple_ref/swift/Method/store(signedPreKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStorePAAE5storeyAA07SessioncdE0V06signeddE0_tKF">store(signedPreKey:)</a> + <a class="token" href="#/s:14SignalProtocol17SignedPreKeyStorePAAE5store06signeddE0yAA07SessioncdE0V_tKF">store(signedPreKey:)</a> </code> <span class="declaration-note"> Extension method @@ -586,7 +583,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">store</span><span class="p">(</span><span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -617,8 +614,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs.html index 3babc5b..b0ca282 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>Structs Reference</title> + <title>Structures Reference</title> <link rel="stylesheet" type="text/css" href="css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="css/highlight.css" /> <meta charset='utf-8'> @@ -10,7 +10,8 @@ </head> <body> - <a title="Structs Reference"></a> + <a name="//apple_ref/swift/Section/Structures" class="dashAnchor"></a> + <a title="Structures Reference"></a> <header> <div class="content-wrapper"> <p><a href="index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -21,7 +22,7 @@ <p id="breadcrumbs"> <a href="index.html">SignalProtocol Reference</a> <img id="carat" src="img/carat.png" /> - Structs Reference + Structures Reference </p> </div> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -224,8 +222,8 @@ <article class="main-content"> <section> <section class="section"> - <h1>Structs</h1> - <p>The following structs are available globally.</p> + <h1>Structures</h1> + <p>The following structures are available globally.</p> </section> <section class="section task-group-section"> @@ -234,9 +232,9 @@ <h1>Structs</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV"></a> - <a name="//apple_ref/swift/Struct/SignalCrypto" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV">SignalCrypto</a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V"></a> + <a name="//apple_ref/swift/Struct/DeviceConsistencyCommitmentV0" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V">DeviceConsistencyCommitmentV0</a> </code> </div> <div class="height-container"> @@ -244,19 +242,17 @@ <h1>Structs</h1> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The <code>SignalCrypto</code> struct exposes all necessary cryptocraphic functions to the protocol. -By default CommonCrypto is used to provide these functions, but a custom provider can be -implemented as well. -Implement a provider that conforms to the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol and set the <code> -</code>SignalCrypto.provider` variable to customise the implementation.</p> + <p>Create commitments that are hashes of the identity keys of different devices. +These can be used to ensure that all identities are consistent across multiple +devices.</p> - <a href="Structs/SignalCrypto.html" class="slightly-smaller">See more</a> + <a href="Structs/DeviceConsistencyCommitmentV0.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCrypto</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyCommitmentV0</span></code></pre> </div> </div> @@ -270,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV"></a> - <a name="//apple_ref/swift/Struct/DisplayableFingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV">DisplayableFingerprint</a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV"></a> + <a name="//apple_ref/swift/Struct/DeviceConsistencyMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV">DeviceConsistencyMessage</a> </code> </div> <div class="height-container"> @@ -280,15 +276,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A Fingerprint to verify the keys specifically for displaying to the user</p> + <p>Device consistency messages can be sent between multiple devices to verify that the +identity keys and are consistent across devices.</p> - <a href="Structs/DisplayableFingerprint.html" class="slightly-smaller">See more</a> + <a href="Structs/DeviceConsistencyMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">DisplayableFingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyMessage</span></code></pre> </div> </div> @@ -302,9 +299,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV"></a> - <a name="//apple_ref/swift/Struct/HKDF" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV">HKDF</a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV"></a> + <a name="//apple_ref/swift/Struct/DeviceConsistencySignature" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV">DeviceConsistencySignature</a> </code> </div> <div class="height-container"> @@ -312,15 +309,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The Key derivation function used for the Ratchet.</p> + <p>A signature used for device consistency checks</p> - <a href="Structs/HKDF.html" class="slightly-smaller">See more</a> + <a href="Structs/DeviceConsistencySignature.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">HKDF</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencySignature</span></code></pre> </div> </div> @@ -334,9 +331,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV"></a> - <a name="//apple_ref/swift/Struct/DeviceConsistencySignature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV">DeviceConsistencySignature</a> + <a name="/s:14SignalProtocol7KeyPairV"></a> + <a name="//apple_ref/swift/Struct/KeyPair" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV">KeyPair</a> </code> </div> <div class="height-container"> @@ -344,15 +341,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A signature used for device consistency checks</p> + <p>A pair of public and private key for elliptic curve cryptopgraphy</p> - <a href="Structs/DeviceConsistencySignature.html" class="slightly-smaller">See more</a> + <a href="Structs/KeyPair.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencySignature</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">KeyPair</span></code></pre> </div> </div> @@ -366,9 +363,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV"></a> - <a name="//apple_ref/swift/Struct/SenderKeyMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV">SenderKeyMessage</a> + <a name="/s:14SignalProtocol10PrivateKeyV"></a> + <a name="//apple_ref/swift/Struct/PrivateKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV">PrivateKey</a> </code> </div> <div class="height-container"> @@ -376,15 +373,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A sender key message is used to send an encrypted message in an existing group session.</p> + <p>The private part of an elliptic curve key pair. +The key has a length of <code>KeyPair.keyLength</code> byte.</p> - <a href="Structs/SenderKeyMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/PrivateKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PrivateKey</span></code></pre> </div> </div> @@ -398,9 +396,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV"></a> - <a name="//apple_ref/swift/Struct/SessionPreKeyBundle" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV">SessionPreKeyBundle</a> + <a name="/s:14SignalProtocol9PublicKeyV"></a> + <a name="//apple_ref/swift/Struct/PublicKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV">PublicKey</a> </code> </div> <div class="height-container"> @@ -408,15 +406,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Pre key bundles are used to establish new sessions.</p> + <p>The public part of an elliptic curve key pair. +The key has a length of <code>KeyPair.keyLength</code> byte.</p> - <a href="Structs/SessionPreKeyBundle.html" class="slightly-smaller">See more</a> + <a href="Structs/PublicKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyBundle</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PublicKey</span></code></pre> </div> </div> @@ -430,9 +429,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV"></a> - <a name="//apple_ref/swift/Struct/SessionSignedPreKeyPublic" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV">SessionSignedPreKeyPublic</a> + <a name="/s:14SignalProtocol11GroupCipherV"></a> + <a name="//apple_ref/swift/Struct/GroupCipher" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV">GroupCipher</a> </code> </div> <div class="height-container"> @@ -440,17 +439,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A public signed pre key is used as part of a session bundle to establish a new session. -The public part of the key pair is signed with the identity key of the creator -to provide authentication.</p> + <p>Use a <code>GroupCipher</code> to encrypt and decrypt group messages for already +existing sessions.</p> - <a href="Structs/SessionSignedPreKeyPublic.html" class="slightly-smaller">See more</a> + <a href="Structs/GroupCipher.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionSignedPreKeyPublic</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">GroupCipher</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="Protocols/GroupKeyStore.html">GroupKeyStore</a></span></code></pre> </div> </div> @@ -485,7 +483,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionCipher</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionCipher</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -499,41 +497,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV"></a> - <a name="//apple_ref/swift/Struct/SenderChainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV">SenderChainKey</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p>A key in the sender chain.</p> - - <a href="Structs/SenderChainKey.html" class="slightly-smaller">See more</a> - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderChainKey</span></code></pre> - - </div> - </div> - </section> - </div> - </li> - </ul> - </div> - <div class="task-group"> - <ul> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV"></a> - <a name="//apple_ref/swift/Struct/SessionSignedPreKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV">SessionSignedPreKey</a> + <a name="/s:14SignalProtocol0A12CommonCryptoV"></a> + <a name="//apple_ref/swift/Struct/SignalCommonCrypto" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV">SignalCommonCrypto</a> </code> </div> <div class="height-container"> @@ -541,17 +507,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A signed pre key is used as part of a session bundle to establish a new session. -The public part of the key pair is signed with the identity key of the creator -to provide authentication.</p> + <p>Implementation of the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol using +CommonCrypto.</p> - <a href="Structs/SessionSignedPreKey.html" class="slightly-smaller">See more</a> + <a href="Structs/SignalCommonCrypto.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionSignedPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCommonCrypto</span> <span class="p">:</span> <span class="kt"><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> </div> </div> @@ -565,9 +530,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV"></a> - <a name="//apple_ref/swift/Struct/Fingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV">Fingerprint</a> + <a name="/s:14SignalProtocol0A6CryptoV"></a> + <a name="//apple_ref/swift/Struct/SignalCrypto" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV">SignalCrypto</a> </code> </div> <div class="height-container"> @@ -575,16 +540,19 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A fingerprint can be used to ensure that the identities of a communication channel -match, and to detect MITM attacks.</p> + <p>The <code>SignalCrypto</code> struct exposes all necessary cryptocraphic functions to the protocol. +By default CommonCrypto is used to provide these functions, but a custom provider can be +implemented as well. +Implement a provider that conforms to the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol and set the <code> +</code>SignalCrypto.provider` variable to customise the implementation.</p> - <a href="Structs/Fingerprint.html" class="slightly-smaller">See more</a> + <a href="Structs/SignalCrypto.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Fingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCrypto</span></code></pre> </div> </div> @@ -598,9 +566,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV"></a> - <a name="//apple_ref/swift/Struct/SymmetricParameters" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV">SymmetricParameters</a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV"></a> + <a name="//apple_ref/swift/Struct/DisplayableFingerprint" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV">DisplayableFingerprint</a> </code> </div> <div class="height-container"> @@ -608,15 +576,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>All parameters needed to establish a session</p> + <p>A Fingerprint to verify the keys specifically for displaying to the user</p> - <a href="Structs/SymmetricParameters.html" class="slightly-smaller">See more</a> + <a href="Structs/DisplayableFingerprint.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SymmetricParameters</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">DisplayableFingerprint</span></code></pre> </div> </div> @@ -630,9 +598,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV"></a> - <a name="//apple_ref/swift/Struct/KeyPair" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV">KeyPair</a> + <a name="/s:14SignalProtocol11FingerprintV"></a> + <a name="//apple_ref/swift/Struct/Fingerprint" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV">Fingerprint</a> </code> </div> <div class="height-container"> @@ -640,15 +608,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A pair of public and private key for elliptic curve cryptopgraphy</p> + <p>A fingerprint can be used to ensure that the identities of a communication channel +match, and to detect MITM attacks.</p> - <a href="Structs/KeyPair.html" class="slightly-smaller">See more</a> + <a href="Structs/Fingerprint.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">KeyPair</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Fingerprint</span></code></pre> </div> </div> @@ -662,9 +631,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7AddressV"></a> - <a name="//apple_ref/swift/Struct/SignalAddress" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7AddressV">SignalAddress</a> + <a name="/s:14SignalProtocol20ScannableFingerprintV"></a> + <a name="//apple_ref/swift/Struct/ScannableFingerprint" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV">ScannableFingerprint</a> </code> </div> <div class="height-container"> @@ -672,16 +641,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A <code>SignalAddress</code> identifies a single device of a Signal user, with a user -<code>identifier</code> (such as a phone number), and the <code>deviceId</code> which specifies the device</p> + <p>A fingerprint optimised to be scanned through e.g. a QR Code</p> - <a href="Structs/SignalAddress.html" class="slightly-smaller">See more</a> + <a href="Structs/ScannableFingerprint.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalAddress</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">ScannableFingerprint</span></code></pre> </div> </div> @@ -695,9 +663,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV"></a> - <a name="//apple_ref/swift/Struct/PublicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV">PublicKey</a> + <a name="/s:14SignalProtocol17CipherTextMessageV"></a> + <a name="//apple_ref/swift/Struct/CipherTextMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV">CipherTextMessage</a> </code> </div> <div class="height-container"> @@ -705,16 +673,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The public part of an elliptic curve key pair. -The key has a length of <code>KeyPair.keyLength</code> byte.</p> + <p>A <code>CipherTextMessage</code> encapsulates an encrypted message and the type-</p> - <a href="Structs/PublicKey.html" class="slightly-smaller">See more</a> + <a href="Structs/CipherTextMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PublicKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">CipherTextMessage</span></code></pre> </div> </div> @@ -728,9 +695,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV"></a> - <a name="//apple_ref/swift/Struct/RatchetChainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV">RatchetChainKey</a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV"></a> + <a name="//apple_ref/swift/Struct/PreKeySignalMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV">PreKeySignalMessage</a> </code> </div> <div class="height-container"> @@ -738,15 +705,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A chain key for the ratchet.</p> + <p>A <code>PreKeySignalMessage</code> can be used to establish a new session.</p> - <a href="Structs/RatchetChainKey.html" class="slightly-smaller">See more</a> + <a href="Structs/PreKeySignalMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PreKeySignalMessage</span></code></pre> </div> </div> @@ -760,9 +727,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageV"></a> - <a name="//apple_ref/swift/Struct/CipherTextMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV">CipherTextMessage</a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV"></a> + <a name="//apple_ref/swift/Struct/SenderKeyDistributionMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV">SenderKeyDistributionMessage</a> </code> </div> <div class="height-container"> @@ -770,15 +737,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A <code>CipherTextMessage</code> encapsulates an encrypted message and the type-</p> + <p><code>SenderKeyDistributionMessage</code>s are used to establish group sessions.</p> - <a href="Structs/CipherTextMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/SenderKeyDistributionMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">CipherTextMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyDistributionMessage</span></code></pre> </div> </div> @@ -792,9 +759,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V"></a> - <a name="//apple_ref/swift/Struct/DeviceConsistencyCommitmentV0" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V">DeviceConsistencyCommitmentV0</a> + <a name="/s:14SignalProtocol16SenderKeyMessageV"></a> + <a name="//apple_ref/swift/Struct/SenderKeyMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV">SenderKeyMessage</a> </code> </div> <div class="height-container"> @@ -802,17 +769,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Create commitments that are hashes of the identity keys of different devices. -These can be used to ensure that all identities are consistent across multiple -devices.</p> + <p>A sender key message is used to send an encrypted message in an existing group session.</p> - <a href="Structs/DeviceConsistencyCommitmentV0.html" class="slightly-smaller">See more</a> + <a href="Structs/SenderKeyMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyCommitmentV0</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyMessage</span></code></pre> </div> </div> @@ -826,9 +791,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV"></a> - <a name="//apple_ref/swift/Struct/GroupCipher" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV">GroupCipher</a> + <a name="/s:14SignalProtocol0A7MessageV"></a> + <a name="//apple_ref/swift/Struct/SignalMessage" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV">SignalMessage</a> </code> </div> <div class="height-container"> @@ -836,16 +801,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Use a <code>GroupCipher</code> to encrypt and decrypt group messages for already -existing sessions.</p> + <p>A <code>SignalMessage</code> is used to send an encrypted message in an established session.</p> - <a href="Structs/GroupCipher.html" class="slightly-smaller">See more</a> + <a href="Structs/SignalMessage.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">GroupCipher</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalMessage</span></code></pre> </div> </div> @@ -859,9 +823,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV"></a> - <a name="//apple_ref/swift/Struct/SenderChain" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV">SenderChain</a> + <a name="/s:14SignalProtocol4HKDFV"></a> + <a name="//apple_ref/swift/Struct/HKDF" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol4HKDFV">HKDF</a> </code> </div> <div class="height-container"> @@ -869,15 +833,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The sender chain of a ratchet used to encrypt messages for sending.</p> + <p>The Key derivation function used for the Ratchet.</p> - <a href="Structs/SenderChain.html" class="slightly-smaller">See more</a> + <a href="Structs/HKDF.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderChain</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">HKDF</span></code></pre> </div> </div> @@ -891,9 +855,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageV"></a> - <a name="//apple_ref/swift/Struct/DeviceConsistencyMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV">DeviceConsistencyMessage</a> + <a name="/s:14SignalProtocol15RatchetChainKeyV"></a> + <a name="//apple_ref/swift/Struct/RatchetChainKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV">RatchetChainKey</a> </code> </div> <div class="height-container"> @@ -901,16 +865,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Device consistency messages can be sent between multiple devices to verify that the -identity keys and are consistent across devices.</p> + <p>A chain key for the ratchet.</p> - <a href="Structs/DeviceConsistencyMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/RatchetChainKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetChainKey</span></code></pre> </div> </div> @@ -924,9 +887,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV"></a> - <a name="//apple_ref/swift/Struct/SignalCommonCrypto" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV">SignalCommonCrypto</a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV"></a> + <a name="//apple_ref/swift/Struct/RatchetMessageKeys" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV">RatchetMessageKeys</a> </code> </div> <div class="height-container"> @@ -934,16 +897,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Implementation of the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol using -CommonCrypto.</p> + <p>The keys needed to encrypt/decrypt a message</p> - <a href="Structs/SignalCommonCrypto.html" class="slightly-smaller">See more</a> + <a href="Structs/RatchetMessageKeys.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCommonCrypto</span><span class="p">:</span> <span class="kt"><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetMessageKeys</span></code></pre> </div> </div> @@ -957,9 +919,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV"></a> - <a name="//apple_ref/swift/Struct/SessionPreKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV">SessionPreKey</a> + <a name="/s:14SignalProtocol14RatchetRootKeyV"></a> + <a name="//apple_ref/swift/Struct/RatchetRootKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV">RatchetRootKey</a> </code> </div> <div class="height-container"> @@ -967,16 +929,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A pre key used to esatblish a session. A unique pre key is used for -each new session.</p> + <p>A root key is within a ratchet to derive new sender and receiver chain keys.</p> - <a href="Structs/SessionPreKey.html" class="slightly-smaller">See more</a> + <a href="Structs/RatchetRootKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetRootKey</span></code></pre> </div> </div> @@ -990,9 +951,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicV"></a> - <a name="//apple_ref/swift/Struct/SessionPreKeyPublic" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV">SessionPreKeyPublic</a> + <a name="/s:14SignalProtocol11SenderChainV"></a> + <a name="//apple_ref/swift/Struct/SenderChain" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV">SenderChain</a> </code> </div> <div class="height-container"> @@ -1000,16 +961,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A pre key used to esatblish a session. A unique pre key is used for -each new session.</p> + <p>The sender chain of a ratchet used to encrypt messages for sending.</p> - <a href="Structs/SessionPreKeyPublic.html" class="slightly-smaller">See more</a> + <a href="Structs/SenderChain.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyPublic</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderChain</span></code></pre> </div> </div> @@ -1023,9 +983,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV"></a> - <a name="//apple_ref/swift/Struct/PreKeySignalMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV">PreKeySignalMessage</a> + <a name="/s:14SignalProtocol14SenderChainKeyV"></a> + <a name="//apple_ref/swift/Struct/SenderChainKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV">SenderChainKey</a> </code> </div> <div class="height-container"> @@ -1033,15 +993,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A <code>PreKeySignalMessage</code> can be used to establish a new session.</p> + <p>A key in the sender chain.</p> - <a href="Structs/PreKeySignalMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/SenderChainKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PreKeySignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderChainKey</span></code></pre> </div> </div> @@ -1073,39 +1033,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderMessageKey</span></code></pre> - - </div> - </div> - </section> - </div> - </li> - </ul> - </div> - <div class="task-group"> - <ul> - <li class="item"> - <div> - <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV"></a> - <a name="//apple_ref/swift/Struct/SenderKeyDistributionMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV">SenderKeyDistributionMessage</a> - </code> - </div> - <div class="height-container"> - <div class="pointer-container"></div> - <section class="section"> - <div class="pointer"></div> - <div class="abstract"> - <p><code>SenderKeyDistributionMessage</code>s are used to establish group sessions.</p> - - <a href="Structs/SenderKeyDistributionMessage.html" class="slightly-smaller">See more</a> - </div> - <div class="declaration"> - <h4>Declaration</h4> - <div class="language"> - <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyDistributionMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderMessageKey</span></code></pre> </div> </div> @@ -1137,7 +1065,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">PendingPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">PendingPreKey</span></code></pre> </div> </div> @@ -1151,9 +1079,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV"></a> - <a name="//apple_ref/swift/Struct/ScannableFingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV">ScannableFingerprint</a> + <a name="/s:14SignalProtocol14SessionBuilderV"></a> + <a name="//apple_ref/swift/Struct/SessionBuilder" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV">SessionBuilder</a> </code> </div> <div class="height-container"> @@ -1161,15 +1089,29 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A fingerprint optimised to be scanned through e.g. a QR Code</p> + <p>Session builder is responsible for setting up encrypted sessions. + Once a session has been established, session_cipher + can be used to encrypt/decrypt messages in that session.</p> - <a href="Structs/ScannableFingerprint.html" class="slightly-smaller">See more</a> +<p>Sessions are built from one these different possible vectors:</p> + +<ul> +<li>A session_pre_key_bundle retrieved from a server</li> +<li>A pre_key_signal_message received from a client</li> +</ul> + +<p>Sessions are constructed per Signal Protocol address + (recipient name + device ID tuple). Remote logical users are identified by + their recipient name, and each logical recipient can have multiple + physical devices.</p> + + <a href="Structs/SessionBuilder.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">ScannableFingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionBuilder</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -1183,9 +1125,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV"></a> - <a name="//apple_ref/swift/Struct/SignalMessage" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV">SignalMessage</a> + <a name="/s:14SignalProtocol13SessionPreKeyV"></a> + <a name="//apple_ref/swift/Struct/SessionPreKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV">SessionPreKey</a> </code> </div> <div class="height-container"> @@ -1193,15 +1135,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A <code>SignalMessage</code> is used to send an encrypted message in an established session.</p> + <p>A pre key used to esatblish a session. A unique pre key is used for +each new session.</p> - <a href="Structs/SignalMessage.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionPreKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionPreKey</span></code></pre> </div> </div> @@ -1215,9 +1158,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV"></a> - <a name="//apple_ref/swift/Struct/PrivateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV">PrivateKey</a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV"></a> + <a name="//apple_ref/swift/Struct/SessionPreKeyBundle" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV">SessionPreKeyBundle</a> </code> </div> <div class="height-container"> @@ -1225,16 +1168,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The private part of an elliptic curve key pair. -The key has a length of <code>KeyPair.keyLength</code> byte.</p> + <p>Pre key bundles are used to establish new sessions.</p> - <a href="Structs/PrivateKey.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionPreKeyBundle.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PrivateKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyBundle</span></code></pre> </div> </div> @@ -1248,9 +1190,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV"></a> - <a name="//apple_ref/swift/Struct/RatchetMessageKeys" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV">RatchetMessageKeys</a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV"></a> + <a name="//apple_ref/swift/Struct/SessionPreKeyPublic" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV">SessionPreKeyPublic</a> </code> </div> <div class="height-container"> @@ -1258,15 +1200,16 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>The keys needed to encrypt/decrypt a message</p> + <p>A pre key used to esatblish a session. A unique pre key is used for +each new session.</p> - <a href="Structs/RatchetMessageKeys.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionPreKeyPublic.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetMessageKeys</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionPreKeyPublic</span></code></pre> </div> </div> @@ -1280,9 +1223,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A13SenderKeyNameV"></a> - <a name="//apple_ref/swift/Struct/SignalSenderKeyName" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A13SenderKeyNameV">SignalSenderKeyName</a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV"></a> + <a name="//apple_ref/swift/Struct/SessionSignedPreKey" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV">SessionSignedPreKey</a> </code> </div> <div class="height-container"> @@ -1290,15 +1233,17 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A representation of a (group + sender + device) tuple</p> + <p>A signed pre key is used as part of a session bundle to establish a new session. +The public part of the key pair is signed with the identity key of the creator +to provide authentication.</p> - <a href="Structs/SignalSenderKeyName.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionSignedPreKey.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalSenderKeyName</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionSignedPreKey</span></code></pre> </div> </div> @@ -1312,9 +1257,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV"></a> - <a name="//apple_ref/swift/Struct/RatchetRootKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV">RatchetRootKey</a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV"></a> + <a name="//apple_ref/swift/Struct/SessionSignedPreKeyPublic" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV">SessionSignedPreKeyPublic</a> </code> </div> <div class="height-container"> @@ -1322,15 +1267,17 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>A root key is within a ratchet to derive new sender and receiver chain keys.</p> + <p>A public signed pre key is used as part of a session bundle to establish a new session. +The public part of the key pair is signed with the identity key of the creator +to provide authentication.</p> - <a href="Structs/RatchetRootKey.html" class="slightly-smaller">See more</a> + <a href="Structs/SessionSignedPreKeyPublic.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetRootKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionSignedPreKeyPublic</span></code></pre> </div> </div> @@ -1344,9 +1291,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV"></a> - <a name="//apple_ref/swift/Struct/SessionBuilder" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV">SessionBuilder</a> + <a name="/s:14SignalProtocol19SymmetricParametersV"></a> + <a name="//apple_ref/swift/Struct/SymmetricParameters" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV">SymmetricParameters</a> </code> </div> <div class="height-container"> @@ -1354,29 +1301,15 @@ <h4>Declaration</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Session builder is responsible for setting up encrypted sessions. - Once a session has been established, session_cipher - can be used to encrypt/decrypt messages in that session.</p> - -<p>Sessions are built from one these different possible vectors:</p> - -<ul> -<li>A session_pre_key_bundle retrieved from a server</li> -<li>A pre_key_signal_message received from a client</li> -</ul> - -<p>Sessions are constructed per Signal Protocol address - (recipient name + device ID tuple). Remote logical users are identified by - their recipient name, and each logical recipient can have multiple - physical devices.</p> + <p>All parameters needed to establish a session</p> - <a href="Structs/SessionBuilder.html" class="slightly-smaller">See more</a> + <a href="Structs/SymmetricParameters.html" class="slightly-smaller">See more</a> </div> <div class="declaration"> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SessionBuilder</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SymmetricParameters</span></code></pre> </div> </div> @@ -1388,8 +1321,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/CipherTextMessage.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/CipherTextMessage.html index 8b2ac7e..ecda935 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/CipherTextMessage.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/CipherTextMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>CipherTextMessage Struct Reference</title> + <title>CipherTextMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/CipherTextMessage" class="dashAnchor"></a> - <a title="CipherTextMessage Struct Reference"></a> + <a title="CipherTextMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - CipherTextMessage Struct Reference + CipherTextMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>CipherTextMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">CipherTextMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">CipherTextMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>CipherTextMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOv"></a> + <a name="/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOvp"></a> <a name="//apple_ref/swift/Property/type" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOv">type</a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOvp">type</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>CipherTextMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/CipherTextType.html">CipherTextType</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/CipherTextType.html">CipherTextType</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/data" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVv">data</a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVvp">data</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageVAcA0cD4TypeO4type_10Foundation4DataV4datatcfc"></a> + <a name="/s:14SignalProtocol17CipherTextMessageV4type4dataAcA0cD4TypeO_10Foundation4DataVtcfc"></a> <a name="//apple_ref/swift/Method/init(type:data:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageVAcA0cD4TypeO4type_10Foundation4DataV4datatcfc">init(type:data:)</a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4type4dataAcA0cD4TypeO_10Foundation4DataVtcfc">init(type:data:)</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/CipherTextType.html">CipherTextType</a></span><span class="p">,</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">type</span><span class="p">:</span> <span class="kt"><a href="../Enums/CipherTextType.html">CipherTextType</a></span><span class="p">,</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -353,6 +350,13 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -373,7 +377,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -383,9 +387,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol17CipherTextMessageVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol17CipherTextMessageV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol17CipherTextMessageVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol17CipherTextMessageV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -405,7 +409,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -436,8 +440,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencyCommitmentV0.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencyCommitmentV0.html index 77d7402..2eb146a 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencyCommitmentV0.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencyCommitmentV0.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>DeviceConsistencyCommitmentV0 Struct Reference</title> + <title>DeviceConsistencyCommitmentV0 Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/DeviceConsistencyCommitmentV0" class="dashAnchor"></a> - <a title="DeviceConsistencyCommitmentV0 Struct Reference"></a> + <a title="DeviceConsistencyCommitmentV0 Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - DeviceConsistencyCommitmentV0 Struct Reference + DeviceConsistencyCommitmentV0 Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>DeviceConsistencyCommitmentV0</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyCommitmentV0</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyCommitmentV0</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>DeviceConsistencyCommitmentV0</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvZ"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvpZ"></a> <a name="//apple_ref/swift/Variable/codeVersion" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvZ">codeVersion</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvpZ">codeVersion</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>DeviceConsistencyCommitmentV0</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">codeVersion</span><span class="p">:</span> <span class="kt">UInt16</span> <span class="o">=</span> <span class="mi">0</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">codeVersion</span><span class="p">:</span> <span class="kt">UInt16</span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/version" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvZ">version</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvpZ">version</a> </code> </div> <div class="height-container"> @@ -287,7 +284,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span> <span class="o">=</span> <span class="s">"DeviceConsistencyCommitment_V0"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -297,9 +294,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vv"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/generation" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vv">generation</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vvp">generation</a> </code> </div> <div class="height-container"> @@ -314,7 +311,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -324,9 +321,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/serialized" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVv">serialized</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVvp">serialized</a> </code> </div> <div class="height-container"> @@ -341,7 +338,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">serialized</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">serialized</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -351,9 +348,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0VACs6UInt32V10generation_SayAA9PublicKeyVG08identityJ4ListtKcfc"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generation15identityKeyListACs6UInt32V_SayAA06PublicI0VGtKcfc"></a> <a name="//apple_ref/swift/Method/init(generation:identityKeyList:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0VACs6UInt32V10generation_SayAA9PublicKeyVG08identityJ4ListtKcfc">init(generation:identityKeyList:)</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generation15identityKeyListACs6UInt32V_SayAA06PublicI0VGtKcfc">init(generation:identityKeyList:)</a> </code> </div> <div class="height-container"> @@ -374,7 +371,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">identityKeyList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">])</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">identityKeyList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">])</span> <span class="k">throws</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCodeSSSayAA0cD9SignatureVG3for_tKF"></a> + <a name="/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCode3forSSSayAA0cD9SignatureVG_tKF"></a> <a name="//apple_ref/swift/Method/generateCode(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCodeSSSayAA0cD9SignatureVG3for_tKF">generateCode(for:)</a> + <a class="token" href="#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCode3forSSSayAA0cD9SignatureVG_tKF">generateCode(for:)</a> </code> </div> <div class="height-container"> @@ -426,7 +423,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">generateCode</span><span class="p">(</span><span class="k">for</span> <span class="nv">signatureList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a></span><span class="p">])</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">generateCode</span><span class="p">(</span><span class="k">for</span> <span class="nv">signatureList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a></span><span class="p">])</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">String</span></code></pre> </div> </div> @@ -461,8 +458,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencyMessage.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencyMessage.html index 2406854..d1a3588 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencyMessage.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencyMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>DeviceConsistencyMessage Struct Reference</title> + <title>DeviceConsistencyMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/DeviceConsistencyMessage" class="dashAnchor"></a> - <a title="DeviceConsistencyMessage Struct Reference"></a> + <a title="DeviceConsistencyMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - DeviceConsistencyMessage Struct Reference + DeviceConsistencyMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>DeviceConsistencyMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencyMessage</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>DeviceConsistencyMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVv"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVvp"></a> <a name="//apple_ref/swift/Property/signature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVv">signature</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVvp">signature</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>DeviceConsistencyMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencySignature.html">DeviceConsistencySignature</a></span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vv"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/generation" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vv">generation</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vvp">generation</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">generation</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageVAcA0cD12CommitmentV0V10commitment_AA7KeyPairV011identitykeyJ0tKcfc"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV10commitment15identitykeyPairAcA0cD12CommitmentV0V_AA03KeyH0VtKcfc"></a> <a name="//apple_ref/swift/Method/init(commitment:identitykeyPair:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageVAcA0cD12CommitmentV0V10commitment_AA7KeyPairV011identitykeyJ0tKcfc">init(commitment:identitykeyPair:)</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV10commitment15identitykeyPairAcA0cD12CommitmentV0V_AA03KeyH0VtKcfc">init(commitment:identitykeyPair:)</a> </code> </div> <div class="height-container"> @@ -318,7 +315,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> <span class="nv">identitykeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> <span class="nv">identitykeyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -359,13 +356,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vv"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vvp"></a> <a name="//apple_ref/swift/Property/object" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vv">object</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vvp">object</a> </code> </div> <div class="height-container"> @@ -380,7 +384,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_DeviceConsistencyCodeMessage</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_DeviceConsistencyCodeMessage</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -390,9 +394,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageVAcA0a1_cd4CodeE0V4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityL0tKcfc"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAcA0a1_cd4CodeE0V_AA0cD12CommitmentV0VAA06PublicI0VtKcfc"></a> <a name="//apple_ref/swift/Method/init(from:commitment:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageVAcA0a1_cd4CodeE0V4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityL0tKcfc">init(from:commitment:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAcA0a1_cd4CodeE0V_AA0cD12CommitmentV0VAA06PublicI0VtKcfc">init(from:commitment:identityKey:)</a> </code> </div> <div class="height-container"> @@ -412,9 +416,9 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_DeviceConsistencyCodeMessage</span><span class="p">,</span> - <span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_DeviceConsistencyCodeMessage</span><span class="p">,</span> + <span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -467,6 +471,13 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers2"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers2"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -493,7 +504,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">data</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">data</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -507,9 +518,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol24DeviceConsistencyMessageVAC10Foundation4DataV4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityM0tKcfc"></a> + <a name="/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAC10Foundation4DataV_AA0cD12CommitmentV0VAA06PublicI0VtKcfc"></a> <a name="//apple_ref/swift/Method/init(from:commitment:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageVAC10Foundation4DataV4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityM0tKcfc">init(from:commitment:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAC10Foundation4DataV_AA0cD12CommitmentV0VAA06PublicI0VtKcfc">init(from:commitment:identityKey:)</a> </code> </div> <div class="height-container"> @@ -529,7 +540,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">commitment</span><span class="p">:</span> <span class="kt"><a href="../Structs/DeviceConsistencyCommitmentV0.html">DeviceConsistencyCommitmentV0</a></span><span class="p">,</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -584,8 +595,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencySignature.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencySignature.html index 20e0679..3bb3747 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencySignature.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DeviceConsistencySignature.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>DeviceConsistencySignature Struct Reference</title> + <title>DeviceConsistencySignature Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/DeviceConsistencySignature" class="dashAnchor"></a> - <a title="DeviceConsistencySignature Struct Reference"></a> + <a title="DeviceConsistencySignature Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - DeviceConsistencySignature Struct Reference + DeviceConsistencySignature Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>DeviceConsistencySignature</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencySignature</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">DeviceConsistencySignature</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>DeviceConsistencySignature</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/signature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVv">signature</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVvp">signature</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>DeviceConsistencySignature</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/vrfOutput" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVv">vrfOutput</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVvp">vrfOutput</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">vrfOutput</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">vrfOutput</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureVAC10Foundation4DataV9signature_AF9vrfOutputtcfc"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV9signature9vrfOutputAC10Foundation4DataV_AHtcfc"></a> <a name="//apple_ref/swift/Method/init(signature:vrfOutput:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureVAC10Foundation4DataV9signature_AF9vrfOutputtcfc">init(signature:vrfOutput:)</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV9signature9vrfOutputAC10Foundation4DataV_AHtcfc">init(signature:vrfOutput:)</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">vrfOutput</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">vrfOutput</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -357,9 +354,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV1loiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV1loiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/<(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV1loiSbAC_ACtFZ"><(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV1loiySbAC_ACtFZ"><(_:_:)</a> </code> </div> <div class="height-container"> @@ -379,7 +376,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -424,9 +421,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -446,7 +443,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DeviceConsistencySignature</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -493,8 +490,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DisplayableFingerprint.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DisplayableFingerprint.html index cfebe9e..ce0bec2 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DisplayableFingerprint.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/DisplayableFingerprint.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>DisplayableFingerprint Struct Reference</title> + <title>DisplayableFingerprint Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/DisplayableFingerprint" class="dashAnchor"></a> - <a title="DisplayableFingerprint Struct Reference"></a> + <a title="DisplayableFingerprint Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - DisplayableFingerprint Struct Reference + DisplayableFingerprint Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>DisplayableFingerprint</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">DisplayableFingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">DisplayableFingerprint</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>DisplayableFingerprint</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV5localSSv"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV5localSSvp"></a> <a name="//apple_ref/swift/Property/local" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV5localSSv">local</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV5localSSvp">local</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>DisplayableFingerprint</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">local</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">local</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV6remoteSSv"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV6remoteSSvp"></a> <a name="//apple_ref/swift/Property/remote" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV6remoteSSv">remote</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV6remoteSSvp">remote</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">remote</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">remote</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSv"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSvp"></a> <a name="//apple_ref/swift/Property/displayText" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSv">displayText</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSvp">displayText</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">displayText</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">displayText</span><span class="p">:</span> <span class="kt">String</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintVACSS5local_SS6remotetcfc"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV5local6remoteACSS_SStcfc"></a> <a name="//apple_ref/swift/Method/init(local:remote:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintVACSS5local_SS6remotetcfc">init(local:remote:)</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV5local6remoteACSS_SStcfc">init(local:remote:)</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">local</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">remote</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">local</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">remote</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span></code></pre> </div> </div> @@ -380,9 +377,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc"></a> <a name="//apple_ref/swift/Method/init(localFingerprint:remoteFingerprint:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc">init(localFingerprint:remoteFingerprint:)</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc">init(localFingerprint:remoteFingerprint:)</a> </code> </div> <div class="height-container"> @@ -402,7 +399,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -443,9 +440,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELLSS10Foundation4DataV11fingerprint_tFZ"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELL11fingerprintSS10Foundation4DataV_tFZ"></a> <a name="//apple_ref/swift/Method/createDisplayString(fingerprint:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELLSS10Foundation4DataV11fingerprint_tFZ">createDisplayString(fingerprint:)</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELL11fingerprintSS10Foundation4DataV_tFZ">createDisplayString(fingerprint:)</a> </code> </div> <div class="height-container"> @@ -460,7 +457,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">createDisplayString</span><span class="p">(</span><span class="nv">fingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">createDisplayString</span><span class="p">(</span><span class="nv">fingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">String</span></code></pre> </div> </div> @@ -497,9 +494,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol22DisplayableFingerprintV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol22DisplayableFingerprintV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol22DisplayableFingerprintV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -514,7 +511,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DisplayableFingerprint</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DisplayableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">DisplayableFingerprint</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">DisplayableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -561,8 +558,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/Fingerprint.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/Fingerprint.html index 9683abb..dc58f62 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/Fingerprint.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/Fingerprint.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>Fingerprint Struct Reference</title> + <title>Fingerprint Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/Fingerprint" class="dashAnchor"></a> - <a title="Fingerprint Struct Reference"></a> + <a title="Fingerprint Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - Fingerprint Struct Reference + Fingerprint Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>Fingerprint</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Fingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">Fingerprint</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>Fingerprint</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV7versions5UInt8VvZ"></a> + <a name="/s:14SignalProtocol11FingerprintV7versions5UInt8VvpZ"></a> <a name="//apple_ref/swift/Variable/version" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV7versions5UInt8VvZ">version</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV7versions5UInt8VvpZ">version</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>Fingerprint</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">UInt8</span> <span class="o">=</span> <span class="mi">0</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">UInt8</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV6lengthSivZ"></a> + <a name="/s:14SignalProtocol11FingerprintV6lengthSivpZ"></a> <a name="//apple_ref/swift/Variable/length" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV6lengthSivZ">length</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV6lengthSivpZ">length</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">length</span> <span class="o">=</span> <span class="mi">30</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">length</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV10iterationsSivZ"></a> + <a name="/s:14SignalProtocol11FingerprintV10iterationsSivpZ"></a> <a name="//apple_ref/swift/Variable/iterations" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV10iterationsSivZ">iterations</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV10iterationsSivpZ">iterations</a> </code> </div> <div class="height-container"> @@ -313,7 +310,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">iterations</span> <span class="o">=</span> <span class="mi">1024</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -323,9 +320,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vv"></a> + <a name="/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vvp"></a> <a name="//apple_ref/swift/Property/displayable" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vv">displayable</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vvp">displayable</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">displayable</span><span class="p">:</span> <span class="kt"><a href="../Structs/DisplayableFingerprint.html">DisplayableFingerprint</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">displayable</span><span class="p">:</span> <span class="kt"><a href="../Structs/DisplayableFingerprint.html">DisplayableFingerprint</a></span></code></pre> </div> </div> @@ -350,9 +347,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vv"></a> + <a name="/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vvp"></a> <a name="//apple_ref/swift/Property/scannable" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vv">scannable</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vvp">scannable</a> </code> </div> <div class="height-container"> @@ -367,7 +364,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">scannable</span><span class="p">:</span> <span class="kt"><a href="../Structs/ScannableFingerprint.html">ScannableFingerprint</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">scannable</span><span class="p">:</span> <span class="kt"><a href="../Structs/ScannableFingerprint.html">ScannableFingerprint</a></span></code></pre> </div> </div> @@ -377,9 +374,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV11displayTextSSv"></a> + <a name="/s:14SignalProtocol11FingerprintV11displayTextSSvp"></a> <a name="//apple_ref/swift/Property/displayText" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV11displayTextSSv">displayText</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV11displayTextSSvp">displayText</a> </code> </div> <div class="height-container"> @@ -394,7 +391,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">displayText</span><span class="p">:</span> <span class="kt">String</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">displayText</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -404,9 +401,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_10Foundation4DataV0D8IdentitySS06remoteeF0AG0jI0Si10iterationstKcfc"></a> + <a name="/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_10Foundation4DataVSSAKSitKcfc"></a> <a name="//apple_ref/swift/Method/init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_10Foundation4DataV0D8IdentitySS06remoteeF0AG0jI0Si10iterationstKcfc">init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_10Foundation4DataVSSAKSitKcfc">init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)</a> </code> </div> <div class="height-container"> @@ -426,12 +423,12 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> - <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> + <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivpZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -508,9 +505,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_AA9PublicKeyV0D8IdentitySS06remoteeF0AF0jI0Si10iterationstKcfc"></a> + <a name="/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_AA9PublicKeyVSSAJSitKcfc"></a> <a name="//apple_ref/swift/Method/init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_AA9PublicKeyV0D8IdentitySS06remoteeF0AF0jI0Si10iterationstKcfc">init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_AA9PublicKeyVSSAJSitKcfc">init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)</a> </code> </div> <div class="height-container"> @@ -530,12 +527,12 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> - <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> + <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">localIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">remoteIdentity</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivpZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -612,9 +609,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_SayAA9PublicKeyVG0D12IdentityListSS06remoteeF0AG0kiJ0Si10iterationstKcfc"></a> + <a name="/s:14SignalProtocol11FingerprintV21localStableIdentifier0D12IdentityList06remoteeF00igH010iterationsACSS_SayAA9PublicKeyVGSSAKSitKcfc"></a> <a name="//apple_ref/swift/Method/init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_SayAA9PublicKeyVG0D12IdentityListSS06remoteeF0AG0kiJ0Si10iterationstKcfc">init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D12IdentityList06remoteeF00igH010iterationsACSS_SayAA9PublicKeyVGSSAKSitKcfc">init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)</a> </code> </div> <div class="height-container"> @@ -634,12 +631,12 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> - <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">localIdentityList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">],</span> - <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> - <span class="nv">remoteIdentityList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">],</span> - <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> + <span class="nv">localStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">localIdentityList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">],</span> + <span class="nv">remoteStableIdentifier</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> + <span class="nv">remoteIdentityList</span><span class="p">:</span> <span class="p">[</span><span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">],</span> + <span class="nv">iterations</span><span class="p">:</span> <span class="kt">Int</span> <span class="o">=</span> <span class="kt">Fingerprint</span><span class="o">.</span><span class="n"><a href="../Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivpZ">iterations</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -716,9 +713,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11FingerprintV7matchesSb10Foundation4DataVKF"></a> + <a name="/s:14SignalProtocol11FingerprintV7matchesySb10Foundation4DataVKF"></a> <a name="//apple_ref/swift/Method/matches(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11FingerprintV7matchesSb10Foundation4DataVKF">matches(_:)</a> + <a class="token" href="#/s:14SignalProtocol11FingerprintV7matchesySb10Foundation4DataVKF">matches(_:)</a> </code> </div> <div class="height-container"> @@ -738,7 +735,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">matches</span><span class="p">(</span><span class="n">_</span> <span class="nv">scannedData</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">matches</span><span class="p">(</span><span class="n">_</span> <span class="nv">scannedData</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -773,8 +770,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/GroupCipher.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/GroupCipher.html index 3962d9c..eb40b35 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/GroupCipher.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/GroupCipher.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>GroupCipher Struct Reference</title> + <title>GroupCipher Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/GroupCipher" class="dashAnchor"></a> - <a title="GroupCipher Struct Reference"></a> + <a title="GroupCipher Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - GroupCipher Struct Reference + GroupCipher Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>GroupCipher</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">GroupCipher</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">GroupCipher</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a></span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>GroupCipher</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxv"></a> + <a name="/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxvp"></a> <a name="//apple_ref/swift/Property/store" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxv">store</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxvp">store</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>GroupCipher</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzv"></a> + <a name="/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzvp"></a> <a name="//apple_ref/swift/Property/address" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzv">address</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzvp">address</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">address</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">GroupAddress</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">address</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">GroupAddress</span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherVACyxG0C7AddressQz7address_x5storetcfc"></a> + <a name="/s:14SignalProtocol11GroupCipherV7address5storeACyxG0C7AddressQz_xtcfc"></a> <a name="//apple_ref/swift/Method/init(address:store:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherVACyxG0C7AddressQz7address_x5storetcfc">init(address:store:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7address5storeACyxG0C7AddressQz_xtcfc">init(address:store:)</a> </code> </div> <div class="height-container"> @@ -313,7 +310,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">address</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">GroupAddress</span><span class="p">,</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">address</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">GroupAddress</span><span class="p">,</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">)</span></code></pre> </div> </div> @@ -354,9 +351,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7processyAA0D11TextMessageV7message_tKF"></a> + <a name="/s:14SignalProtocol11GroupCipherV7process7messageyAA0D11TextMessageV_tKF"></a> <a name="//apple_ref/swift/Method/process(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7processyAA0D11TextMessageV7message_tKF">process(message:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7process7messageyAA0D11TextMessageV_tKF">process(message:)</a> </code> </div> <div class="height-container"> @@ -384,7 +381,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -413,9 +410,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7processyAA28SenderKeyDistributionMessageV012distributionI0_tKF"></a> + <a name="/s:14SignalProtocol11GroupCipherV7process19distributionMessageyAA021SenderKeyDistributionG0V_tKF"></a> <a name="//apple_ref/swift/Method/process(distributionMessage:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7processyAA28SenderKeyDistributionMessageV012distributionI0_tKF">process(distributionMessage:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7process19distributionMessageyAA021SenderKeyDistributionG0V_tKF">process(distributionMessage:)</a> </code> </div> <div class="height-container"> @@ -442,7 +439,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="nv">distributionMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="nv">distributionMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -503,7 +500,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createSession</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">createSession</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderKeyDistributionMessage.html">SenderKeyDistributionMessage</a></span></code></pre> </div> </div> @@ -517,9 +514,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF"></a> + <a name="/s:14SignalProtocol11GroupCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF"></a> <a name="//apple_ref/swift/Method/encrypt(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF">encrypt(_:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF">encrypt(_:)</a> </code> </div> <div class="height-container"> @@ -539,7 +536,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">plaintext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">plaintext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -572,9 +569,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11GroupCipherV7decrypt10Foundation4DataVAA16SenderKeyMessageV10ciphertext_tKF"></a> + <a name="/s:14SignalProtocol11GroupCipherV7decrypt10ciphertext10Foundation4DataVAA16SenderKeyMessageV_tKF"></a> <a name="//apple_ref/swift/Method/decrypt(ciphertext:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11GroupCipherV7decrypt10Foundation4DataVAA16SenderKeyMessageV10ciphertext_tKF">decrypt(ciphertext:)</a> + <a class="token" href="#/s:14SignalProtocol11GroupCipherV7decrypt10ciphertext10Foundation4DataVAA16SenderKeyMessageV_tKF">decrypt(ciphertext:)</a> </code> </div> <div class="height-container"> @@ -605,7 +602,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderKeyMessage.html">SenderKeyMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/SenderKeyMessage.html">SenderKeyMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -660,7 +657,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">loadRecord</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SenderKeyRecord.html">SenderKeyRecord</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">loadRecord</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SenderKeyRecord.html">SenderKeyRecord</a></span></code></pre> </div> </div> @@ -676,8 +673,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/HKDF.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/HKDF.html index ea48de9..505d088 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/HKDF.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/HKDF.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>HKDF Struct Reference</title> + <title>HKDF Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/HKDF" class="dashAnchor"></a> - <a title="HKDF Struct Reference"></a> + <a title="HKDF Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - HKDF Struct Reference + HKDF Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>HKDF</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">HKDF</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">HKDF</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>HKDF</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivZ"></a> + <a name="/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivpZ"></a> <a name="//apple_ref/swift/Variable/derivedRootSecretsSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivZ">derivedRootSecretsSize</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivpZ">derivedRootSecretsSize</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>HKDF</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">derivedRootSecretsSize</span> <span class="o">=</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="o">.</span><span class="n">secretSize</span> <span class="o">+</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="o">.</span><span class="n">secretSize</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">derivedRootSecretsSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvZ"></a> + <a name="/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvpZ"></a> <a name="//apple_ref/swift/Variable/iterationStartOffset" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvZ">iterationStartOffset</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvpZ">iterationStartOffset</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">iterationStartOffset</span><span class="p">:</span> <span class="kt">UInt8</span> <span class="o">=</span> <span class="mi">1</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">iterationStartOffset</span><span class="p">:</span> <span class="kt">UInt8</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV13deriveSecrets10Foundation4DataVAG8material_AG4saltAG4infoSi12outputLengthtKFZ"></a> + <a name="/s:14SignalProtocol4HKDFV13deriveSecrets8material4salt4info12outputLength10Foundation4DataVAK_A2KSitKFZ"></a> <a name="//apple_ref/swift/Method/deriveSecrets(material:salt:info:outputLength:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV13deriveSecrets10Foundation4DataVAG8material_AG4saltAG4infoSi12outputLengthtKFZ">deriveSecrets(material:salt:info:outputLength:)</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV13deriveSecrets8material4salt4info12outputLength10Foundation4DataVAK_A2KSitKFZ">deriveSecrets(material:salt:info:outputLength:)</a> </code> </div> <div class="height-container"> @@ -323,7 +320,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">deriveSecrets</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">outputLength</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">deriveSecrets</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">outputLength</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -392,9 +389,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL10Foundation4DataVAH3prk_AH4infoSi12outputLengthtKFZ"></a> + <a name="/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL3prk4info12outputLength10Foundation4DataVAK_AKSitKFZ"></a> <a name="//apple_ref/swift/Method/expand(prk:info:outputLength:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL10Foundation4DataVAH3prk_AH4infoSi12outputLengthtKFZ">expand(prk:info:outputLength:)</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL3prk4info12outputLength10Foundation4DataVAK_AKSitKFZ">expand(prk:info:outputLength:)</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">expand</span><span class="p">(</span><span class="nv">prk</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">outputLength</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">expand</span><span class="p">(</span><span class="nv">prk</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">outputLength</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -477,9 +474,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol4HKDFV15chainAndRootKeyAA07RatchetfG0V04rootG0_AA0h5ChainG0V0dG0t10Foundation4DataV8material_AM4saltAM4infotKFZ"></a> + <a name="/s:14SignalProtocol4HKDFV15chainAndRootKey8material4salt4infoAA07RatchetfG0V04rootG0_AA0k5ChainG0V0dG0t10Foundation4DataV_A2PtKFZ"></a> <a name="//apple_ref/swift/Method/chainAndRootKey(material:salt:info:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol4HKDFV15chainAndRootKeyAA07RatchetfG0V04rootG0_AA0h5ChainG0V0dG0t10Foundation4DataV8material_AM4saltAM4infotKFZ">chainAndRootKey(material:salt:info:)</a> + <a class="token" href="#/s:14SignalProtocol4HKDFV15chainAndRootKey8material4salt4infoAA07RatchetfG0V04rootG0_AA0k5ChainG0V0dG0t10Foundation4DataV_A2PtKFZ">chainAndRootKey(material:salt:info:)</a> </code> </div> <div class="height-container"> @@ -499,7 +496,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">chainAndRootKey</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">chainAndRootKey</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">info</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetRootKey.html">RatchetRootKey</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -558,8 +555,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/KeyPair.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/KeyPair.html index 5bdca36..151a412 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/KeyPair.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/KeyPair.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>KeyPair Struct Reference</title> + <title>KeyPair Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/KeyPair" class="dashAnchor"></a> - <a title="KeyPair Struct Reference"></a> + <a title="KeyPair Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - KeyPair Struct Reference + KeyPair Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>KeyPair</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">KeyPair</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">KeyPair</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>KeyPair</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvZ"></a> + <a name="/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvpZ"></a> <a name="//apple_ref/swift/Variable/DJBType" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvZ">DJBType</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvpZ">DJBType</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>KeyPair</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">DJBType</span><span class="p">:</span> <span class="kt">UInt8</span> <span class="o">=</span> <span class="mh">0x05</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">DJBType</span><span class="p">:</span> <span class="kt">UInt8</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vv"></a> + <a name="/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vvp"></a> <a name="//apple_ref/swift/Property/publicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vv">publicKey</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vvp">publicKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vv"></a> + <a name="/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vvp"></a> <a name="//apple_ref/swift/Property/privateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vv">privateKey</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vvp">privateKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> </div> </div> @@ -333,9 +330,9 @@ <h3 class="section-name">Initialization</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairVAcA06PublicC0V06publicC0_AA07PrivateC0V07privateC0tcfc"></a> + <a name="/s:14SignalProtocol7KeyPairV06publicC007privateC0AcA06PublicC0V_AA07PrivateC0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(publicKey:privateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairVAcA06PublicC0V06publicC0_AA07PrivateC0V07privateC0tcfc">init(publicKey:privateKey:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV06publicC007privateC0AcA06PublicC0V_AA07PrivateC0Vtcfc">init(publicKey:privateKey:)</a> </code> </div> <div class="height-container"> @@ -350,7 +347,7 @@ <h3 class="section-name">Initialization</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -388,6 +385,57 @@ <h4>Parameters</h4> </section> </div> </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol7KeyPairV07privateC0AcA07PrivateC0V_tKcfc"></a> + <a name="//apple_ref/swift/Method/init(privateKey:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV07privateC0AcA07PrivateC0V_tKcfc">init(privateKey:)</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Create a key pair from existing public and private keys</p> +<div class="aside aside-throws"> + <p class="aside-title">Throws</p> + throws <code>SignalError.curveError</code> if the public key could not be created + +</div> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + + </div> + </div> + <div> + <h4>Parameters</h4> + <table class="graybox"> + <tbody> + <tr> + <td> + <code> + <em>privateKey</em> + </code> + </td> + <td> + <div> + <p>The private part of the key pair</p> + </div> + </td> + </tr> + </tbody> + </table> + </div> + </section> + </div> + </li> <li class="item"> <div> <code> @@ -415,7 +463,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span> <span class="k">throws</span></code></pre> </div> </div> @@ -440,9 +488,9 @@ <h3 class="section-name">Exposed private key functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV4sign10Foundation4DataVAG7message_tKF"></a> + <a name="/s:14SignalProtocol7KeyPairV4sign7message10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/sign(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV4sign10Foundation4DataVAG7message_tKF">sign(message:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV4sign7message10Foundation4DataVAH_tKF">sign(message:)</a> </code> </div> <div class="height-container"> @@ -465,7 +513,7 @@ <h3 class="section-name">Exposed private key functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -498,9 +546,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV7signVRF10Foundation4DataVAG7message_tKF"></a> + <a name="/s:14SignalProtocol7KeyPairV7signVRF7message10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/signVRF(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV7signVRF10Foundation4DataVAG7message_tKF">signVRF(message:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV7signVRF7message10Foundation4DataVAH_tKF">signVRF(message:)</a> </code> </div> <div class="height-container"> @@ -520,7 +568,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">signVRF</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">signVRF</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -553,9 +601,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA06PublicC0V06publicC0_tKF"></a> + <a name="/s:14SignalProtocol7KeyPairV18calculateAgreement06publicC010Foundation4DataVAA06PublicC0V_tKF"></a> <a name="//apple_ref/swift/Method/calculateAgreement(publicKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA06PublicC0V06publicC0_tKF">calculateAgreement(publicKey:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV18calculateAgreement06publicC010Foundation4DataVAA06PublicC0V_tKF">calculateAgreement(publicKey:)</a> </code> </div> <div class="height-container"> @@ -575,7 +623,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -619,9 +667,9 @@ <h3 class="section-name">Exposed public key functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV6verifySb10Foundation4DataV9signature_AG3fortF"></a> + <a name="/s:14SignalProtocol7KeyPairV6verify9signature3forSb10Foundation4DataV_AItF"></a> <a name="//apple_ref/swift/Method/verify(signature:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV6verifySb10Foundation4DataV9signature_AG3fortF">verify(signature:for:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV6verify9signature3forSb10Foundation4DataV_AItF">verify(signature:for:)</a> </code> </div> <div class="height-container"> @@ -636,7 +684,7 @@ <h3 class="section-name">Exposed public key functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -681,9 +729,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF"></a> + <a name="/s:14SignalProtocol7KeyPairV6verify12vrfSignature3for10Foundation4DataVAI_AItKF"></a> <a name="//apple_ref/swift/Method/verify(vrfSignature:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF">verify(vrfSignature:for:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV6verify12vrfSignature3for10Foundation4DataVAI_AItKF">verify(vrfSignature:for:)</a> </code> </div> <div class="height-container"> @@ -704,7 +752,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">vrfSignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">vrfSignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -749,9 +797,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA07PrivateC0V07privateC0_tKF"></a> + <a name="/s:14SignalProtocol7KeyPairV18calculateAgreement07privateC010Foundation4DataVAA07PrivateC0V_tKF"></a> <a name="//apple_ref/swift/Method/calculateAgreement(privateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA07PrivateC0V07privateC0_tKF">calculateAgreement(privateKey:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV18calculateAgreement07privateC010Foundation4DataVAA07PrivateC0V_tKF">calculateAgreement(privateKey:)</a> </code> </div> <div class="height-container"> @@ -771,7 +819,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -804,13 +852,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairVAcA0a1_cD0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol7KeyPairV4fromAcA0a1_cD0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairVAcA0a1_cD0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV4fromAcA0a1_cD0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -830,7 +885,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_KeyPair</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_KeyPair</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -859,9 +914,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vv"></a> + <a name="/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -876,7 +931,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_KeyPair</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_KeyPair</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -886,13 +941,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol7KeyPairV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol7KeyPairV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol7KeyPairV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol7KeyPairV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -907,7 +969,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">KeyPair</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">KeyPair</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">KeyPair</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">KeyPair</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -954,8 +1016,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PendingPreKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PendingPreKey.html index 94c1bae..16be61b 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PendingPreKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PendingPreKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>PendingPreKey Struct Reference</title> + <title>PendingPreKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/PendingPreKey" class="dashAnchor"></a> - <a title="PendingPreKey Struct Reference"></a> + <a title="PendingPreKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - PendingPreKey Struct Reference + PendingPreKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PendingPreKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">PendingPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">PendingPreKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>PendingPreKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgv"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgvp"></a> <a name="//apple_ref/swift/Property/preKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgv">preKeyId</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgvp">preKeyId</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>PendingPreKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vv">signedPreKeyId</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vvp">signedPreKeyId</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vv"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vvp"></a> <a name="//apple_ref/swift/Property/baseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vv">baseKey</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vvp">baseKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -322,13 +319,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVv"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -343,7 +347,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">PendingPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">PendingPreKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -353,9 +357,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyVAcA0A8_SessionVABV4from_tKcfc"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV4fromAcA0A8_SessionVABV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyVAcA0A8_SessionVABV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV4fromAcA0A8_SessionVABV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -375,7 +379,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">PendingPreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">PendingPreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -404,13 +408,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13PendingPreKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol13PendingPreKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol13PendingPreKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -425,7 +436,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PendingPreKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PendingPreKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PendingPreKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PendingPreKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -441,8 +452,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PreKeySignalMessage.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PreKeySignalMessage.html index 441da36..38ba19e 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PreKeySignalMessage.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PreKeySignalMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>PreKeySignalMessage Struct Reference</title> + <title>PreKeySignalMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/PreKeySignalMessage" class="dashAnchor"></a> - <a title="PreKeySignalMessage Struct Reference"></a> + <a title="PreKeySignalMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - PreKeySignalMessage Struct Reference + PreKeySignalMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PreKeySignalMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PreKeySignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PreKeySignalMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>PreKeySignalMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgvp"></a> <a name="//apple_ref/swift/Property/preKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgv">preKeyId</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgvp">preKeyId</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>PreKeySignalMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vv">signedPreKeyId</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vvp">signedPreKeyId</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vvp"></a> <a name="//apple_ref/swift/Property/baseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vv">baseKey</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vvp">baseKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vvp"></a> <a name="//apple_ref/swift/Property/identityKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vv">identityKey</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vvp">identityKey</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vv"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vvp"></a> <a name="//apple_ref/swift/Property/message" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vv">message</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vvp">message</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageVACs6UInt32VSg03preD2Id_AE06signedcdH0AA06PublicD0V04baseD0AJ08identityD0AA0aE0V7messagetcfc"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV03preD2Id06signedcdG004baseD008identityD07messageACs6UInt32VSg_AjA06PublicD0VAmA0aE0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageVACs6UInt32VSg03preD2Id_AE06signedcdH0AA06PublicD0V04baseD0AJ08identityD0AA0aE0V7messagetcfc">init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV03preD2Id06signedcdG004baseD008identityD07messageACs6UInt32VSg_AjA06PublicD0VAmA0aE0Vtcfc">init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)</a> </code> </div> <div class="height-container"> @@ -393,11 +390,11 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?,</span> - <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">?,</span> + <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">baseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span></code></pre> </div> </div> @@ -496,7 +493,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -510,6 +507,13 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20buffers"></a> + <a name="//apple_ref/swift/Section/Protocol buffers" class="dashAnchor"></a> + <a href="#/Protocol%20buffers"> + <h3 class="section-name">Protocol buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -536,7 +540,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">asProtoObject</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Signal_PreKeySignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">asProtoObject</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Signal_PreKeySignalMessage</span></code></pre> </div> </div> @@ -550,9 +554,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol06PreKeyA7MessageVAcA0a1_cdaE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol06PreKeyA7MessageV4fromAcA0a1_cdaE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageVAcA0a1_cdaE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol06PreKeyA7MessageV4fromAcA0a1_cdaE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -578,7 +582,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_PreKeySignalMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_PreKeySignalMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -609,8 +613,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PrivateKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PrivateKey.html index ee582c9..c84122e 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PrivateKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PrivateKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>PrivateKey Struct Reference</title> + <title>PrivateKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/PrivateKey" class="dashAnchor"></a> - <a title="PrivateKey Struct Reference"></a> + <a title="PrivateKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - PrivateKey Struct Reference + PrivateKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PrivateKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PrivateKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PrivateKey</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>PrivateKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVv">key</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVvp">key</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>PrivateKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV5point_tKcfc"></a> + <a name="/s:14SignalProtocol10PrivateKeyV5pointAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(point:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV5point_tKcfc">init(point:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV5pointAC10Foundation4DataV_tKcfc">init(point:)</a> </code> </div> <div class="height-container"> @@ -291,7 +288,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -324,9 +321,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV15unverifiedPoint_tKcfc"></a> + <a name="/s:14SignalProtocol10PrivateKeyV15unverifiedPointAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(unverifiedPoint:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV15unverifiedPoint_tKcfc">init(unverifiedPoint:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV15unverifiedPointAC10Foundation4DataV_tKcfc">init(unverifiedPoint:)</a> </code> </div> <div class="height-container"> @@ -352,7 +349,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">unverifiedPoint</span> <span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">unverifiedPoint</span> <span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -398,7 +395,7 @@ <h4>Return Value</h4> <p>Create a new random private key.</p> <div class="aside aside-throws"> <p class="aside-title">Throws</p> - Any error from <code>signalCryptoRandom(bytes:)</code> + Any error from <code><a href="../Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6random5bytes10Foundation4DataVSi_tKFZ">SignalCrypto.random(bytes:)</a></code> </div> @@ -407,7 +404,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span> <span class="k">throws</span></code></pre> </div> </div> @@ -417,9 +414,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV4sign10Foundation4DataVAG7message_tKF"></a> + <a name="/s:14SignalProtocol10PrivateKeyV4sign7message10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/sign(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4sign10Foundation4DataVAG7message_tKF">sign(message:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4sign7message10Foundation4DataVAH_tKF">sign(message:)</a> </code> </div> <div class="height-container"> @@ -441,7 +438,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -474,9 +471,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV7signVRF10Foundation4DataVAG7message_tKF"></a> + <a name="/s:14SignalProtocol10PrivateKeyV7signVRF7message10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/signVRF(message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV7signVRF10Foundation4DataVAG7message_tKF">signVRF(message:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV7signVRF7message10Foundation4DataVAH_tKF">signVRF(message:)</a> </code> </div> <div class="height-container"> @@ -496,7 +493,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">signVRF</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">signVRF</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -529,9 +526,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV18calculateAgreement10Foundation4DataVAA06PublicD0V06publicD0_tKF"></a> + <a name="/s:14SignalProtocol10PrivateKeyV18calculateAgreement06publicD010Foundation4DataVAA06PublicD0V_tKF"></a> <a name="//apple_ref/swift/Method/calculateAgreement(publicKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV18calculateAgreement10Foundation4DataVAA06PublicD0V06publicD0_tKF">calculateAgreement(publicKey:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV18calculateAgreement06publicD010Foundation4DataVAA06PublicD0V_tKF">calculateAgreement(publicKey:)</a> </code> </div> <div class="height-container"> @@ -551,7 +548,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -584,9 +581,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/data" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVv">data</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVvp">data</a> </code> </div> <div class="height-container"> @@ -601,7 +598,71 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol10PrivateKeyV7keyPairAA0dF0VyKF"></a> + <a name="//apple_ref/swift/Method/keyPair()" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV7keyPairAA0dF0VyKF">keyPair()</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Create the corresponding key pair for the private key</p> +<div class="aside aside-throws"> + <p class="aside-title">Throws</p> + throws <code>SignalError.curveError</code> if the public key could not be created + +</div> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">keyPair</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + + </div> + </div> + </section> + </div> + </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol10PrivateKeyV06publicD0AA06PublicD0VyKF"></a> + <a name="//apple_ref/swift/Method/publicKey()" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV06publicD0AA06PublicD0VyKF">publicKey()</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Create the corresponding public key for the private key</p> +<div class="aside aside-throws"> + <p class="aside-title">Throws</p> + throws <code>SignalError.curveError</code> if the public key could not be created + +</div> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">publicKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -615,9 +676,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol10PrivateKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -632,7 +693,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PrivateKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PrivateKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PrivateKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PrivateKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -677,13 +738,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol10PrivateKeyV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol10PrivateKeyV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -703,7 +771,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -753,7 +821,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -765,8 +833,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PublicKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PublicKey.html index 36eb929..92dd8a2 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PublicKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/PublicKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>PublicKey Struct Reference</title> + <title>PublicKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/PublicKey" class="dashAnchor"></a> - <a title="PublicKey Struct Reference"></a> + <a title="PublicKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - PublicKey Struct Reference + PublicKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>PublicKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PublicKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">PublicKey</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>PublicKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/basePoint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvZ">basePoint</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvpZ">basePoint</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>PublicKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">basePoint</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mi">9</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="kt">UInt8</span><span class="p">](</span><span class="nv">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="mi">31</span><span class="p">))</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">basePoint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVv">key</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvp">key</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV5point_tKcfc"></a> + <a name="/s:14SignalProtocol9PublicKeyV5pointAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(point:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV5point_tKcfc">init(point:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV5pointAC10Foundation4DataV_tKcfc">init(point:)</a> </code> </div> <div class="height-container"> @@ -319,7 +316,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">point</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -348,9 +345,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyVAcA07PrivateD0V07privateD0_tKcfc"></a> + <a name="/s:14SignalProtocol9PublicKeyV07privateD0AcA07PrivateD0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(privateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyVAcA07PrivateD0V07privateD0_tKcfc">init(privateKey:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV07privateD0AcA07PrivateD0V_tKcfc">init(privateKey:)</a> </code> </div> <div class="height-container"> @@ -362,7 +359,7 @@ <h4>Parameters</h4> Fails if the key could not be generated.</p> <div class="aside aside-throws"> <p class="aside-title">Throws</p> - throws <code>SignalError.curveError</code> if the public key could not be created + <code>SignalError.curveError</code> if the public key could not be created </div> @@ -371,7 +368,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -400,9 +397,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV6verifySb10Foundation4DataV9signature_AG3fortF"></a> + <a name="/s:14SignalProtocol9PublicKeyV6verify9signature3forSb10Foundation4DataV_AItF"></a> <a name="//apple_ref/swift/Method/verify(signature:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV6verifySb10Foundation4DataV9signature_AG3fortF">verify(signature:for:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV6verify9signature3forSb10Foundation4DataV_AItF">verify(signature:for:)</a> </code> </div> <div class="height-container"> @@ -417,7 +414,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -462,9 +459,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF"></a> + <a name="/s:14SignalProtocol9PublicKeyV6verify12vrfSignature3for10Foundation4DataVAI_AItKF"></a> <a name="//apple_ref/swift/Method/verify(vrfSignature:for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF">verify(vrfSignature:for:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV6verify12vrfSignature3for10Foundation4DataVAI_AItKF">verify(vrfSignature:for:)</a> </code> </div> <div class="height-container"> @@ -484,7 +481,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">vrfSignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">vrfSignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -529,9 +526,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV18calculateAgreement10Foundation4DataVAA07PrivateD0V07privateD0_tKF"></a> + <a name="/s:14SignalProtocol9PublicKeyV18calculateAgreement07privateD010Foundation4DataVAA07PrivateD0V_tKF"></a> <a name="//apple_ref/swift/Method/calculateAgreement(privateKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV18calculateAgreement10Foundation4DataVAA07PrivateD0V07privateD0_tKF">calculateAgreement(privateKey:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV18calculateAgreement07privateD010Foundation4DataVAA07PrivateD0V_tKF">calculateAgreement(privateKey:)</a> </code> </div> <div class="height-container"> @@ -551,7 +548,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">calculateAgreement</span><span class="p">(</span><span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -588,9 +585,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV1loiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol9PublicKeyV1loiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/<(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV1loiSbAC_ACtFZ"><(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV1loiySbAC_ACtFZ"><(_:_:)</a> </code> </div> <div class="height-container"> @@ -605,7 +602,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -650,9 +647,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol9PublicKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -667,7 +664,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">PublicKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -712,9 +709,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/data" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVv">data</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVvp">data</a> </code> </div> <div class="height-container"> @@ -729,7 +726,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -739,13 +736,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol9PublicKeyV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol9PublicKeyV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -765,7 +769,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -815,7 +819,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -831,8 +835,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetChainKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetChainKey.html index 9335b6f..92d1f4b 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetChainKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetChainKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>RatchetChainKey Struct Reference</title> + <title>RatchetChainKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/RatchetChainKey" class="dashAnchor"></a> - <a title="RatchetChainKey Struct Reference"></a> + <a title="RatchetChainKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - RatchetChainKey Struct Reference + RatchetChainKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>RatchetChainKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetChainKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>RatchetChainKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/messageKeySeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ">messageKeySeed</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ">messageKeySeed</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>RatchetChainKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeySeed</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mh">0x01</span><span class="p">])</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeySeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/chainKeySeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ">chainKeySeed</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ">chainKeySeed</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">chainKeySeed</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mh">0x02</span><span class="p">])</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">chainKeySeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/keyMaterialSeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ">keyMaterialSeed</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ">keyMaterialSeed</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyMaterialSeed</span> <span class="o">=</span> <span class="s">"WhisperMessageKeys"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyMaterialSeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivpZ"></a> <a name="//apple_ref/swift/Variable/secretSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivZ">secretSize</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivpZ">secretSize</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">secretSize</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">secretSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivpZ"></a> <a name="//apple_ref/swift/Variable/hashOutputSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivZ">hashOutputSize</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivpZ">hashOutputSize</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">hashOutputSize</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">hashOutputSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVv">key</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVvp">key</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV5indexs6UInt32Vv"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV5indexs6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/index" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV5indexs6UInt32Vv">index</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV5indexs6UInt32Vvp">index</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -430,9 +427,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyVAC10Foundation4DataV3key_s6UInt32V5indextcfc"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV3key5indexAC10Foundation4DataV_s6UInt32Vtcfc"></a> <a name="//apple_ref/swift/Method/init(key:index:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyVAC10Foundation4DataV3key_s6UInt32V5indextcfc">init(key:index:)</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV3key5indexAC10Foundation4DataV_s6UInt32Vtcfc">init(key:index:)</a> </code> </div> <div class="height-container"> @@ -447,7 +444,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">index</span> <span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span></code></pre> </div> </div> @@ -488,9 +485,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVAH4seed_tKF"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL4seed10Foundation4DataVAI_tKF"></a> <a name="//apple_ref/swift/Method/getBaseMaterial(seed:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVAH4seed_tKF">getBaseMaterial(seed:)</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL4seed10Foundation4DataVAI_tKF">getBaseMaterial(seed:)</a> </code> </div> <div class="height-container"> @@ -510,7 +507,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getBaseMaterial</span><span class="p">(</span><span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getBaseMaterial</span><span class="p">(</span><span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -565,7 +562,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">messageKeys</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">messageKeys</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span></code></pre> </div> </div> @@ -601,7 +598,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">next</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">RatchetChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">next</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">RatchetChainKey</span></code></pre> </div> </div> @@ -615,13 +612,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vv"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -636,7 +640,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">ChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">ChainKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -646,9 +650,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyVAcA0A8_SessionV0D0V0dE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV4fromAcA0A8_SessionV0D0V0dE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyVAcA0A8_SessionV0D0V0dE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV4fromAcA0A8_SessionV0D0V0dE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -668,7 +672,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">ChainKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">ChainKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -697,13 +701,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol15RatchetChainKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol15RatchetChainKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol15RatchetChainKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -718,7 +729,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetChainKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetChainKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetChainKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetChainKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -765,8 +776,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetMessageKeys.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetMessageKeys.html index b3da952..612ed96 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetMessageKeys.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetMessageKeys.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>RatchetMessageKeys Struct Reference</title> + <title>RatchetMessageKeys Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/RatchetMessageKeys" class="dashAnchor"></a> - <a title="RatchetMessageKeys Struct Reference"></a> + <a title="RatchetMessageKeys Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - RatchetMessageKeys Struct Reference + RatchetMessageKeys Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>RatchetMessageKeys</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetMessageKeys</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetMessageKeys</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>RatchetMessageKeys</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivpZ"></a> <a name="//apple_ref/swift/Variable/cipherKeyLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivZ">cipherKeyLength</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivpZ">cipherKeyLength</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>RatchetMessageKeys</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">cipherKeyLength</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">cipherKeyLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivpZ"></a> <a name="//apple_ref/swift/Variable/macKeyLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivZ">macKeyLength</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivpZ">macKeyLength</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">macKeyLength</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">macKeyLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivpZ"></a> <a name="//apple_ref/swift/Variable/ivLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivZ">ivLength</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivpZ">ivLength</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">ivLength</span> <span class="o">=</span> <span class="mi">16</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">ivLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivpZ"></a> <a name="//apple_ref/swift/Variable/derivedMessageSecretsSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivZ">derivedMessageSecretsSize</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivpZ">derivedMessageSecretsSize</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">derivedMessageSecretsSize</span> <span class="o">=</span> <span class="n"><a href="../Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivZ">cipherKeyLength</a></span> <span class="o">+</span> <span class="n"><a href="../Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivZ">macKeyLength</a></span> <span class="o">+</span> <span class="n"><a href="../Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivZ">ivLength</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">derivedMessageSecretsSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/cipherKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVv">cipherKey</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVvp">cipherKey</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">cipherKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">cipherKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/macKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVv">macKey</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVvp">macKey</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/iv" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVv">iv</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVvp">iv</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -430,9 +427,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/counter" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vv">counter</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vvp">counter</a> </code> </div> <div class="height-container"> @@ -447,7 +444,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -457,9 +454,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV6cipher_AF3macAF2ivs6UInt32V7countertKcfc"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV6cipher3mac2iv7counterAC10Foundation4DataV_A2Js6UInt32VtKcfc"></a> <a name="//apple_ref/swift/Method/init(cipher:mac:iv:counter:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV6cipher_AF3macAF2ivs6UInt32V7countertKcfc">init(cipher:mac:iv:counter:)</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV6cipher3mac2iv7counterAC10Foundation4DataV_A2Js6UInt32VtKcfc">init(cipher:mac:iv:counter:)</a> </code> </div> <div class="height-container"> @@ -480,7 +477,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">cipher</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">cipher</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -533,9 +530,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV8material_tKcfc"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV8materialAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(material:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV8material_tKcfc">init(material:)</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV8materialAC10Foundation4DataV_tKcfc">init(material:)</a> </code> </div> <div class="height-container"> @@ -555,7 +552,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">material</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -584,13 +581,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVv"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -605,7 +609,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">MessageKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">MessageKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -615,9 +619,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysVAcA0A8_SessionV5ChainV0D3KeyV4from_tKcfc"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV4fromAcA0A8_SessionV5ChainV0D3KeyV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysVAcA0A8_SessionV5ChainV0D3KeyV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV4fromAcA0A8_SessionV5ChainV0D3KeyV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -637,7 +641,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">MessageKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="o">.</span><span class="kt">MessageKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -666,13 +670,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol18RatchetMessageKeysV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol18RatchetMessageKeysV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol18RatchetMessageKeysV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -687,7 +698,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetMessageKeys</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetMessageKeys</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetMessageKeys</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetMessageKeys</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -734,8 +745,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetRootKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetRootKey.html index debc8fb..c9280e3 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetRootKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/RatchetRootKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>RatchetRootKey Struct Reference</title> + <title>RatchetRootKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/RatchetRootKey" class="dashAnchor"></a> - <a title="RatchetRootKey Struct Reference"></a> + <a title="RatchetRootKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - RatchetRootKey Struct Reference + RatchetRootKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>RatchetRootKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">RatchetRootKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">RatchetRootKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>RatchetRootKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/keyInfo" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvZ">keyInfo</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvpZ">keyInfo</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>RatchetRootKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyInfo</span> <span class="o">=</span> <span class="s">"WhisperRatchet"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">keyInfo</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivZ"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivpZ"></a> <a name="//apple_ref/swift/Variable/secretSize" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivZ">secretSize</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivpZ">secretSize</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">secretSize</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">secretSize</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVv">key</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVvp">key</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV3key_tcfc"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV3keyAC10Foundation4DataV_tcfc"></a> <a name="//apple_ref/swift/Method/init(key:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV3key_tcfc">init(key:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV3keyAC10Foundation4DataV_tcfc">init(key:)</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -368,9 +365,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV11createChainAC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V05theircE0_AA07PrivateE0V03ourcE0tKF"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV11createChain05theircE003ourcE0AC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V_AA07PrivateE0VtKF"></a> <a name="//apple_ref/swift/Method/createChain(theirRatchetKey:ourRatchetKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV11createChainAC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V05theircE0_AA07PrivateE0V03ourcE0tKF">createChain(theirRatchetKey:ourRatchetKey:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV11createChain05theircE003ourcE0AC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V_AA07PrivateE0VtKF">createChain(theirRatchetKey:ourRatchetKey:)</a> </code> </div> <div class="height-container"> @@ -390,7 +387,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">createChain</span><span class="p">(</span><span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">createChain</span><span class="p">(</span><span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">(</span><span class="nv">rootKey</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -435,6 +432,13 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -456,7 +460,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -470,9 +474,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV4from_tcfc"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV4fromAC10Foundation4DataV_tcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV4from_tcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV4fromAC10Foundation4DataV_tcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -487,7 +491,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -516,13 +520,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Comparable"></a> + <a name="//apple_ref/swift/Section/Protocol Comparable" class="dashAnchor"></a> + <a href="#/Protocol%20Comparable"> + <h3 class="section-name">Protocol Comparable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV1loiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV1loiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/<(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV1loiSbAC_ACtFZ"><(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV1loiySbAC_ACtFZ"><(_:_:)</a> </code> </div> <div class="height-container"> @@ -537,7 +548,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o"><</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -582,13 +593,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14RatchetRootKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol14RatchetRootKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol14RatchetRootKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -603,7 +621,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">RatchetRootKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -650,8 +668,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/ScannableFingerprint.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/ScannableFingerprint.html index 2628b9b..7ace4d7 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/ScannableFingerprint.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/ScannableFingerprint.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>ScannableFingerprint Struct Reference</title> + <title>ScannableFingerprint Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/ScannableFingerprint" class="dashAnchor"></a> - <a title="ScannableFingerprint Struct Reference"></a> + <a title="ScannableFingerprint Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - ScannableFingerprint Struct Reference + ScannableFingerprint Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>ScannableFingerprint</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">ScannableFingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">ScannableFingerprint</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>ScannableFingerprint</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivZ"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivpZ"></a> <a name="//apple_ref/swift/Variable/length" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivZ">length</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivpZ">length</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>ScannableFingerprint</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">length</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">length</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvZ"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvpZ"></a> <a name="//apple_ref/swift/Variable/version" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvZ">version</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvpZ">version</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="o">=</span> <span class="mi">1</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">version</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/localFingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVv">localFingerprint</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVvp">localFingerprint</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/remoteFingerprint" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVv">remoteFingerprint</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVvp">remoteFingerprint</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc"></a> <a name="//apple_ref/swift/Method/init(localFingerprint:remoteFingerprint:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc">init(localFingerprint:remoteFingerprint:)</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc">init(localFingerprint:remoteFingerprint:)</a> </code> </div> <div class="height-container"> @@ -371,7 +368,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">localFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">remoteFingerprint</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -412,13 +409,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintVAcA0a1_D0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV4fromAcA0a1_D0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintVAcA0a1_D0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV4fromAcA0a1_D0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -438,7 +442,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_Fingerprint</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_Fingerprint</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -467,9 +471,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vv"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -484,7 +488,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Fingerprint</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Fingerprint</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -494,13 +498,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Comparison"></a> + <a name="//apple_ref/swift/Section/Comparison" class="dashAnchor"></a> + <a href="#/Comparison"> + <h3 class="section-name">Comparison</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV7matchesSbACF"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV7matchesySbACF"></a> <a name="//apple_ref/swift/Method/matches(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV7matchesSbACF">matches(_:)</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV7matchesySbACF">matches(_:)</a> </code> </div> <div class="height-container"> @@ -515,7 +526,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">matches</span><span class="p">(</span><span class="n">_</span> <span class="nv">other</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">matches</span><span class="p">(</span><span class="n">_</span> <span class="nv">other</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -560,13 +571,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol20ScannableFingerprintV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol20ScannableFingerprintV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol20ScannableFingerprintV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -581,7 +599,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">ScannableFingerprint</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -628,8 +646,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderChain.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderChain.html index ab4eee6..fc91352 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderChain.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderChain.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderChain Struct Reference</title> + <title>SenderChain Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderChain" class="dashAnchor"></a> - <a title="SenderChain Struct Reference"></a> + <a title="SenderChain Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderChain Struct Reference + SenderChain Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderChain</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderChain</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderChain</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderChain</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVv"></a> + <a name="/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVvp"></a> <a name="//apple_ref/swift/Property/ratchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVv">ratchetKey</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVvp">ratchetKey</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderChain</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vv"></a> + <a name="/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vvp">chainKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainVAcA7KeyPairV07ratchetE0_AA07RatchetdE0V05chainE0tcfc"></a> + <a name="/s:14SignalProtocol11SenderChainV10ratchetKey05chainF0AcA0F4PairV_AA07RatchetdF0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(ratchetKey:chainKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainVAcA7KeyPairV07ratchetE0_AA07RatchetdE0V05chainE0tcfc">init(ratchetKey:chainKey:)</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV10ratchetKey05chainF0AcA0F4PairV_AA07RatchetdF0Vtcfc">init(ratchetKey:chainKey:)</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">ratchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -353,13 +350,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20buffers"></a> + <a name="//apple_ref/swift/Section/Protocol buffers" class="dashAnchor"></a> + <a href="#/Protocol%20buffers"> + <h3 class="section-name">Protocol buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vv"></a> + <a name="/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -374,7 +378,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -384,9 +388,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainVAcA0A8_SessionV0D0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol11SenderChainV4fromAcA0A8_SessionV0D0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainVAcA0A8_SessionV0D0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV4fromAcA0A8_SessionV0D0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -406,7 +410,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_Session</span><span class="o">.</span><span class="kt">Chain</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -435,13 +439,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol11SenderChainV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol11SenderChainV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol11SenderChainV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol11SenderChainV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -456,7 +467,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderChain</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderChain</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderChain</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderChain</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -503,8 +514,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderChainKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderChainKey.html index 2aa3f82..b7d0918 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderChainKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderChainKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderChainKey Struct Reference</title> + <title>SenderChainKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderChainKey" class="dashAnchor"></a> - <a title="SenderChainKey Struct Reference"></a> + <a title="SenderChainKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderChainKey Struct Reference + SenderChainKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderChainKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderChainKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderChainKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/messageKeySeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ">messageKeySeed</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ">messageKeySeed</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderChainKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeySeed</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mh">0x01</span><span class="p">])</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">messageKeySeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/chainKeySeed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ">chainKeySeed</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ">chainKeySeed</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">chainKeySeed</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">([</span><span class="mh">0x02</span><span class="p">])</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">chainKeySeed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vv"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/iteration" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vv">iteration</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vvp">iteration</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVvp">chainKey</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyVACs6UInt32V9iteration_10Foundation4DataV05chainE0tcfc"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV9iteration05chainE0ACs6UInt32V_10Foundation4DataVtcfc"></a> <a name="//apple_ref/swift/Method/init(iteration:chainKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyVACs6UInt32V9iteration_10Foundation4DataV05chainE0tcfc">init(iteration:chainKey:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV9iteration05chainE0ACs6UInt32V_10Foundation4DataVtcfc">init(iteration:chainKey:)</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -429,7 +426,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">mutating</span> <span class="kd">func</span> <span class="nf">messageKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">mutating</span> <span class="kd">func</span> <span class="nf">messageKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SenderMessageKey.html">SenderMessageKey</a></span></code></pre> </div> </div> @@ -443,13 +440,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVv"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -464,7 +468,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderChainKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderChainKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -474,9 +478,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyVAcA0a1_cE5StateVABV4from_tKcfc"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV4fromAcA0a1_cE5StateVABV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyVAcA0a1_cE5StateVABV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV4fromAcA0a1_cE5StateVABV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -496,7 +500,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderChainKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderChainKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -525,13 +529,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SenderChainKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol14SenderChainKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol14SenderChainKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -546,7 +557,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderChainKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderChainKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderChainKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderChainKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -593,8 +604,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderKeyDistributionMessage.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderKeyDistributionMessage.html index 767ef70..8e73209 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderKeyDistributionMessage.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderKeyDistributionMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderKeyDistributionMessage Struct Reference</title> + <title>SenderKeyDistributionMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderKeyDistributionMessage" class="dashAnchor"></a> - <a title="SenderKeyDistributionMessage Struct Reference"></a> + <a title="SenderKeyDistributionMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderKeyDistributionMessage Struct Reference + SenderKeyDistributionMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyDistributionMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyDistributionMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyDistributionMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderKeyDistributionMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/id" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vv">id</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vvp">id</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderKeyDistributionMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/iteration" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vv">iteration</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vvp">iteration</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/chainKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVv">chainKey</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVvp">chainKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vvp"></a> <a name="//apple_ref/swift/Property/signatureKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vv">signatureKey</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vvp">signatureKey</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -371,7 +368,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -385,9 +382,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageVACs6UInt32V2id_AE9iteration10Foundation4DataV05chainD0AA06PublicD0V09signatureD0tcfc"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2id9iteration05chainD009signatureD0ACs6UInt32V_AI10Foundation4DataVAA06PublicD0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(id:iteration:chainKey:signatureKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageVACs6UInt32V2id_AE9iteration10Foundation4DataV05chainD0AA06PublicD0V09signatureD0tcfc">init(id:iteration:chainKey:signatureKey:)</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2id9iteration05chainD009signatureD0ACs6UInt32V_AI10Foundation4DataVAA06PublicD0Vtcfc">init(id:iteration:chainKey:signatureKey:)</a> </code> </div> <div class="height-container"> @@ -402,7 +399,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">chainKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -467,13 +464,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -488,7 +492,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyDistributionMessage</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyDistributionMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderKeyDistributionMessage</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderKeyDistributionMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -533,13 +537,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20buffers"></a> + <a name="//apple_ref/swift/Section/Protocol buffers" class="dashAnchor"></a> + <a href="#/Protocol%20buffers"> + <h3 class="section-name">Protocol buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vv"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -554,7 +565,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyDistributionMessage</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyDistributionMessage</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -564,9 +575,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol28SenderKeyDistributionMessageVAcA0a1_cdeF0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol28SenderKeyDistributionMessageV4fromAcA0a1_cdeF0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageVAcA0a1_cdeF0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol28SenderKeyDistributionMessageV4fromAcA0a1_cdeF0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -586,7 +597,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyDistributionMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyDistributionMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -617,8 +628,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderKeyMessage.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderKeyMessage.html index 4c6ac2e..627b2c0 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderKeyMessage.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderKeyMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderKeyMessage Struct Reference</title> + <title>SenderKeyMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderKeyMessage" class="dashAnchor"></a> - <a title="SenderKeyMessage Struct Reference"></a> + <a title="SenderKeyMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderKeyMessage Struct Reference + SenderKeyMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderKeyMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SenderKeyMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderKeyMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/keyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vv">keyId</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vvp">keyId</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderKeyMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/iteration" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vv">iteration</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vvp">iteration</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/cipherText" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVv">cipherText</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVvp">cipherText</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/signature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVv">signature</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVvp">signature</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageVACs6UInt32V5keyId_AE9iteration10Foundation4DataV10cipherTextAA07PrivateD0V09signatureD0tKcfc"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV5keyId9iteration10cipherText09signatureD0ACs6UInt32V_AI10Foundation4DataVAA07PrivateD0VtKcfc"></a> <a name="//apple_ref/swift/Method/init(keyId:iteration:cipherText:signatureKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageVACs6UInt32V5keyId_AE9iteration10Foundation4DataV10cipherTextAA07PrivateD0V09signatureD0tKcfc">init(keyId:iteration:cipherText:signatureKey:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV5keyId9iteration10cipherText09signatureD0ACs6UInt32V_AI10Foundation4DataVAA07PrivateD0VtKcfc">init(keyId:iteration:cipherText:signatureKey:)</a> </code> </div> <div class="height-container"> @@ -407,7 +404,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">keyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -472,9 +469,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV6verifySbAA06PublicD0V09signatureD0_tKF"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV6verify09signatureD0SbAA06PublicD0V_tKF"></a> <a name="//apple_ref/swift/Method/verify(signatureKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV6verifySbAA06PublicD0V09signatureD0_tKF">verify(signatureKey:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV6verify09signatureD0SbAA06PublicD0V_tKF">verify(signatureKey:)</a> </code> </div> <div class="height-container"> @@ -499,7 +496,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -536,9 +533,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vv"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -553,7 +550,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyMessage</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyMessage</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -563,9 +560,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageVAcA0a1_cdE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV4fromAcA0a1_cdE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageVAcA0a1_cdE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV4fromAcA0a1_cdE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -591,7 +588,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_SenderKeyMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -646,7 +643,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -660,9 +657,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderKeyMessageVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol16SenderKeyMessageV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderKeyMessageV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -689,7 +686,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -720,8 +717,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderMessageKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderMessageKey.html index 7187a03..2eff69d 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderMessageKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SenderMessageKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SenderMessageKey Struct Reference</title> + <title>SenderMessageKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SenderMessageKey" class="dashAnchor"></a> - <a title="SenderMessageKey Struct Reference"></a> + <a title="SenderMessageKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SenderMessageKey Struct Reference + SenderMessageKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SenderMessageKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SenderMessageKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SenderMessageKey</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SenderMessageKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvpZ"></a> <a name="//apple_ref/swift/Variable/infoMaterial" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvZ">infoMaterial</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvpZ">infoMaterial</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SenderMessageKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">infoMaterial</span> <span class="o">=</span> <span class="s">"WhisperGroup"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">infoMaterial</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ"></a> <a name="//apple_ref/swift/Variable/ivLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">ivLength</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ">ivLength</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">ivLength</span> <span class="o">=</span> <span class="mi">16</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">ivLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ"></a> <a name="//apple_ref/swift/Variable/cipherKeyLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">cipherKeyLength</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ">cipherKeyLength</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">cipherKeyLength</span> <span class="o">=</span> <span class="mi">32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">cipherKeyLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ"></a> <a name="//apple_ref/swift/Variable/secretLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">secretLength</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ">secretLength</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">secretLength</span> <span class="o">=</span> <span class="n"><a href="../Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">ivLength</a></span> <span class="o">+</span> <span class="n"><a href="../Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ">cipherKeyLength</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">static</span> <span class="k">let</span> <span class="nv">secretLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/iteration" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vv">iteration</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vvp">iteration</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/iv" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVv">iv</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVvp">iv</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/cipherKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVv">cipherKey</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVvp">cipherKey</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">cipherKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">cipherKey</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -430,9 +427,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/seed" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVv">seed</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvp">seed</a> </code> </div> <div class="height-container"> @@ -447,7 +444,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -457,9 +454,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyVACs6UInt32V9iteration_10Foundation4DataV4seedtKcfc"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV9iteration4seedACs6UInt32V_10Foundation4DataVtKcfc"></a> <a name="//apple_ref/swift/Method/init(iteration:seed:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyVACs6UInt32V9iteration_10Foundation4DataV4seedtKcfc">init(iteration:seed:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV9iteration4seedACs6UInt32V_10Foundation4DataVtKcfc">init(iteration:seed:)</a> </code> </div> <div class="height-container"> @@ -479,7 +476,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">iteration</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">seed</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -520,13 +517,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVv"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -541,7 +545,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderMessageKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderMessageKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -551,9 +555,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyVAcA0a1_cE5StateVABV4from_tKcfc"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV4fromAcA0a1_cE5StateVABV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyVAcA0a1_cE5StateVABV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV4fromAcA0a1_cE5StateVABV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -573,7 +577,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderMessageKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SenderKeyState</span><span class="o">.</span><span class="kt">SenderMessageKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -602,13 +606,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Equatable%20protocol"></a> + <a name="//apple_ref/swift/Section/Equatable protocol" class="dashAnchor"></a> + <a href="#/Equatable%20protocol"> + <h3 class="section-name">Equatable protocol</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol16SenderMessageKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol16SenderMessageKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol16SenderMessageKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -623,7 +634,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderMessageKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderMessageKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SenderMessageKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SenderMessageKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -670,8 +681,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionBuilder.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionBuilder.html index 3924afc..16f4712 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionBuilder.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionBuilder.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionBuilder Struct Reference</title> + <title>SessionBuilder Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionBuilder" class="dashAnchor"></a> - <a title="SessionBuilder Struct Reference"></a> + <a title="SessionBuilder Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionBuilder Struct Reference + SessionBuilder Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionBuilder</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SessionBuilder</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionBuilder</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -255,9 +252,9 @@ <h1>SessionBuilder</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV5storexv"></a> + <a name="/s:14SignalProtocol14SessionBuilderV5storexvp"></a> <a name="//apple_ref/swift/Property/store" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV5storexv">store</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV5storexvp">store</a> </code> </div> <div class="height-container"> @@ -272,7 +269,7 @@ <h1>SessionBuilder</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> </div> </div> @@ -282,9 +279,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzv"></a> + <a name="/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzvp"></a> <a name="//apple_ref/swift/Property/remoteAddress" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzv">remoteAddress</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzvp">remoteAddress</a> </code> </div> <div class="height-container"> @@ -299,7 +296,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span></code></pre> </div> </div> @@ -309,9 +306,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderVACyxG7AddressQz06remoteE0_x5storetcfc"></a> + <a name="/s:14SignalProtocol14SessionBuilderV13remoteAddress5storeACyxG0F0Qz_xtcfc"></a> <a name="//apple_ref/swift/Method/init(remoteAddress:store:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderVACyxG7AddressQz06remoteE0_x5storetcfc">init(remoteAddress:store:)</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV13remoteAddress5storeACyxG0F0Qz_xtcfc">init(remoteAddress:store:)</a> </code> </div> <div class="height-container"> @@ -326,7 +323,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span><span class="p">,</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span><span class="p">,</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">)</span></code></pre> </div> </div> @@ -367,9 +364,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV7processs6UInt32VSgAA06PreKeyA7MessageV03prehaI0_AA0C6RecordC07sessionK0tKF"></a> + <a name="/s:14SignalProtocol14SessionBuilderV7process06preKeyA7Message13sessionRecords6UInt32VSgAA03PregaH0V_AA0cJ0CtKF"></a> <a name="//apple_ref/swift/Method/process(preKeySignalMessage:sessionRecord:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7processs6UInt32VSgAA06PreKeyA7MessageV03prehaI0_AA0C6RecordC07sessionK0tKF">process(preKeySignalMessage:sessionRecord:)</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7process06preKeyA7Message13sessionRecords6UInt32VSgAA03PregaH0V_AA0cJ0CtKF">process(preKeySignalMessage:sessionRecord:)</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeySignalMessage</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">,</span> <span class="n">sessionRecord</span> <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeySignalMessage</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">,</span> <span class="n">sessionRecord</span> <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> </div> </div> @@ -409,7 +406,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The received <code>PreKeySignalMessage</code>.</p> + <p>The received <code><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></code>.</p> </div> </td> </tr> @@ -426,9 +423,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LLs6UInt32VSgAA06PreKeyA7MessageV03prepaQ2V3_AA0C6RecordC6recordtKF"></a> + <a name="/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LL06preKeyA9MessageV36records6UInt32VSgAA03PreoaP0V_AA0C6RecordCtKF"></a> <a name="//apple_ref/swift/Method/process(preKeySignalMessageV3:record:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LLs6UInt32VSgAA06PreKeyA7MessageV03prepaQ2V3_AA0C6RecordC6recordtKF">process(preKeySignalMessageV3:record:)</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LL06preKeyA9MessageV36records6UInt32VSgAA03PreoaP0V_AA0C6RecordCtKF">process(preKeySignalMessageV3:record:)</a> </code> </div> <div class="height-container"> @@ -448,9 +445,9 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span> - <span class="n">preKeySignalMessageV3</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">,</span> - <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span> + <span class="n">preKeySignalMessageV3</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">,</span> + <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span><span class="p">?</span></code></pre> </div> </div> @@ -466,7 +463,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The received <code>PreKeySignalMessage</code>.</p> + <p>The received <code><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></code>.</p> </div> </td> </tr> @@ -483,9 +480,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol14SessionBuilderV7processyAA0C12PreKeyBundleV03pregH0_tKF"></a> + <a name="/s:14SignalProtocol14SessionBuilderV7process12preKeyBundleyAA0c3PregH0V_tKF"></a> <a name="//apple_ref/swift/Method/process(preKeyBundle:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7processyAA0C12PreKeyBundleV03pregH0_tKF">process(preKeyBundle:)</a> + <a class="token" href="#/s:14SignalProtocol14SessionBuilderV7process12preKeyBundleyAA0c3PregH0V_tKF">process(preKeyBundle:)</a> </code> </div> <div class="height-container"> @@ -494,6 +491,15 @@ <h4>Return Value</h4> <div class="pointer"></div> <div class="abstract"> <p>Build a new session from a <code><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></code> retrieved from a server.</p> +<div class="aside aside-note"> + <p class="aside-title">Note</p> + Possible errors: + +</div> +<li><code>untrustedIdentity</code>, the identity key of the bundle is untrusted</li> +<li><code>invalidSignature</code> if the signed pre key signature is invalid</li> +<li><code>storageError</code> if the key stores could not be accessed</li> +<li><code>invalidProtobuf</code> if data is corrupt</li> <div class="aside aside-throws"> <p class="aside-title">Throws</p> <code><a href="../Classes/SignalError.html">SignalError</a></code> errors @@ -505,7 +511,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeyBundle</span> <span class="nv">bundle</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeyBundle</span> <span class="nv">bundle</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -536,8 +542,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionCipher.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionCipher.html index 280e22f..dc6ceaa 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionCipher.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionCipher.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionCipher Struct Reference</title> + <title>SessionCipher Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionCipher" class="dashAnchor"></a> - <a title="SessionCipher Struct Reference"></a> + <a title="SessionCipher Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionCipher Struct Reference + SessionCipher Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionCipher</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionCipher</span><span class="o"><</span><span class="kt">Context</span><span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span><span class="o">></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionCipher</span><span class="o"><</span><span class="kt">Context</span><span class="o">></span> <span class="k">where</span> <span class="kt">Context</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/KeyStore.html">KeyStore</a></span></code></pre> </div> </div> @@ -251,9 +248,9 @@ <h3 class="section-name">Variables</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxv"></a> + <a name="/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxvp"></a> <a name="//apple_ref/swift/Property/store" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxv">store</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxvp">store</a> </code> </div> <div class="height-container"> @@ -268,7 +265,7 @@ <h3 class="section-name">Variables</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span></code></pre> </div> </div> @@ -278,9 +275,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzv"></a> + <a name="/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzvp"></a> <a name="//apple_ref/swift/Property/remoteAddress" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzv">remoteAddress</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzvp">remoteAddress</a> </code> </div> <div class="height-container"> @@ -295,7 +292,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="k">var</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span></code></pre> </div> </div> @@ -316,9 +313,9 @@ <h3 class="section-name">Initialization</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherVACyxGx5store_7AddressQz06remoteF0tcfc"></a> + <a name="/s:14SignalProtocol13SessionCipherV5store13remoteAddressACyxGx_0G0Qztcfc"></a> <a name="//apple_ref/swift/Method/init(store:remoteAddress:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherVACyxGx5store_7AddressQz06remoteF0tcfc">init(store:remoteAddress:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV5store13remoteAddressACyxGx_0G0Qztcfc">init(store:remoteAddress:)</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h3 class="section-name">Initialization</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="kt">Context</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="kt">Context</span><span class="o">.</span><span class="kt">Address</span><span class="p">)</span></code></pre> </div> </div> @@ -396,9 +393,9 @@ <h3 class="section-name">Public functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF"></a> <a name="//apple_ref/swift/Method/encrypt(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF">encrypt(_:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF">encrypt(_:)</a> </code> </div> <div class="height-container"> @@ -418,7 +415,7 @@ <h3 class="section-name">Public functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -451,9 +448,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0D11TextMessageVKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypty10Foundation4DataVAA0D11TextMessageVKF"></a> <a name="//apple_ref/swift/Method/decrypt(_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0D11TextMessageVKF">decrypt(_:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypty10Foundation4DataVAA0D11TextMessageVKF">decrypt(_:)</a> </code> </div> <div class="height-container"> @@ -480,7 +477,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">_</span> <span class="nv">message</span><span class="p">:</span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -490,9 +487,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA06PreKeyA7MessageV03preiaJ0_tKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypt06preKeyA7Message10Foundation4DataVAA03PregaH0V_tKF"></a> <a name="//apple_ref/swift/Method/decrypt(preKeySignalMessage:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA06PreKeyA7MessageV03preiaJ0_tKF">decrypt(preKeySignalMessage:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt06preKeyA7Message10Foundation4DataVAA03PregaH0V_tKF">decrypt(preKeySignalMessage:)</a> </code> </div> <div class="height-container"> @@ -522,7 +519,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">preKeySignalMessage</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">preKeySignalMessage</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/PreKeySignalMessage.html">PreKeySignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -555,9 +552,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0A7MessageV06signalH0_tKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypt13signalMessage10Foundation4DataVAA0aG0V_tKF"></a> <a name="//apple_ref/swift/Method/decrypt(signalMessage:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0A7MessageV06signalH0_tKF">decrypt(signalMessage:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt13signalMessage10Foundation4DataVAA0aG0V_tKF">decrypt(signalMessage:)</a> </code> </div> <div class="height-container"> @@ -585,7 +582,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">signalMessage</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">signalMessage</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -618,9 +615,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7processyAA0C12PreKeyBundleV03pregH0_tKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7process12preKeyBundleyAA0c3PregH0V_tKF"></a> <a name="//apple_ref/swift/Method/process(preKeyBundle:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7processyAA0C12PreKeyBundleV03pregH0_tKF">process(preKeyBundle:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7process12preKeyBundleyAA0c3PregH0V_tKF">process(preKeyBundle:)</a> </code> </div> <div class="height-container"> @@ -640,7 +637,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeyBundle</span> <span class="nv">bundle</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">preKeyBundle</span> <span class="nv">bundle</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyBundle.html">SessionPreKeyBundle</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -693,7 +690,7 @@ <h3 class="section-name">Private functions</h3> <p>Load the session record for the remote address</p> <div class="aside aside-throws"> <p class="aside-title">Throws</p> - <code><a href="../Classes/SignalError.html">SignalError</a></code>of type <code>storageError</code> + <code><a href="../Classes/SignalError.html">SignalError</a></code> of type <code>storageError</code> </div> @@ -702,7 +699,7 @@ <h3 class="section-name">Private functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">loadSession</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">loadSession</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span></code></pre> </div> </div> @@ -716,9 +713,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C6RecordC4from_AA0A7MessageV3andtKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C6RecordC_AA0A7MessageVtKF"></a> <a name="//apple_ref/swift/Method/decrypt(from:and:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C6RecordC4from_AA0A7MessageV3andtKF">decrypt(from:and:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C6RecordC_AA0A7MessageVtKF">decrypt(from:and:)</a> </code> </div> <div class="height-container"> @@ -738,7 +735,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">from</span> <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">signalMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">from</span> <span class="nv">record</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionRecord.html">SessionRecord</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">signalMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -754,7 +751,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The <code>SessionRecord</code> containing the sessions</p> + <p>The <code><a href="../Classes/SessionRecord.html">SessionRecord</a></code> containing the sessions</p> </div> </td> </tr> @@ -783,9 +780,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C5StateC4from_AA0A7MessageV3andtKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C5StateC_AA0A7MessageVtKF"></a> <a name="//apple_ref/swift/Method/decrypt(from:and:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C5StateC4from_AA0A7MessageV3andtKF">decrypt(from:and:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C5StateC_AA0A7MessageVtKF">decrypt(from:and:)</a> </code> </div> <div class="height-container"> @@ -805,7 +802,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">from</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">signalMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">from</span> <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> <span class="n">and</span> <span class="nv">signalMessage</span><span class="p">:</span> <span class="kt"><a href="../Structs/SignalMessage.html">SignalMessage</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -821,7 +818,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The <code>SessionState</code> to try</p> + <p>The <code><a href="../Classes/SessionState.html">SessionState</a></code> to try</p> </div> </td> </tr> @@ -850,9 +847,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA9PublicKeyV14theirEphemeralAA0t5ChainX0V05chainX0s6UInt32V7countertKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeral8chainKey7counterAA07RatchethI0VAA0C5StateC_AA06PublicX0VAA0z5ChainX0Vs6UInt32VtKF"></a> <a name="//apple_ref/swift/Method/getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA9PublicKeyV14theirEphemeralAA0t5ChainX0V05chainX0s6UInt32V7countertKF">getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeral8chainKey7counterAA07RatchethI0VAA0C5StateC_AA06PublicX0VAA0z5ChainX0Vs6UInt32VtKF">getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)</a> </code> </div> <div class="height-container"> @@ -872,11 +869,11 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getOrCreateMessageKeys</span><span class="p">(</span> - <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> - <span class="nv">theirEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> - <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getOrCreateMessageKeys</span><span class="p">(</span> + <span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> + <span class="nv">theirEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">chainKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span><span class="p">,</span> + <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span></code></pre> </div> </div> @@ -945,9 +942,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA06PublicI0V14theirEphemeraltKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeralAA07RatchethI0VAA0C5StateC_AA06PublicI0VtKF"></a> <a name="//apple_ref/swift/Method/getOrCreateChainKey(state:theirEphemeral:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA06PublicI0V14theirEphemeraltKF">getOrCreateChainKey(state:theirEphemeral:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeralAA07RatchethI0VAA0C5StateC_AA06PublicI0VtKF">getOrCreateChainKey(state:theirEphemeral:)</a> </code> </div> <div class="height-container"> @@ -967,7 +964,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getOrCreateChainKey</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> <span class="nv">theirEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getOrCreateChainKey</span><span class="p">(</span><span class="nv">state</span><span class="p">:</span> <span class="kt"><a href="../Classes/SessionState.html">SessionState</a></span><span class="p">,</span> <span class="nv">theirEphemeral</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/RatchetChainKey.html">RatchetChainKey</a></span></code></pre> </div> </div> @@ -1012,9 +1009,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH9plaintexttKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys9plaintext10Foundation4DataVAA014RatchetMessageR0V_AJtKF"></a> <a name="//apple_ref/swift/Method/getCiphertext(messageKeys:plaintext:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH9plaintexttKF">getCiphertext(messageKeys:plaintext:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys9plaintext10Foundation4DataVAA014RatchetMessageR0V_AJtKF">getCiphertext(messageKeys:plaintext:)</a> </code> </div> <div class="height-container"> @@ -1034,7 +1031,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getCiphertext</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="nv">plaintext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getCiphertext</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="nv">plaintext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -1079,9 +1076,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH10ciphertexttKF"></a> + <a name="/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys10ciphertext10Foundation4DataVAA014RatchetMessageR0V_AJtKF"></a> <a name="//apple_ref/swift/Method/getPlaintext(messageKeys:ciphertext:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH10ciphertexttKF">getPlaintext(messageKeys:ciphertext:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys10ciphertext10Foundation4DataVAA014RatchetMessageR0V_AJtKF">getPlaintext(messageKeys:ciphertext:)</a> </code> </div> <div class="height-container"> @@ -1101,7 +1098,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getPlaintext</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getPlaintext</span><span class="p">(</span><span class="nv">messageKeys</span><span class="p">:</span> <span class="kt"><a href="../Structs/RatchetMessageKeys.html">RatchetMessageKeys</a></span><span class="p">,</span> <span class="nv">ciphertext</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -1148,8 +1145,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKey.html index a3ec933..3342ec3 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionPreKey Struct Reference</title> + <title>SessionPreKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionPreKey" class="dashAnchor"></a> - <a title="SessionPreKey Struct Reference"></a> + <a title="SessionPreKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionPreKey Struct Reference + SessionPreKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionPreKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionPreKey</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>SessionPreKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvZ"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvpZ"></a> <a name="//apple_ref/swift/Variable/mediumMaxValue" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvZ">mediumMaxValue</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvpZ">mediumMaxValue</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>SessionPreKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">mediumMaxValue</span><span class="p">:</span> <span class="kt">UInt32</span> <span class="o">=</span> <span class="mh">0xFFFFFF</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">mediumMaxValue</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVv"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVvp"></a> <a name="//apple_ref/swift/Property/publicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVv">publicKey</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVvp">publicKey</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a></span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vv"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vvp"></a> <a name="//apple_ref/swift/Property/privateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vv">privateKey</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vvp">privateKey</a> </code> </div> <div class="height-container"> @@ -313,7 +310,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> </div> </div> @@ -323,9 +320,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyVACs6UInt32V2id_AA0E4PairV03keyH0tcfc"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV2id7keyPairACs6UInt32V_AA0eH0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(id:keyPair:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyVACs6UInt32V2id_AA0E4PairV03keyH0tcfc">init(id:keyPair:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV2id7keyPairACs6UInt32V_AA0eH0Vtcfc">init(id:keyPair:)</a> </code> </div> <div class="height-container"> @@ -340,7 +337,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">)</span></code></pre> </div> </div> @@ -381,9 +378,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyVACs6UInt32V5index_tKcfc"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV5indexACs6UInt32V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(index:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyVACs6UInt32V5index_tKcfc">init(index:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV5indexACs6UInt32V_tKcfc">init(index:)</a> </code> </div> <div class="height-container"> @@ -410,7 +407,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">index</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -439,9 +436,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vv"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vvp"></a> <a name="//apple_ref/swift/Property/keyPair" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vv">keyPair</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vvp">keyPair</a> </code> </div> <div class="height-container"> @@ -456,7 +453,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -466,13 +463,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vv"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -487,7 +491,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -497,9 +501,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol13SessionPreKeyVAcA0a1_dE0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol13SessionPreKeyV4fromAcA0a1_dE0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol13SessionPreKeyVAcA0a1_dE0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol13SessionPreKeyV4fromAcA0a1_dE0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -519,7 +523,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">object</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -550,8 +554,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKeyBundle.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKeyBundle.html index b15163a..580b6eb 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKeyBundle.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKeyBundle.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionPreKeyBundle Struct Reference</title> + <title>SessionPreKeyBundle Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionPreKeyBundle" class="dashAnchor"></a> - <a title="SessionPreKeyBundle Struct Reference"></a> + <a title="SessionPreKeyBundle Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionPreKeyBundle Struct Reference + SessionPreKeyBundle Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionPreKeyBundle</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyBundle</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyBundle</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SessionPreKeyBundle</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/preKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vv">preKeyId</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vvp">preKeyId</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SessionPreKeyBundle</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgvp"></a> <a name="//apple_ref/swift/Property/preKeyPublic" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgv">preKeyPublic</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgvp">preKeyPublic</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">preKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">preKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?</span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyId" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vv">signedPreKeyId</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vvp">signedPreKeyId</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vvp"></a> <a name="//apple_ref/swift/Property/signedPreKeyPublic" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vv">signedPreKeyPublic</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vvp">signedPreKeyPublic</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/signedPreKeySignature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVv">signedPreKeySignature</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVvp">signedPreKeySignature</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">signedPreKeySignature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">signedPreKeySignature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vvp"></a> <a name="//apple_ref/swift/Property/identityKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vv">identityKey</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vvp">identityKey</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleVACs6UInt32V03preE2Id_AA06PublicE0VSg0heJ0AE06signeddeI0AH0kdeJ010Foundation4DataV0kdE9SignatureAH08identityE0tcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE2Id0gE6Public06signeddeH00jdeI00jdE9Signature08identityE0ACs6UInt32V_AA0iE0VSgAkM10Foundation4DataVAMtcfc"></a> <a name="//apple_ref/swift/Method/init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleVACs6UInt32V03preE2Id_AA06PublicE0VSg0heJ0AE06signeddeI0AH0kdeJ010Foundation4DataV0kdE9SignatureAH08identityE0tcfc">init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Id0gE6Public06signeddeH00jdeI00jdE9Signature08identityE0ACs6UInt32V_AA0iE0VSgAkM10Foundation4DataVAMtcfc">init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)</a> </code> </div> <div class="height-container"> @@ -420,13 +417,13 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span> - <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">preKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?,</span> - <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">signedPreKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">signedPreKeySignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span> + <span class="nv">preKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">preKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">?,</span> + <span class="nv">signedPreKeyId</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">signedPreKeyPublic</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">signedPreKeySignature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -527,9 +524,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleVAcA0cdE6PublicV03preE0_AA0c6SigneddeG0V06signeddE0AA0gE0V08identityE0tcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AcA0cdE6PublicV_AA0c6SigneddeJ0VAA0jE0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(preKey:signedPreKey:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleVAcA0cdE6PublicV03preE0_AA0c6SigneddeG0V06signeddE0AA0gE0V08identityE0tcfc">init(preKey:signedPreKey:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AcA0cdE6PublicV_AA0c6SigneddeJ0VAA0jE0Vtcfc">init(preKey:signedPreKey:identityKey:)</a> </code> </div> <div class="height-container"> @@ -544,9 +541,9 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a></span><span class="p">,</span> - <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a></span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionPreKeyPublic.html">SessionPreKeyPublic</a></span><span class="p">,</span> + <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a></span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -611,9 +608,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyBundleVAC10Foundation4DataV03preE0_AF06signeddE0AF08identityE0tKcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AC10Foundation4DataV_A2ItKcfc"></a> <a name="//apple_ref/swift/Method/init(preKey:signedPreKey:identityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleVAC10Foundation4DataV03preE0_AF06signeddE0AF08identityE0tKcfc">init(preKey:signedPreKey:identityKey:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AC10Foundation4DataV_A2ItKcfc">init(preKey:signedPreKey:identityKey:)</a> </code> </div> <div class="height-container"> @@ -628,9 +625,9 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">identityKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">preKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">identityKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -685,8 +682,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKeyPublic.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKeyPublic.html index edd6a82..3b135da 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKeyPublic.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionPreKeyPublic.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionPreKeyPublic Struct Reference</title> + <title>SessionPreKeyPublic Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionPreKeyPublic" class="dashAnchor"></a> - <a title="SessionPreKeyPublic Struct Reference"></a> + <a title="SessionPreKeyPublic Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionPreKeyPublic Struct Reference + SessionPreKeyPublic Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionPreKeyPublic</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionPreKeyPublic</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionPreKeyPublic</span></code></pre> </div> </div> @@ -242,9 +239,9 @@ <h1>SessionPreKeyPublic</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/id" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vv">id</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vvp">id</a> </code> </div> <div class="height-container"> @@ -259,7 +256,7 @@ <h1>SessionPreKeyPublic</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -269,9 +266,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vv">key</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vvp">key</a> </code> </div> <div class="height-container"> @@ -286,7 +283,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -296,9 +293,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicVACs6UInt32V2id_AA0fE0V3keytcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV2id3keyACs6UInt32V_AA0fE0Vtcfc"></a> <a name="//apple_ref/swift/Method/init(id:key:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicVACs6UInt32V2id_AA0fE0V3keytcfc">init(id:key:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV2id3keyACs6UInt32V_AA0fE0Vtcfc">init(id:key:)</a> </code> </div> <div class="height-container"> @@ -313,7 +310,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span></code></pre> </div> </div> @@ -354,13 +351,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVv"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -375,7 +379,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="o">.</span><span class="kt">PublicPart</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="o">.</span><span class="kt">PublicPart</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -385,9 +389,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionPreKeyPublicVAcA0a1_dE0V0F4PartV4from_tKcfc"></a> + <a name="/s:14SignalProtocol19SessionPreKeyPublicV4fromAcA0a1_dE0V0F4PartV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicVAcA0a1_dE0V0F4PartV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionPreKeyPublicV4fromAcA0a1_dE0V0F4PartV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -407,7 +411,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="o">.</span><span class="kt">PublicPart</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_PreKey</span><span class="o">.</span><span class="kt">PublicPart</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -438,8 +442,8 @@ <h4>Parameters</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionSignedPreKey.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionSignedPreKey.html index e6d52cf..1a2d921 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionSignedPreKey.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionSignedPreKey.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionSignedPreKey Struct Reference</title> + <title>SessionSignedPreKey Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionSignedPreKey" class="dashAnchor"></a> - <a title="SessionSignedPreKey Struct Reference"></a> + <a title="SessionSignedPreKey Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionSignedPreKey Struct Reference + SessionSignedPreKey Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionSignedPreKey</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionSignedPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionSignedPreKey</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SessionSignedPreKey</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVv"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVvp"></a> <a name="//apple_ref/swift/Property/publicKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVv">publicKey</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVvp">publicKey</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>SessionSignedPreKey</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a></span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vv"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vvp"></a> <a name="//apple_ref/swift/Property/privateKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vv">privateKey</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vvp">privateKey</a> </code> </div> <div class="height-container"> @@ -287,7 +284,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">privateKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span></code></pre> </div> </div> @@ -297,9 +294,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_s6UInt64V9timestampAA0F4PairV03keyK010Foundation4DataV9signaturetcfc"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV2id9timestamp7keyPair9signatureACs6UInt32V_s6UInt64VAA0fJ0V10Foundation4DataVtcfc"></a> <a name="//apple_ref/swift/Method/init(id:timestamp:keyPair:signature:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_s6UInt64V9timestampAA0F4PairV03keyK010Foundation4DataV9signaturetcfc">init(id:timestamp:keyPair:signature:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV2id9timestamp7keyPair9signatureACs6UInt32V_s6UInt64VAA0fJ0V10Foundation4DataVtcfc">init(id:timestamp:keyPair:signature:)</a> </code> </div> <div class="height-container"> @@ -314,7 +311,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">,</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">,</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span><span class="p">,</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -379,9 +376,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_AA07PrivateF0V09signatureF0s6UInt64V9timestamptKcfc"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV2id09signatureF09timestampACs6UInt32V_AA07PrivateF0Vs6UInt64VtKcfc"></a> <a name="//apple_ref/swift/Method/init(id:signatureKey:timestamp:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_AA07PrivateF0V09signatureF0s6UInt64V9timestamptKcfc">init(id:signatureKey:timestamp:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV2id09signatureF09timestampACs6UInt32V_AA07PrivateF0Vs6UInt64VtKcfc">init(id:signatureKey:timestamp:)</a> </code> </div> <div class="height-container"> @@ -405,7 +402,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">signatureKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -470,9 +467,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vv"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vvp"></a> <a name="//apple_ref/swift/Property/keyPair" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vv">keyPair</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vvp">keyPair</a> </code> </div> <div class="height-container"> @@ -487,7 +484,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">keyPair</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -497,13 +494,20 @@ <h4>Declaration</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vv"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -518,7 +522,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -528,9 +532,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyVAcA0a1_deF0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV4fromAcA0a1_deF0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyVAcA0a1_deF0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV4fromAcA0a1_deF0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -550,7 +554,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -579,13 +583,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SessionSignedPreKeyV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol19SessionSignedPreKeyV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol19SessionSignedPreKeyV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -600,7 +611,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKey</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKey</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -616,8 +627,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionSignedPreKeyPublic.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionSignedPreKeyPublic.html index 5f8f931..449df33 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionSignedPreKeyPublic.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SessionSignedPreKeyPublic.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SessionSignedPreKeyPublic Struct Reference</title> + <title>SessionSignedPreKeyPublic Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SessionSignedPreKeyPublic" class="dashAnchor"></a> - <a title="SessionSignedPreKeyPublic Struct Reference"></a> + <a title="SessionSignedPreKeyPublic Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SessionSignedPreKeyPublic Struct Reference + SessionSignedPreKeyPublic Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SessionSignedPreKeyPublic</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SessionSignedPreKeyPublic</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SessionSignedPreKeyPublic</span></code></pre> </div> </div> @@ -243,9 +240,9 @@ <h1>SessionSignedPreKeyPublic</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/id" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vv">id</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vvp">id</a> </code> </div> <div class="height-container"> @@ -260,7 +257,7 @@ <h1>SessionSignedPreKeyPublic</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -270,9 +267,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vvp"></a> <a name="//apple_ref/swift/Property/key" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vv">key</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vvp">key</a> </code> </div> <div class="height-container"> @@ -287,7 +284,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -297,9 +294,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vvp"></a> <a name="//apple_ref/swift/Property/timestamp" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vv">timestamp</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vvp">timestamp</a> </code> </div> <div class="height-container"> @@ -314,7 +311,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span></code></pre> </div> </div> @@ -324,9 +321,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/signature" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVv">signature</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVvp">signature</a> </code> </div> <div class="height-container"> @@ -341,7 +338,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -351,9 +348,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicVACs6UInt32V2id_s6UInt64V9timestampAA0gF0V3key10Foundation4DataV9signaturetcfc"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2id9timestamp3key9signatureACs6UInt32V_s6UInt64VAA0gF0V10Foundation4DataVtcfc"></a> <a name="//apple_ref/swift/Method/init(id:timestamp:key:signature:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicVACs6UInt32V2id_s6UInt64V9timestampAA0gF0V3key10Foundation4DataV9signaturetcfc">init(id:timestamp:key:signature:)</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2id9timestamp3key9signatureACs6UInt32V_s6UInt64VAA0gF0V10Foundation4DataVtcfc">init(id:timestamp:key:signature:)</a> </code> </div> <div class="height-container"> @@ -368,7 +365,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> <span class="nv">signature</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre> </div> </div> @@ -430,16 +427,54 @@ <h4>Parameters</h4> </section> </div> </li> + <li class="item"> + <div> + <code> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV6verify4withSbAA0gF0V_tF"></a> + <a name="//apple_ref/swift/Method/verify(with:)" class="dashAnchor"></a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV6verify4withSbAA0gF0V_tF">verify(with:)</a> + </code> + </div> + <div class="height-container"> + <div class="pointer-container"></div> + <section class="section"> + <div class="pointer"></div> + <div class="abstract"> + <p>Verify that the signed key is valid.</p> + + </div> + <div class="declaration"> + <h4>Declaration</h4> + <div class="language"> + <p class="aside-title">Swift</p> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verify</span><span class="p">(</span><span class="n">with</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + + </div> + </div> + <div> + <h4>Return Value</h4> + <p><code>true</code> if the signature is valid</p> + </div> + </section> + </div> + </li> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVv"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVvp">protoObject</a> </code> </div> <div class="height-container"> @@ -454,7 +489,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="o">.</span><span class="kt">PublicPart</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="o">.</span><span class="kt">PublicPart</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -464,9 +499,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicVAcA0a1_deF0V0G4PartV4from_tKcfc"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV4fromAcA0a1_deF0V0G4PartV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicVAcA0a1_deF0V0G4PartV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV4fromAcA0a1_deF0V0G4PartV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -486,7 +521,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="o">.</span><span class="kt">PublicPart</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignedPreKey</span><span class="o">.</span><span class="kt">PublicPart</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -515,13 +550,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Equatable"></a> + <a name="//apple_ref/swift/Section/Protocol Equatable" class="dashAnchor"></a> + <a href="#/Protocol%20Equatable"> + <h3 class="section-name">Protocol Equatable</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -536,7 +578,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKeyPublic</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKeyPublic</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKeyPublic</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SessionSignedPreKeyPublic</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -552,8 +594,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalCommonCrypto.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalCommonCrypto.html index 2061aa2..ba09b37 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalCommonCrypto.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalCommonCrypto.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalCommonCrypto Struct Reference</title> + <title>SignalCommonCrypto Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SignalCommonCrypto" class="dashAnchor"></a> - <a title="SignalCommonCrypto Struct Reference"></a> + <a title="SignalCommonCrypto Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalCommonCrypto Struct Reference + SignalCommonCrypto Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalCommonCrypto</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCommonCrypto</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCommonCrypto</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> </div> </div> @@ -249,9 +246,9 @@ <h3 class="section-name">Protocol SignalCryptoProvider</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV6random10Foundation4DataVSi5bytes_tKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV6random5bytes10Foundation4DataVSi_tKF"></a> <a name="//apple_ref/swift/Method/random(bytes:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV6random10Foundation4DataVSi5bytes_tKF">random(bytes:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV6random5bytes10Foundation4DataVSi_tKF">random(bytes:)</a> </code> </div> <div class="height-container"> @@ -271,7 +268,7 @@ <h3 class="section-name">Protocol SignalCryptoProvider</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -304,9 +301,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItF"></a> <a name="//apple_ref/swift/Method/hmacSHA256(for:with:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtF">hmacSHA256(for:with:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItF">hmacSHA256(for:with:)</a> </code> </div> <div class="height-container"> @@ -321,7 +318,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -366,9 +363,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV6sha51210Foundation4DataVAG3for_tKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV6sha5123for10Foundation4DataVAH_tKF"></a> <a name="//apple_ref/swift/Method/sha512(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV6sha51210Foundation4DataVAG3for_tKF">sha512(for:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV6sha5123for10Foundation4DataVAH_tKF">sha512(for:)</a> </code> </div> <div class="height-container"> @@ -388,7 +385,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -421,9 +418,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF"></a> <a name="//apple_ref/swift/Method/encrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF">encrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF">encrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -443,7 +440,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -483,7 +480,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The key for encryption (<code>kCCKeySizeAES128</code> bytes)</p> + <p>The key for encryption (<code>kCCKeySizeAES256</code> bytes)</p> </div> </td> </tr> @@ -495,7 +492,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The initialization vector</p> + <p>The initialization vector (<code>kCCBlockSizeAES128</code> bytes)</p> </div> </td> </tr> @@ -512,9 +509,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF"></a> <a name="//apple_ref/swift/Method/decrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF">decrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF">decrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -534,7 +531,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -574,7 +571,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The key for decryption (<code>kCCKeySizeAES128</code> bytes)</p> + <p>The key for decryption (<code>kCCKeySizeAES256</code> bytes)</p> </div> </td> </tr> @@ -586,7 +583,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The initialization vector</p> + <p>The initialization vector (<code>kCCBlockSizeAES128</code> bytes)</p> </div> </td> </tr> @@ -614,9 +611,9 @@ <h3 class="section-name">Encryption helper functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3cbc_AH3keyAH2ivSb7encrypttKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3cbc3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF"></a> <a name="//apple_ref/swift/Method/process(cbc:key:iv:encrypt:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3cbc_AH3keyAH2ivSb7encrypttKF">process(cbc:key:iv:encrypt:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3cbc3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF">process(cbc:key:iv:encrypt:)</a> </code> </div> <div class="height-container"> @@ -636,7 +633,7 @@ <h3 class="section-name">Encryption helper functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">cbc</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">encrypt</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">cbc</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">encrypt</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -705,9 +702,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF"></a> <a name="//apple_ref/swift/Method/encrypt(ctr:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF">encrypt(ctr:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF">encrypt(ctr:key:iv:)</a> </code> </div> <div class="height-container"> @@ -727,7 +724,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -784,9 +781,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF"></a> <a name="//apple_ref/swift/Method/decrypt(ctr:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF">decrypt(ctr:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF">decrypt(ctr:key:iv:)</a> </code> </div> <div class="height-container"> @@ -806,7 +803,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -863,9 +860,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivSb7encrypttKF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF"></a> <a name="//apple_ref/swift/Method/process(ctr:key:iv:encrypt:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivSb7encrypttKF">process(ctr:key:iv:encrypt:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF">process(ctr:key:iv:encrypt:)</a> </code> </div> <div class="height-container"> @@ -885,7 +882,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">encrypt</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">process</span><span class="p">(</span><span class="n">ctr</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">encrypt</span><span class="p">:</span> <span class="kt">Bool</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -954,9 +951,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVSv4from_Si5counttF"></a> + <a name="/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL4from5count10Foundation4DataVSv_SitF"></a> <a name="//apple_ref/swift/Method/toArray(from:count:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVSv4from_Si5counttF">toArray(from:count:)</a> + <a class="token" href="#/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL4from5count10Foundation4DataVSv_SitF">toArray(from:count:)</a> </code> </div> <div class="height-container"> @@ -971,7 +968,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">(</span><span class="n">from</span> <span class="nv">ptr</span><span class="p">:</span> <span class="kt">UnsafeMutableRawPointer</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">(</span><span class="n">from</span> <span class="nv">ptr</span><span class="p">:</span> <span class="kt">UnsafeMutableRawPointer</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -1033,7 +1030,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">()</span></code></pre> </div> </div> @@ -1045,8 +1042,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalCrypto.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalCrypto.html index 36f18b9..f18fe28 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalCrypto.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalCrypto.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalCrypto Struct Reference</title> + <title>SignalCrypto Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SignalCrypto" class="dashAnchor"></a> - <a title="SignalCrypto Struct Reference"></a> + <a title="SignalCrypto Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalCrypto Struct Reference + SignalCrypto Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalCrypto</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCrypto</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalCrypto</span></code></pre> </div> </div> @@ -252,9 +249,9 @@ <h3 class="section-name">Public crypto provider functions</h3> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvpZ"></a> <a name="//apple_ref/swift/Variable/provider" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvZ">provider</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvpZ">provider</a> </code> </div> <div class="height-container"> @@ -269,7 +266,7 @@ <h3 class="section-name">Public crypto provider functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">var</span> <span class="nv">provider</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span> <span class="o">=</span> <span class="kt"><a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a></span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="k">var</span> <span class="nv">provider</span><span class="p">:</span> <span class="kt"><a href="../Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></span></code></pre> </div> </div> @@ -279,9 +276,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV6random10Foundation4DataVSi5bytes_tKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV6random5bytes10Foundation4DataVSi_tKFZ"></a> <a name="//apple_ref/swift/Method/random(bytes:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV6random10Foundation4DataVSi5bytes_tKFZ">random(bytes:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV6random5bytes10Foundation4DataVSi_tKFZ">random(bytes:)</a> </code> </div> <div class="height-container"> @@ -301,7 +298,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">random</span><span class="p">(</span><span class="nv">bytes</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -315,9 +312,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItKFZ"></a> <a name="//apple_ref/swift/Method/hmacSHA256(for:with:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtKFZ">hmacSHA256(for:with:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItKFZ">hmacSHA256(for:with:)</a> </code> </div> <div class="height-container"> @@ -326,7 +323,6 @@ <h4>Return Value</h4> <div class="pointer"></div> <div class="abstract"> <p>Authenticate a message with the HMAC based on SHA256.</p> -<li>salt: The salt for the HMAC.</li> <div class="aside aside-throws"> <p class="aside-title">Throws</p> Should only throw errors of type <code>SignalError.hmacError</code> @@ -338,7 +334,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">hmacSHA256</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">salt</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -358,6 +354,18 @@ <h4>Parameters</h4> </div> </td> </tr> + <tr> + <td> + <code> + <em>salt</em> + </code> + </td> + <td> + <div> + <p>The salt for the HMAC.</p> + </div> + </td> + </tr> </tbody> </table> </div> @@ -371,9 +379,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV6sha51210Foundation4DataVAG3for_tKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV6sha5123for10Foundation4DataVAH_tKFZ"></a> <a name="//apple_ref/swift/Method/sha512(for:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV6sha51210Foundation4DataVAG3for_tKFZ">sha512(for:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV6sha5123for10Foundation4DataVAH_tKFZ">sha512(for:)</a> </code> </div> <div class="height-container"> @@ -393,7 +401,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">sha512</span><span class="p">(</span><span class="k">for</span> <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -426,9 +434,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ"></a> <a name="//apple_ref/swift/Method/encrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ">encrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ">encrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -448,7 +456,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">encrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -476,7 +484,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The encryption type to use, see <code>SignalEncryptionScheme</code></p> + <p>The encryption type to use, see <code><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></code></p> </div> </td> </tr> @@ -517,9 +525,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ"></a> <a name="//apple_ref/swift/Method/decrypt(message:with:key:iv:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ">decrypt(message:with:key:iv:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ">decrypt(message:with:key:iv:)</a> </code> </div> <div class="height-container"> @@ -539,7 +547,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="n">with</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></span><span class="p">,</span> <span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">iv</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -567,7 +575,7 @@ <h4>Parameters</h4> </td> <td> <div> - <p>The encryption type to use, see <code>SignalEncryptionScheme</code></p> + <p>The encryption type to use, see <code><a href="../Enums/SignalEncryptionScheme.html">SignalEncryptionScheme</a></code></p> </div> </td> </tr> @@ -643,7 +651,7 @@ <h3 class="section-name">Useful helper functions</h3> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateIdentityKeyPair</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateIdentityKeyPair</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -657,9 +665,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV15generatePreKeysSayAA07SessionE3KeyVGs6UInt32V5start_Si5counttKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV15generatePreKeys5start5countSayAA07SessionE3KeyVGs6UInt32V_SitKFZ"></a> <a name="//apple_ref/swift/Method/generatePreKeys(start:count:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV15generatePreKeysSayAA07SessionE3KeyVGs6UInt32V5start_Si5counttKFZ">generatePreKeys(start:count:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV15generatePreKeys5start5countSayAA07SessionE3KeyVGs6UInt32V_SitKFZ">generatePreKeys(start:count:)</a> </code> </div> <div class="height-container"> @@ -699,7 +707,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">generatePreKeys</span><span class="p">(</span><span class="nv">start</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt"><a href="../Structs/SessionPreKey.html">SessionPreKey</a></span><span class="p">]</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generatePreKeys</span><span class="p">(</span><span class="nv">start</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="kt">Int</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="p">[</span><span class="kt"><a href="../Structs/SessionPreKey.html">SessionPreKey</a></span><span class="p">]</span></code></pre> </div> </div> @@ -744,9 +752,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A6CryptoV20generateSignedPreKeyAA07SessionefG0VAA07PrivateG0V08identityG0_s6UInt32V2ids6UInt64V9timestamptKFZ"></a> + <a name="/s:14SignalProtocol0A6CryptoV20generateSignedPreKey08identityG02id9timestampAA07SessionefG0VAA07PrivateG0V_s6UInt32Vs6UInt64VtKFZ"></a> <a name="//apple_ref/swift/Method/generateSignedPreKey(identityKey:id:timestamp:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A6CryptoV20generateSignedPreKeyAA07SessionefG0VAA07PrivateG0V08identityG0_s6UInt32V2ids6UInt64V9timestamptKFZ">generateSignedPreKey(identityKey:id:timestamp:)</a> + <a class="token" href="#/s:14SignalProtocol0A6CryptoV20generateSignedPreKey08identityG02id9timestampAA07SessionefG0VAA07PrivateG0V_s6UInt32Vs6UInt64VtKFZ">generateSignedPreKey(identityKey:id:timestamp:)</a> </code> </div> <div class="height-container"> @@ -775,7 +783,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSignedPreKey</span><span class="p">(</span><span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">,</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span> <span class="o">=</span> <span class="kt">UInt64</span><span class="p">(</span><span class="kt">Date</span><span class="p">()</span><span class="o">.</span><span class="n">timeIntervalSince1970</span><span class="p">))</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSignedPreKey</span><span class="p">(</span><span class="nv">identityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PrivateKey.html">PrivateKey</a></span><span class="p">,</span> <span class="nv">id</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> <span class="nv">timestamp</span><span class="p">:</span> <span class="kt">UInt64</span> <span class="o">=</span> <span class="kt">UInt64</span><span class="p">(</span><span class="kt">Date</span><span class="p">()</span><span class="o">.</span><span class="n">timeIntervalSince1970</span><span class="p">))</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/SessionSignedPreKey.html">SessionSignedPreKey</a></span></code></pre> </div> </div> @@ -850,7 +858,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderKeyId</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderKeyId</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -886,7 +894,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -924,7 +932,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderSigningKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="kd">func</span> <span class="nf">generateSenderSigningKey</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -955,7 +963,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="nf">init</span><span class="p">()</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="nf">init</span><span class="p">()</span></code></pre> </div> </div> @@ -967,8 +975,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalMessage.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalMessage.html index 732883f..14d7ae6 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalMessage.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SignalMessage.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SignalMessage Struct Reference</title> + <title>SignalMessage Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SignalMessage" class="dashAnchor"></a> - <a title="SignalMessage Struct Reference"></a> + <a title="SignalMessage Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SignalMessage Struct Reference + SignalMessage Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SignalMessage</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">struct</span> <span class="kt">SignalMessage</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SignalMessage</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV9macLengthSivZ"></a> + <a name="/s:14SignalProtocol0A7MessageV9macLengthSivpZ"></a> <a name="//apple_ref/swift/Variable/macLength" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV9macLengthSivZ">macLength</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV9macLengthSivpZ">macLength</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SignalMessage</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">macLength</span> <span class="o">=</span> <span class="mi">8</span></code></pre> + <pre class="highlight swift"><code><span class="kd">static</span> <span class="k">let</span> <span class="nv">macLength</span><span class="p">:</span> <span class="kt">Int</span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vv"></a> + <a name="/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vvp"></a> <a name="//apple_ref/swift/Property/senderRatchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vv">senderRatchetKey</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vvp">senderRatchetKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">senderRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">senderRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV7counters6UInt32Vv"></a> + <a name="/s:14SignalProtocol0A7MessageV7counters6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/counter" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV7counters6UInt32Vv">counter</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV7counters6UInt32Vvp">counter</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vv"></a> + <a name="/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vvp"></a> <a name="//apple_ref/swift/Property/previousCounter" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vv">previousCounter</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vvp">previousCounter</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/cipherText" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVv">cipherText</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVvp">cipherText</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">let</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">let</span> <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVv"></a> + <a name="/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVvp"></a> <a name="//apple_ref/swift/Property/mac" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVv">mac</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVvp">mac</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageVAC10Foundation4DataV6macKey_AA06PublicG0V013senderRatchetG0s6UInt32V7counterAL15previousCounterAF10cipherTextAI0i8IdentityG0AI08receiverqG0tKcfc"></a> + <a name="/s:14SignalProtocol0A7MessageV6macKey013senderRatchetE07counter15previousCounter10cipherText0f8IdentityE008receivermE0AC10Foundation4DataV_AA06PublicE0Vs6UInt32VAqm2OtKcfc"></a> <a name="//apple_ref/swift/Method/init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageVAC10Foundation4DataV6macKey_AA06PublicG0V013senderRatchetG0s6UInt32V7counterAL15previousCounterAF10cipherTextAI0i8IdentityG0AI08receiverqG0tKcfc">init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV6macKey013senderRatchetE07counter15previousCounter10cipherText0f8IdentityE008receivermE0AC10Foundation4DataV_AA06PublicE0Vs6UInt32VAqm2OtKcfc">init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)</a> </code> </div> <div class="height-container"> @@ -426,13 +423,13 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">senderRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> - <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">senderRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">counter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">previousCounter</span><span class="p">:</span> <span class="kt">UInt32</span><span class="p">,</span> + <span class="nv">cipherText</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -533,9 +530,9 @@ <h4>Parameters</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL10Foundation4DataVAA9PublicKeyV014senderIdentityQ0_AJ08receiversQ0AH03macQ0AH7messagetKF"></a> + <a name="/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL17senderIdentityKey08receiveroP003macP07message10Foundation4DataVAA06PublicP0V_An2LtKF"></a> <a name="//apple_ref/swift/Method/getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL10Foundation4DataVAA9PublicKeyV014senderIdentityQ0_AJ08receiversQ0AH03macQ0AH7messagetKF">getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL17senderIdentityKey08receiveroP003macP07message10Foundation4DataVAA06PublicP0V_An2LtKF">getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)</a> </code> </div> <div class="height-container"> @@ -543,7 +540,7 @@ <h4>Parameters</h4> <section class="section"> <div class="pointer"></div> <div class="abstract"> - <p>Calculate the MAC of the message. The length of the MAC is specified by <code><a href="../Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivZ">SignalMessage.macLength</a></code></p> + <p>Calculate the MAC of the message. The length of the MAC is specified by <code><a href="../Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivpZ">SignalMessage.macLength</a></code></p> <div class="aside aside-throws"> <p class="aside-title">Throws</p> <code><a href="../Classes/SignalError.html">SignalError</a></code> of type <code>hmacError</code>, if the message HMAC could not be calculated @@ -555,10 +552,10 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getMac</span><span class="p">(</span><span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> - <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">private</span> <span class="kd">func</span> <span class="nf">getMac</span><span class="p">(</span><span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> + <span class="nv">message</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -627,9 +624,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV9verifyMacSbAA9PublicKeyV014senderIdentityG0_AF08receiveriG010Foundation4DataV03macG0tKF"></a> + <a name="/s:14SignalProtocol0A7MessageV9verifyMac17senderIdentityKey08receivergH003macH0SbAA06PublicH0V_AI10Foundation4DataVtKF"></a> <a name="//apple_ref/swift/Method/verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV9verifyMacSbAA9PublicKeyV014senderIdentityG0_AF08receiveriG010Foundation4DataV03macG0tKF">verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV9verifyMac17senderIdentityKey08receivergH003macH0SbAA06PublicH0V_AI10Foundation4DataVtKF">verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)</a> </code> </div> <div class="height-container"> @@ -650,9 +647,9 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">verifyMac</span><span class="p">(</span><span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> - <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">verifyMac</span><span class="p">(</span><span class="nv">senderIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">receiverIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span><span class="p">,</span> + <span class="nv">macKey</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -731,7 +728,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">baseMessage</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt"><a href="../Structs/CipherTextMessage.html">CipherTextMessage</a></span></code></pre> </div> </div> @@ -745,13 +742,20 @@ <h4>Return Value</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vv"></a> + <a name="/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vvp"></a> <a name="//apple_ref/swift/Property/protoObject" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vv">protoObject</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vvp">protoObject</a> </code> </div> <div class="height-container"> @@ -766,7 +770,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignalMessage</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignalMessage</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -776,9 +780,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageVAcA0a1_aC0V4from_tKcfc"></a> + <a name="/s:14SignalProtocol0A7MessageV4fromAcA0a1_aC0V_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageVAcA0a1_aC0V4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV4fromAcA0a1_aC0V_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -798,7 +802,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignalMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">protoObject</span><span class="p">:</span> <span class="kt">Signal_SignalMessage</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -827,6 +831,13 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers2"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers2"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> @@ -853,7 +864,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">protoData</span><span class="p">()</span> <span class="k">throws</span> <span class="o">-></span> <span class="kt">Data</span></code></pre> </div> </div> @@ -867,9 +878,9 @@ <h4>Return Value</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageVAC10Foundation4DataV4from_tKcfc"></a> + <a name="/s:14SignalProtocol0A7MessageV4fromAC10Foundation4DataV_tKcfc"></a> <a name="//apple_ref/swift/Method/init(from:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageVAC10Foundation4DataV4from_tKcfc">init(from:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV4fromAC10Foundation4DataV_tKcfc">init(from:)</a> </code> </div> <div class="height-container"> @@ -897,7 +908,7 @@ <h4>Return Value</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="n">from</span> <span class="nv">data</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span> <span class="k">throws</span></code></pre> </div> </div> @@ -926,13 +937,20 @@ <h4>Parameters</h4> </ul> </div> <div class="task-group"> + <div class="task-name-container"> + <a name="/Protocol%20Buffers3"></a> + <a name="//apple_ref/swift/Section/Protocol Buffers" class="dashAnchor"></a> + <a href="#/Protocol%20Buffers3"> + <h3 class="section-name">Protocol Buffers</h3> + </a> + </div> <ul> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol0A7MessageV2eeoiSbAC_ACtFZ"></a> + <a name="/s:14SignalProtocol0A7MessageV2eeoiySbAC_ACtFZ"></a> <a name="//apple_ref/swift/Method/==(_:_:)" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol0A7MessageV2eeoiSbAC_ACtFZ">==(_:_:)</a> + <a class="token" href="#/s:14SignalProtocol0A7MessageV2eeoiySbAC_ACtFZ">==(_:_:)</a> </code> </div> <div class="height-container"> @@ -952,7 +970,7 @@ <h4>Parameters</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span><span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SignalMessage</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SignalMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">func</span> <span class="o">==</span> <span class="p">(</span><span class="nv">lhs</span><span class="p">:</span> <span class="kt">SignalMessage</span><span class="p">,</span> <span class="nv">rhs</span><span class="p">:</span> <span class="kt">SignalMessage</span><span class="p">)</span> <span class="o">-></span> <span class="kt">Bool</span></code></pre> </div> </div> @@ -999,8 +1017,8 @@ <h4>Return Value</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SymmetricParameters.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SymmetricParameters.html index f96b8cc..2a87e0d 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SymmetricParameters.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Structs/SymmetricParameters.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>SymmetricParameters Struct Reference</title> + <title>SymmetricParameters Structure Reference</title> <link rel="stylesheet" type="text/css" href="../css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="../css/highlight.css" /> <meta charset='utf-8'> @@ -11,7 +11,7 @@ </head> <body> <a name="//apple_ref/swift/Struct/SymmetricParameters" class="dashAnchor"></a> - <a title="SymmetricParameters Struct Reference"></a> + <a title="SymmetricParameters Structure Reference"></a> <header> <div class="content-wrapper"> <p><a href="../index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -22,7 +22,7 @@ <p id="breadcrumbs"> <a href="../index.html">SignalProtocol Reference</a> <img id="carat" src="../img/carat.png" /> - SymmetricParameters Struct Reference + SymmetricParameters Structure Reference </p> </div> <div class="content-wrapper"> @@ -52,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Enums.html">Enums</a> + <a href="../Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Enums/CipherTextType.html">CipherTextType</a> @@ -69,16 +69,19 @@ <a href="../Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="../Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="../Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="../Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="../Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="../Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -103,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="../Structs.html">Structs</a> + <a href="../Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -192,9 +195,6 @@ <li class="nav-group-task"> <a href="../Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="../Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -204,16 +204,13 @@ <li class="nav-group-task"> <a href="../Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="../Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="../Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="../Typealiases.html">Typealiases</a> + <a href="../Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -228,7 +225,7 @@ <h1>SymmetricParameters</h1> <div class="declaration"> <div class="language"> - <pre class="highlight"><code><span class="kd">struct</span> <span class="kt">SymmetricParameters</span></code></pre> + <pre class="highlight swift"><code><span class="kd">struct</span> <span class="kt">SymmetricParameters</span></code></pre> </div> </div> @@ -241,9 +238,9 @@ <h1>SymmetricParameters</h1> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVvp"></a> <a name="//apple_ref/swift/Property/ourIdentityKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVv">ourIdentityKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVvp">ourIdentityKey</a> </code> </div> <div class="height-container"> @@ -258,7 +255,7 @@ <h1>SymmetricParameters</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ourIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a></span></code></pre> </div> </div> @@ -268,9 +265,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVvp"></a> <a name="//apple_ref/swift/Property/ourBaseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVv">ourBaseKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVvp">ourBaseKey</a> </code> </div> <div class="height-container"> @@ -285,7 +282,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ourBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ourBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -295,9 +292,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVvp"></a> <a name="//apple_ref/swift/Property/ourRatchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVv">ourRatchetKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVvp">ourRatchetKey</a> </code> </div> <div class="height-container"> @@ -312,7 +309,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">ourRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -322,9 +319,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vvp"></a> <a name="//apple_ref/swift/Property/theirBaseKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vv">theirBaseKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vvp">theirBaseKey</a> </code> </div> <div class="height-container"> @@ -339,7 +336,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">theirBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">theirBaseKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -349,9 +346,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vvp"></a> <a name="//apple_ref/swift/Property/theirRatchetKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vv">theirRatchetKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vvp">theirRatchetKey</a> </code> </div> <div class="height-container"> @@ -366,7 +363,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">theirRatchetKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -376,9 +373,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vvp"></a> <a name="//apple_ref/swift/Property/theirIdentityKey" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vv">theirIdentityKey</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vvp">theirIdentityKey</a> </code> </div> <div class="height-container"> @@ -393,7 +390,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">theirIdentityKey</span><span class="p">:</span> <span class="kt"><a href="../Structs/PublicKey.html">PublicKey</a></span></code></pre> </div> </div> @@ -403,9 +400,9 @@ <h4>Declaration</h4> <li class="item"> <div> <code> - <a name="/s:14SignalProtocol19SymmetricParametersV7isAliceSbv"></a> + <a name="/s:14SignalProtocol19SymmetricParametersV7isAliceSbvp"></a> <a name="//apple_ref/swift/Property/isAlice" class="dashAnchor"></a> - <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV7isAliceSbv">isAlice</a> + <a class="token" href="#/s:14SignalProtocol19SymmetricParametersV7isAliceSbvp">isAlice</a> </code> </div> <div class="height-container"> @@ -420,7 +417,7 @@ <h4>Declaration</h4> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="k">var</span> <span class="nv">isAlice</span><span class="p">:</span> <span class="kt">Bool</span></code></pre> + <pre class="highlight swift"><code><span class="k">var</span> <span class="nv">isAlice</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre> </div> </div> @@ -432,8 +429,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Typealiases.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Typealiases.html index 536cb29..7a6b1fe 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Typealiases.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/Typealiases.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html lang="en"> <head> - <title>Typealiases Reference</title> + <title>Type Aliases Reference</title> <link rel="stylesheet" type="text/css" href="css/jazzy.css" /> <link rel="stylesheet" type="text/css" href="css/highlight.css" /> <meta charset='utf-8'> @@ -10,7 +10,8 @@ </head> <body> - <a title="Typealiases Reference"></a> + <a name="//apple_ref/swift/Section/Type Aliases" class="dashAnchor"></a> + <a title="Type Aliases Reference"></a> <header> <div class="content-wrapper"> <p><a href="index.html">SignalProtocol Docs</a> (100% documented)</p> @@ -21,7 +22,7 @@ <p id="breadcrumbs"> <a href="index.html">SignalProtocol Reference</a> <img id="carat" src="img/carat.png" /> - Typealiases Reference + Type Aliases Reference </p> </div> <div class="content-wrapper"> @@ -51,7 +52,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +69,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +106,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +195,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +204,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -224,8 +222,8 @@ <article class="main-content"> <section> <section class="section"> - <h1>Typealiases</h1> - <p>The following typealiases are available globally.</p> + <h1>Type Aliases</h1> + <p>The following type aliases are available globally.</p> </section> <section class="section task-group-section"> @@ -251,7 +249,7 @@ <h1>Typealiases</h1> <h4>Declaration</h4> <div class="language"> <p class="aside-title">Swift</p> - <pre class="highlight"><code><span class="kd">public</span> <span class="kd">typealias</span> <span class="kt">RatchetIdentityKeyPair</span> <span class="o">=</span> <span class="kt"><a href="Structs/KeyPair.html">KeyPair</a></span></code></pre> + <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">typealias</span> <span class="kt">RatchetIdentityKeyPair</span> <span class="o">=</span> <span class="kt"><a href="Structs/KeyPair.html">KeyPair</a></span></code></pre> </div> </div> @@ -263,8 +261,8 @@ <h4>Declaration</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/badge.svg b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/badge.svg index 6a1bdc7..bfac052 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/badge.svg +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/badge.svg @@ -1 +1,28 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="128" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h93v20H0z"/><path fill="#4c1" d="M93 0h35v20H93z"/><path fill="url(#b)" d="M0 0h128v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830">documentation</text><text x="475" y="140" transform="scale(.1)" textLength="830">documentation</text><text x="1095" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">99%</text><text x="1095" y="140" transform="scale(.1)" textLength="250">99%</text></g> </svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="20"> + <linearGradient id="b" x2="0" y2="100%"> + <stop offset="0" stop-color="#bbb" stop-opacity=".1"/> + <stop offset="1" stop-opacity=".1"/> + </linearGradient> + <clipPath id="a"> + <rect width="128" height="20" rx="3" fill="#fff"/> + </clipPath> + <g clip-path="url(#a)"> + <path fill="#555" d="M0 0h93v20H0z"/> + <path fill="#4c1" d="M93 0h35v20H93z"/> + <path fill="url(#b)" d="M0 0h128v20H0z"/> + </g> + <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> + <text x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830"> + documentation + </text> + <text x="475" y="140" transform="scale(.1)" textLength="830"> + documentation + </text> + <text x="1095" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250"> + 99% + </text> + <text x="1095" y="140" transform="scale(.1)" textLength="250"> + 99% + </text> + </g> +</svg> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/css/jazzy.css b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/css/jazzy.css index d628282..a982892 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/css/jazzy.css +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/css/jazzy.css @@ -150,7 +150,7 @@ header { margin-left: 246px; position: absolute; overflow: hidden; - padding-bottom: 60px; + padding-bottom: 20px; top: 70px; width: 734px; } .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { @@ -216,10 +216,12 @@ header { .item code { background-color: transparent; padding: 0; } - .item .token { + .item .token, .item .direct-link { padding-left: 3px; margin-left: 15px; font-size: 11.9px; } + .item .discouraged { + text-decoration: line-through; } .item .declaration-note { font-size: .85em; color: gray; @@ -283,9 +285,9 @@ header { .language .aside-title { color: #4b8afb; } -.aside-warning { +.aside-warning, .aside-deprecated, .aside-unavailable { border-left: 5px solid #ff6666; } - .aside-warning .aside-title { + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { color: #ff0000; } .graybox { @@ -310,8 +312,9 @@ header { font-size: 0.9em; } #footer { - position: absolute; - bottom: 10px; + position: relative; + top: 10px; + bottom: 0px; margin-left: 25px; } #footer p { margin: 0; diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/index.html b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/index.html index 753f598..e42b661 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/index.html +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/index.html @@ -51,7 +51,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +68,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +105,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +194,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +203,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -239,7 +236,7 @@ <h2 id='purpose' class='heading'>Purpose</h2> <h2 id='installation' class='heading'>Installation</h2> <p>You can install <code>LibSignalProtocolSwift</code> through <a href="https://cocoapods.org">Cocoapods</a>, by adding the following to your <code>Podfile</code>:</p> -<pre class="highlight ruby"><code><span class="n">pod</span> <span class="s1">'LibSignalProtocolSwift'</span> +<pre class="highlight ruby"><code><span class="n">pod</span> <span class="s1">'LibSignalProtocolSwift'</span><span class="p">,</span> <span class="s1">'~> 1.3'</span> </code></pre> <p>After installation the Framework can be accessed by importing it:</p> @@ -249,16 +246,19 @@ <h2 id='prerequisites' class='heading'>Prerequisites</h2> <h3 id='local-storage' class='heading'>Local storage</h3> <p>The Signal Protocol needs local storage for message keys, identities and other state information. -You can provide this functionality by implementing the protocol <code>KeyStore</code>, which requires -five delegates for the individual data stores:</p> +You can provide this functionality by implementing the protocol <code><a href="Protocols/KeyStore.html">KeyStore</a></code>, which requires +four delegates for the individual data stores:</p> <ul> -<li><code>IdentityKeyStore</code> for storing and retrieving identity keys</li> -<li><code>PreKeyStore</code> for storing and retrieving pre keys</li> -<li><code>SenderKeyStore</code> for storing and retrieving sender keys</li> -<li><code>SessionStore</code> for storing and retrieving the sessions</li> -<li><code>SignedPreKeyStore</code> for storing and retrieving signed pre keys</li> +<li><code><a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a></code> for storing and retrieving identity keys</li> +<li><code><a href="Protocols/PreKeyStore.html">PreKeyStore</a></code> for storing and retrieving pre keys</li> +<li><code><a href="Protocols/SessionStore.html">SessionStore</a></code> for storing and retrieving the sessions</li> +<li><code><a href="Protocols/SignedPreKeyStore.html">SignedPreKeyStore</a></code> for storing and retrieving signed pre keys</li> </ul> +<h4 id='optional' class='heading'>Optional</h4> + +<p>There is a feature for group updates, where only one administrator can send, and the others can only receive. If you want this functionality, then implement the <code><a href="Protocols/GroupKeyStore.html">GroupKeyStore</a></code> protocol, with the additional delegate <code><a href="Protocols/SenderKeyStore.html">SenderKeyStore</a></code> for storing and retrieving sender keys.</p> +<h3 id='sample-implementation' class='heading'>Sample implementation</h3> <p>You can have a look at the <a href="https://github.com/christophhagen/LibSignalProtocolSwift/tree/master/Tests/Test%20Implementation">test implementation</a> for inspiration.</p> <h3 id='server-for-message-delivery' class='heading'>Server for message delivery</h3> @@ -266,8 +266,8 @@ <h3 id='server-for-message-delivery' class='heading'>Server for message delivery <p>The server that stores the messages for retrieval needs to store the following data for each <code>SignalAddress</code>:</p> <ul> -<li><code>Public Identity Key Data</code>: The public part of the identity key of the device</li> -<li><code>Signed Pre Key Data</code>: The current signed pre key</li> +<li><code>Public Identity Key</code>: The public part of the identity key of the device</li> +<li><code>Signed Pre Key</code>: The current signed pre key</li> <li><code>Pre Keys</code>: A number of unsigned pre keys</li> <li><code>Messages</code>: The messages to deliver to that address, including the sender</li> </ul> @@ -285,16 +285,21 @@ <h2 id='usage' class='heading'>Usage</h2> <h3 id='creating-identity-and-keys' class='heading'>Creating identity and keys</h3> <p>Before any secure communication can happen, at least one user needs to upload all necessary ingredients for a <code>PreKeyBundle</code> to the server.</p> -<pre class="highlight swift"><code><span class="c1">// Create the identity key and store it (only done once)</span> -<span class="k">let</span> <span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">createIdentityKey</span><span class="p">()</span> +<pre class="highlight swift"><code><span class="c1">// Create the identity key ata install time</span> +<span class="k">let</span> <span class="nv">identity</span> <span class="o">=</span> <span class="k">try</span> <span class="kt">SignalCrypto</span><span class="o">.</span><span class="nf">generateIdentityKeyPair</span><span class="p">()</span> + +<span class="c1">// Store the data in the key store</span> + +<span class="c1">// Get the public key from the store</span> +<span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">getPublicIdentityKey</span><span class="p">()</span> <span class="c1">// Create pre keys and save them in the store</span> -<span class="k">let</span> <span class="nv">preKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt">Data</span><span class="p">]</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">createPreKeys</span><span class="p">(</span><span class="nv">start</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="mi">10</span><span class="p">)</span> +<span class="k">let</span> <span class="nv">preKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt">Data</span><span class="p">]</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">createPreKeys</span><span class="p">(</span><span class="nv">count</span><span class="p">:</span> <span class="mi">10</span><span class="p">)</span> <span class="c1">// Create a signed pre key and save it in the store</span> -<span class="k">let</span> <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">createSignedPrekey</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="mi">1</span><span class="p">)</span> +<span class="k">let</span> <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">updateSignedPrekey</span><span class="p">()</span> -<span class="c1">// Upload identity, preKeys, and signedPreKey to the server</span> +<span class="c1">// Upload publicKey, preKeys, and signedPreKey to the server</span> </code></pre> <h3 id='creating-a-session-from-a-prekeybundle' class='heading'>Creating a session from a PreKeyBundle</h3> @@ -325,7 +330,7 @@ <h3 id='creating-a-session-from-a-received-prekeysignalmessage' class='heading'> <pre class="highlight swift"><code><span class="c1">// Get the message from the server</span> <span class="c1">// Create the session</span> -<span class="k">let</span> <span class="nv">session</span> <span class="o">=</span> <span class="kt">Session</span><span class="p">(</span><span class="nv">for</span><span class="p">:</span> <span class="n">aliceAddress</span><span class="p">)</span> +<span class="k">let</span> <span class="nv">session</span> <span class="o">=</span> <span class="kt">SessionCipher</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="n">bobStore</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="n">aliceAddress</span><span class="p">)</span> <span class="c1">// Process the message</span> <span class="k">let</span> <span class="nv">decryptedMessage</span> <span class="o">=</span> <span class="k">try</span> <span class="n">session</span><span class="o">.</span><span class="nf">decrypt</span><span class="p">(</span><span class="n">preKeyMessage</span><span class="p">)</span> @@ -337,12 +342,18 @@ <h4 id='sending' class='heading'>Sending</h4> <pre class="highlight swift"><code><span class="c1">// Compose a message</span> <span class="k">let</span> <span class="nv">message</span> <span class="o">=</span> <span class="s">"Hello there"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span> +<span class="c1">// Send message to Bob</span> +<span class="k">let</span> <span class="nv">session</span> <span class="o">=</span> <span class="kt">SessionCipher</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="n">aliceStore</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="n">bobAddress</span><span class="p">)</span> + <span class="c1">// Encrypt</span> <span class="k">let</span> <span class="nv">encryptedMessage</span> <span class="o">=</span> <span class="k">try</span> <span class="n">session</span><span class="o">.</span><span class="nf">encrypt</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> </code></pre> <h4 id='receiving' class='heading'>Receiving</h4> <pre class="highlight swift"><code><span class="c1">// Get message from the server</span> +<span class="c1">// Receive message from Alice</span> +<span class="k">let</span> <span class="nv">session</span> <span class="o">=</span> <span class="kt">SessionCipher</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="n">bobStore</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="n">aliceAddress</span><span class="p">)</span> + <span class="c1">// Decrypt</span> <span class="k">let</span> <span class="nv">decryptedMessage</span> <span class="o">=</span> <span class="k">try</span> <span class="n">session</span><span class="o">.</span><span class="nf">decrypt</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> </code></pre> @@ -358,7 +369,7 @@ <h4 id='verifying-identity-keys' class='heading'>Verifying identity Keys</h4> <span class="k">let</span> <span class="nv">display</span> <span class="o">=</span> <span class="n">fingerprint</span><span class="o">.</span><span class="n">displayText</span> <span class="c1">// ... or transmit the scannable data to the other client...</span> -<span class="k">let</span> <span class="nv">scanData</span> <span class="o">=</span> <span class="k">try</span> <span class="n">fingerprint</span><span class="o">.</span><span class="n">scannable</span><span class="o">.</span><span class="nf">data</span><span class="p">()</span> +<span class="k">let</span> <span class="nv">scanData</span> <span class="o">=</span> <span class="k">try</span> <span class="n">fingerprint</span><span class="o">.</span><span class="n">scannable</span><span class="o">.</span><span class="nf">protoData</span><span class="p">()</span> <span class="c1">// ... or compare to a received fingerprint</span> <span class="n">fingerprint</span><span class="o">.</span><span class="nf">matches</span><span class="p">(</span><span class="n">scannedFingerprint</span><span class="p">)</span> @@ -384,9 +395,11 @@ <h4 id='client-identifiers' class='heading'>Client identifiers</h4> </code></pre> <h4 id='providing-a-custom-crypto-implementation' class='heading'>Providing a custom crypto implementation</h4> -<p>It is possible for any custom implementation of the <code>SignalCryptoProvider</code> protocol +<p>It is possible for any custom implementation of the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol to serve as the cryptographic backbone of the protocol. This can be done by -setting the static <code>provider</code> variable of the <code>SignalCrypto</code> class.</p> +setting the static <code>provider</code> variable of the <code><a href="Structs/SignalCrypto.html">SignalCrypto</a></code> class:</p> +<pre class="highlight swift"><code><span class="kt">SignalCrypto</span><span class="o">.</span><span class="n">provider</span> <span class="o">=</span> <span class="kt">MyCustomCryptoProvider</span><span class="p">()</span> +</code></pre> <p>The elliptic curve functions are handled by the same C code that is deployed in <a href="https://github.com/signalapp/libsignal-protocol-c">libsignal-protocol-c</a> @@ -410,8 +423,8 @@ <h4 id='disclaimer' class='heading'>Disclaimer</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/js/jazzy.js b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/js/jazzy.js index 3965b5f..4ff9455 100755 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/js/jazzy.js +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/js/jazzy.js @@ -38,9 +38,3 @@ $(".token").click(function(event) { } event.preventDefault(); }); - -// Dumb down quotes within code blocks that delimit strings instead of quotations -// https://github.com/realm/jazzy/issues/714 -$("code q").replaceWith(function () { - return ["\"", $(this).contents(), "\""]; -}); diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/js/jquery.min.js b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/js/jquery.min.js index ab28a24..4d9b3a2 100755 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/js/jquery.min.js +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/js/jquery.min.js @@ -1,4 +1,2 @@ -/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; -if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px") -},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m}); +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w}); diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/search.json b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/search.json index 4a29688..7d9e1c2 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/search.json +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/search.json @@ -1 +1 @@ -{"Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira":{"name":"RatchetIdentityKeyPair","abstract":"<p>An elliptic key pair specifically used for identification in a ratchet</p>"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV5storexv":{"name":"store","abstract":"<p>The store to save and retrieve keys from</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzv":{"name":"remoteAddress","abstract":"<p>The address of the other party</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderVACyxG7AddressQz06remoteE0_x5storetcfc":{"name":"init(remoteAddress:store:)","abstract":"<p>Constructs a session builder.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7processs6UInt32VSgAA06PreKeyA7MessageV03prehaI0_AA0C6RecordC07sessionK0tKF":{"name":"process(preKeySignalMessage:sessionRecord:)","abstract":"<p>Build a new session from a received PreKeySignalMessage.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LLs6UInt32VSgAA06PreKeyA7MessageV03prepaQ2V3_AA0C6RecordC6recordtKF":{"name":"process(preKeySignalMessageV3:record:)","abstract":"<p>Build a new session from a received PreKeySignalMessage.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7processyAA0C12PreKeyBundleV03pregH0_tKF":{"name":"process(preKeyBundle:)","abstract":"<p>Build a new session from a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SessionPreKeyBundle.html\">SessionPreKeyBundle</a></code> retrieved from a server.</p>","parent_name":"SessionBuilder"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvZ":{"name":"keyInfo","abstract":"<p>Bytes used as input for the KDF</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivZ":{"name":"secretSize","abstract":"<p>The number of bytes for the root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVv":{"name":"key","abstract":"<p>The current root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV3key_tcfc":{"name":"init(key:)","abstract":"<p>Create a new root key from the components</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV11createChainAC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V05theircE0_AA07PrivateE0V03ourcE0tKF":{"name":"createChain(theirRatchetKey:ourRatchetKey:)","abstract":"<p>Create a new root key and chain key.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV9protoData10Foundation0G0VyF":{"name":"protoData()","abstract":"<p>Return the serialized root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV4from_tcfc":{"name":"init(from:)","abstract":"<p>Deserialize a root key.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV1loiSbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two root keys.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two root keys for equality.</p>","parent_name":"RatchetRootKey"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV7groupIdSSv":{"name":"groupId","abstract":"<p>The group identifier (such as the name)</p>","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV6senderAA0A7AddressVv":{"name":"sender","abstract":"<p>The contact</p>","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameVACSS7groupId_AA0A7AddressV6sendertcfc":{"name":"init(groupId:sender:)","abstract":"<p>Create a new <code>SignalSenderKeyName</code></p>","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two <code>SignalSenderKeyName</code>. Two <code>SignalSenderKeyName</code> objects are","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV9hashValueSiv":{"name":"hashValue","abstract":"<p>A hash value of the address, constructed by summing the","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV11descriptionSSv":{"name":"description","abstract":"<p>A String representation of the sender key name.</p>","parent_name":"SignalSenderKeyName"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivZ":{"name":"cipherKeyLength","abstract":"<p>The length of cipher keys in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivZ":{"name":"macKeyLength","abstract":"<p>The length of the mac key in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivZ":{"name":"ivLength","abstract":"<p>The length of the initialization vector in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivZ":{"name":"derivedMessageSecretsSize","abstract":"<p>The length of cipher key, mac key, and iv</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVv":{"name":"cipherKey","abstract":"<p>The cipher key to encrypt/decrypt a message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVv":{"name":"macKey","abstract":"<p>The mac key of a message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVv":{"name":"iv","abstract":"<p>The initialization vector</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vv":{"name":"counter","abstract":"<p>The counter of the message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV6cipher_AF3macAF2ivs6UInt32V7countertKcfc":{"name":"init(cipher:mac:iv:counter:)","abstract":"<p>Create the message keys from the components</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV8material_tKcfc":{"name":"init(material:)","abstract":"<p>Create the message keys from generated bytes.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVv":{"name":"protoObject","abstract":"<p>The message keys converted to a ProtoBuf object</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysVAcA0A8_SessionV5ChainV0D3KeyV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create message keys from a ProtoBuf object.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two message keys for equality.</p>","parent_name":"RatchetMessageKeys"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVv":{"name":"key","abstract":"<p>The key material of length <code>KeyPair.keyLength</code></p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV5point_tKcfc":{"name":"init(point:)","abstract":"<p>Create a private key from a curve point.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV15unverifiedPoint_tKcfc":{"name":"init(unverifiedPoint:)","abstract":"<p>Create a private key. Only checks the length, nothing else.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVACyKcfc":{"name":"init()","abstract":"<p>Create a new random private key.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4sign10Foundation4DataVAG7message_tKF":{"name":"sign(message:)","abstract":"<p>Calculate the signature for the given message.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV7signVRF10Foundation4DataVAG7message_tKF":{"name":"signVRF(message:)","abstract":"<p>Calculates a unique Curve25519 signature for the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV18calculateAgreement10Foundation4DataVAA06PublicD0V06publicD0_tKF":{"name":"calculateAgreement(publicKey:)","abstract":"<p>Calculate the shared agreement between the private key and the given public key.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVv":{"name":"data","abstract":"<p>The serialized data of the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two private keys for equality.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a private key from a byte record.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV9protoData10Foundation0F0VyF":{"name":"protoData()","abstract":"<p>Convert the key to serialized data</p>","parent_name":"PrivateKey"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivZ":{"name":"macLength","abstract":"<p>The length of the MAC for a message in bytes</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vv":{"name":"senderRatchetKey","abstract":"<p>The public key of the sending ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV7counters6UInt32Vv":{"name":"counter","abstract":"<p>The current counter of the ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vv":{"name":"previousCounter","abstract":"<p>The counter of the previous ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVv":{"name":"cipherText","abstract":"<p>The encrypted text</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVv":{"name":"mac","abstract":"<p>The mac of the message</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageVAC10Foundation4DataV6macKey_AA06PublicG0V013senderRatchetG0s6UInt32V7counterAL15previousCounterAF10cipherTextAI0i8IdentityG0AI08receiverqG0tKcfc":{"name":"init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)","abstract":"<p>Create a SignalMessage from its components.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL10Foundation4DataVAA9PublicKeyV014senderIdentityQ0_AJ08receiversQ0AH03macQ0AH7messagetKF":{"name":"getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)","abstract":"<p>Calculate the MAC of the message. The length of the MAC is specified by <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivZ\">SignalMessage.macLength</a></code></p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9verifyMacSbAA9PublicKeyV014senderIdentityG0_AF08receiveriG010Foundation4DataV03macG0tKF":{"name":"verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)","abstract":"<p>Verify the MAC of the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV04baseC0AA010CipherTextC0VyKF":{"name":"baseMessage()","abstract":"<p>Return the serialized version of the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vv":{"name":"protoObject","abstract":"<p>Convert signal message to a ProtoBuf object</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageVAcA0a1_aC0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signal message from a ProtoBuf object.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9protoData10Foundation0E0VyKF":{"name":"protoData()","abstract":"<p>Serialize the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signal message from serialized data.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalMessages for equality.</p>","parent_name":"SignalMessage"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivZ":{"name":"length","abstract":"<p>The length of a fingerprint</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvZ":{"name":"version","abstract":"<p>The version of the fingerprint</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVv":{"name":"localFingerprint","abstract":"<p>The fingerprint data of the local party</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVv":{"name":"remoteFingerprint","abstract":"<p>The fingerprint data of the remote party</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc":{"name":"init(localFingerprint:remoteFingerprint:)","abstract":"<p>Create a new ScannableFingerprint Version 1.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintVAcA0a1_D0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a fingerprint from a ProtoBuf object.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vv":{"name":"protoObject","abstract":"<p>The fingerprint converted to a ProtoBuf object</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV7matchesSbACF":{"name":"matches(_:)","abstract":"<p>Compare if fingerprints match, i.e. the local fingerprint matches the remote fingerprint and vice versa.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two Fingerprints for equality.</p>","parent_name":"ScannableFingerprint"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgv":{"name":"preKeyId","abstract":"<p>The id of the pre key, if one was used</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vv":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vv":{"name":"baseKey","abstract":"<p>The base key used for the outgoing pre key message</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVv":{"name":"protoObject","abstract":"<p>Create a ProtoBuf object for serialization.</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyVAcA0A8_SessionVABV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a pending pre key from a ProtoBuf object.</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two pending pre keys for equality.</p>","parent_name":"PendingPreKey"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vv":{"name":"id","abstract":"<p>The id of the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vv":{"name":"iteration","abstract":"<p>The current chain iteration of the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVv":{"name":"chainKey","abstract":"<p>The chain key used for the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vv":{"name":"signatureKey","abstract":"<p>The signature key used for signing the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV04baseF0AA010CipherTextF0VyKF":{"name":"baseMessage()","abstract":"<p>Create a serialized message from the distribution message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageVACs6UInt32V2id_AE9iteration10Foundation4DataV05chainD0AA06PublicD0V09signatureD0tcfc":{"name":"init(id:iteration:chainKey:signatureKey:)","abstract":"<p>Create a distribution message.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two distribution messages.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vv":{"name":"protoObject","abstract":"<p>Convert the distribution message to a ProtoBuf object</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageVAcA0a1_cdeF0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a distribution message from a ProtoBuf object.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvZ":{"name":"infoMaterial","abstract":"<p>The info used when creating the keys from the seed</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ":{"name":"ivLength","abstract":"<p>The length of the initialization vector</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ":{"name":"cipherKeyLength","abstract":"<p>The length of the key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ":{"name":"secretLength","abstract":"<p>The combined length of iv and key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vv":{"name":"iteration","abstract":"<p>The iteration of the message key in the chain</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVv":{"name":"iv","abstract":"<p>The initialization vector</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVv":{"name":"cipherKey","abstract":"<p>The encryption/decryption key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVv":{"name":"seed","abstract":"<p>The seed used to derive the key and iv</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyVACs6UInt32V9iteration_10Foundation4DataV4seedtKcfc":{"name":"init(iteration:seed:)","abstract":"<p>Create a message key from the components.</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVv":{"name":"protoObject","abstract":"<p>Convert the sender chain key to a ProtoBuf object</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyVAcA0a1_cE5StateVABV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a message key from a ProtoBuf object.</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender message keys for equality.</p>","parent_name":"SenderMessageKey"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgv":{"name":"preKeyId","abstract":"<p>The pre key id of the one time key from the other party</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vv":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key used for the message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vv":{"name":"baseKey","abstract":"<p>The base key used for the message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vv":{"name":"identityKey","abstract":"<p>The identity key of the sender</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vv":{"name":"message","abstract":"<p>The message included in the pre key message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageVACs6UInt32VSg03preD2Id_AE06signedcdH0AA06PublicD0V04baseD0AJ08identityD0AA0aE0V7messagetcfc":{"name":"init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)","abstract":"<p>Create a new pre key message.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV04baseE0AA010CipherTextE0VyKF":{"name":"baseMessage()","abstract":"<p>Get the serialized message.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV13asProtoObjectAA0a1_cdaE0VyKF":{"name":"asProtoObject()","abstract":"<p>Convert the message to a ProtoBuf object for serialization.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageVAcA0a1_cdaE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a <code>PreKeySignalMessage</code> from a ProtoBuf object.</p>","parent_name":"PreKeySignalMessage"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vv":{"name":"id","abstract":"<p>The id of the pre key</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vv":{"name":"key","abstract":"<p>The key pair of the pre key</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicVACs6UInt32V2id_AA0fE0V3keytcfc":{"name":"init(id:key:)","abstract":"<p>Create a public pre key from the components</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVv":{"name":"protoObject","abstract":"<p>Convert the public pre key to a ProtoBuf object</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicVAcA0a1_dE0V0F4PartV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a public pre key from a ProtoBuf object.</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvZ":{"name":"mediumMaxValue","abstract":"<p>The upper bound (inclusive) of the pre key id</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVv":{"name":"publicKey","abstract":"<p>The public data of the pre key (id and public key)</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vv":{"name":"privateKey","abstract":"<p>The private key of the pre key</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyVACs6UInt32V2id_AA0E4PairV03keyH0tcfc":{"name":"init(id:keyPair:)","abstract":"<p>Create a pre key from the components</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyVACs6UInt32V5index_tKcfc":{"name":"init(index:)","abstract":"<p>Create a new pre key with the index.</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vv":{"name":"keyPair","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vv":{"name":"protoObject","abstract":"<p>Convert the pre key to a ProtoBuf object</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyVAcA0a1_dE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a pre key from a ProtoBuf object.</p>","parent_name":"SessionPreKey"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV6random10Foundation4DataVSi5bytes_tKF":{"name":"random(bytes:)","abstract":"<p>Create a number of random bytes</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtF":{"name":"hmacSHA256(for:with:)","abstract":"<p>Create a HMAC authentication for a given message</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV6sha51210Foundation4DataVAG3for_tKF":{"name":"sha512(for:)","abstract":"<p>Create a SHA512 digest for a given message</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with AES</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with AES</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3cbc_AH3keyAH2ivSb7encrypttKF":{"name":"process(cbc:key:iv:encrypt:)","abstract":"<p>Process (encrypt/decrypt) a message with AES in CBC mode and pkcs7 padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF":{"name":"encrypt(ctr:key:iv:)","abstract":"<p>Encrypt a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF":{"name":"decrypt(ctr:key:iv:)","abstract":"<p>Decrypt a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivSb7encrypttKF":{"name":"process(ctr:key:iv:encrypt:)","abstract":"<p>Process (encrypt/decrypt) a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVSv4from_Si5counttF":{"name":"toArray(from:count:)","abstract":"<p>Create an array from an unsafe pointer.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoVACycfc":{"name":"init()","abstract":"<p>Create an instance.</p>","parent_name":"SignalCommonCrypto"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVv":{"name":"signature","abstract":"<p>The consistency signature</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vv":{"name":"generation","abstract":"<p>The generation of the consistency message</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageVAcA0cD12CommitmentV0V10commitment_AA7KeyPairV011identitykeyJ0tKcfc":{"name":"init(commitment:identitykeyPair:)","abstract":"<p>Create a new consistency message.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vv":{"name":"object","abstract":"<p>The message converted to a protocol buffer object.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageVAcA0a1_cd4CodeE0V4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityL0tKcfc":{"name":"init(from:commitment:identityKey:)","abstract":"<p>Create a consistency message from a protocol buffer object.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV4data10Foundation4DataVyKF":{"name":"data()","abstract":"<p>The message serialized through a protocol buffer.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageVAC10Foundation4DataV4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityM0tKcfc":{"name":"init(from:commitment:identityKey:)","abstract":"<p>Create a consistency message from a serialized protocol buffer record.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVv":{"name":"ratchetKey","abstract":"<p>The key pair of the ratchet</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vv":{"name":"chainKey","abstract":"<p>The current chain key of the ratchet</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainVAcA7KeyPairV07ratchetE0_AA07RatchetdE0V05chainE0tcfc":{"name":"init(ratchetKey:chainKey:)","abstract":"<p>Create a sender chain from the components.</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vv":{"name":"protoObject","abstract":"<p>The sender chain converted to a protobuf object</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainVAcA0A8_SessionV0D0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender chain from a protobuf object.</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender chains for equality.</p>","parent_name":"SenderChain"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxv":{"name":"store","abstract":"<p>The store where the keys are stored</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzv":{"name":"address","abstract":"<p>The id of the remote client</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherVACyxG0C7AddressQz7address_x5storetcfc":{"name":"init(address:store:)","abstract":"<p>Create a GroupCipher.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7processyAA0D11TextMessageV7message_tKF":{"name":"process(message:)","abstract":"<p>Create a GroupCipher.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7processyAA28SenderKeyDistributionMessageV012distributionI0_tKF":{"name":"process(distributionMessage:)","abstract":"<p>Create a new group session from a distribution message.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV13createSessionAA28SenderKeyDistributionMessageVyKF":{"name":"createSession()","abstract":"<p>Create a new session and generate a distribution message.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF":{"name":"encrypt(_:)","abstract":"<p>Encrypt a message for the recipient.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7decrypt10Foundation4DataVAA16SenderKeyMessageV10ciphertext_tKF":{"name":"decrypt(ciphertext:)","abstract":"<p>Decrypt a message from the group member.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV10loadRecord33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLAA09SenderKeyF0CyKF":{"name":"loadRecord()","abstract":"<p>Load the record for the remote address.</p>","parent_name":"GroupCipher"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvZ":{"name":"codeVersion","abstract":"<p>The version of the consistency implementation</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvZ":{"name":"version","abstract":"<p>An identifier used when hashing the identity keys</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vv":{"name":"generation","abstract":"<p>The generation of the message</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVv":{"name":"serialized","abstract":"<p>The hash of the public keys</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0VACs6UInt32V10generation_SayAA9PublicKeyVG08identityJ4ListtKcfc":{"name":"init(generation:identityKeyList:)","abstract":"<p>Create a new commitment.</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCodeSSSayAA0cD9SignatureVG3for_tKF":{"name":"generateCode(for:)","abstract":"<p>Generate a String which can be used to compare the consistency across multiple devices.","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOv":{"name":"type","abstract":"<p>The type of the message</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVv":{"name":"data","abstract":"<p>The encrypted message</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageVAcA0cD4TypeO4type_10Foundation4DataV4datatcfc":{"name":"init(type:data:)","abstract":"<p>Create a message from the components.</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol0B18BufferSerializableP9protoData10Foundation0F0VyKF":{"name":"protoData()","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a <code>CipherTextMessage</code> from a serialized record.</p>","parent_name":"CipherTextMessage"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ":{"name":"messageKeySeed","abstract":"<p>The seed used as input material for the KDF to derive the message keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ":{"name":"chainKeySeed","abstract":"<p>The seed used as input material for the KDF to derive the chain keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ":{"name":"keyMaterialSeed","abstract":"<p>The seed used as info material for the KDF to derive the message keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivZ":{"name":"secretSize","abstract":"<p>The size of the chain key</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivZ":{"name":"hashOutputSize","abstract":"<p>The size of the HKDF expand output</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVv":{"name":"key","abstract":"<p>The current key of the ratchet chain, 32 byte</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyVAC10Foundation4DataV3key_s6UInt32V5indextcfc":{"name":"init(key:index:)","abstract":"<p>Create a ratchet chain key from the components</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVAH4seed_tKF":{"name":"getBaseMaterial(seed:)","abstract":"<p>Get the SHA256 HMAC of the seed.</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV11messageKeysAA0c7MessageG0VyKF":{"name":"messageKeys()","abstract":"<p>Get a set of message keys for the Ratchet</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV4nextACyKF":{"name":"next()","abstract":"<p>Return the next chain key</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vv":{"name":"protoObject","abstract":"<p>The chain key converted to a ProtoBuf object</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyVAcA0A8_SessionV0D0V0dE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a chain key from a ProtoBuf object.</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalMessages for equality.</p>","parent_name":"RatchetChainKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvZ":{"name":"basePoint","abstract":"<p>The base point for the Curve25519 elliptic curve</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVv":{"name":"key","abstract":"<p>The key material of length <code>KeyPair.keyLength</code></p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV5point_tKcfc":{"name":"init(point:)","abstract":"<p>Create a public key from a UInt8 array. Checks","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyVAcA07PrivateD0V07privateD0_tKcfc":{"name":"init(privateKey:)","abstract":"<p>Generate a public key from a given private key.","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV6verifySb10Foundation4DataV9signature_AG3fortF":{"name":"verify(signature:for:)","abstract":"<p>Verify that the signature corresponds to the message.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF":{"name":"verify(vrfSignature:for:)","abstract":"<p>Verify that the vrf signature corresponds to the message.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV18calculateAgreement10Foundation4DataVAA07PrivateD0V07privateD0_tKF":{"name":"calculateAgreement(privateKey:)","abstract":"<p>Calculate the shared agreement between the given private key and the public key.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV1loiSbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two public keys.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two public keys for equality. The keys are equal if all bytes match.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVv":{"name":"data","abstract":"<p>The serialized data of the public key</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a public key from a serialized record.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV9protoData10Foundation0F0VyF":{"name":"protoData()","abstract":"<p>Return a byte representation of the public key</p>","parent_name":"PublicKey"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV10identifierSSv":{"name":"identifier","abstract":"<p>The unique identifier of a user (such as a phone number)</p>","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV8deviceIds6UInt32Vv":{"name":"deviceId","abstract":"<p>The identifier for the individual device of a user</p>","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressVACSS10identifier_s6UInt32V8deviceIdtcfc":{"name":"init(identifier:deviceId:)","abstract":"<p>Create a <code>SignalAddress</code>.</p>","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalAddresses. Two <code>SignalAddress</code> objects are","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV9hashValueSiv":{"name":"hashValue","abstract":"<p>A hash value of the address, constructed by summing the","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV11descriptionSSv":{"name":"description","abstract":"<p>A description of the SignalAddress.</p>","parent_name":"SignalAddress"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvZ":{"name":"DJBType","abstract":"<p>Type declaration (only needed for compatibility)</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vv":{"name":"publicKey","abstract":"<p>The public part of the key pair</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vv":{"name":"privateKey","abstract":"<p>The private part of the key pair</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairVAcA06PublicC0V06publicC0_AA07PrivateC0V07privateC0tcfc":{"name":"init(publicKey:privateKey:)","abstract":"<p>Create a key pair from existing public and private keys</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairVACyKcfc":{"name":"init()","abstract":"<p>Create a new random key pair.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV4sign10Foundation4DataVAG7message_tKF":{"name":"sign(message:)","abstract":"<p>Calculate the signature for the given message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV7signVRF10Foundation4DataVAG7message_tKF":{"name":"signVRF(message:)","abstract":"<p>Calculates a unique Curve25519 signature for the private key</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA06PublicC0V06publicC0_tKF":{"name":"calculateAgreement(publicKey:)","abstract":"<p>Calculate the shared agreement between the private key and the given public key.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV6verifySb10Foundation4DataV9signature_AG3fortF":{"name":"verify(signature:for:)","abstract":"<p>Verify that the signature corresponds to the message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF":{"name":"verify(vrfSignature:for:)","abstract":"<p>Verify that the vrf signature corresponds to the message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA07PrivateC0V07privateC0_tKF":{"name":"calculateAgreement(privateKey:)","abstract":"<p>Calculate the shared agreement between the given private key and the public key.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairVAcA0a1_cD0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a key pair from a protobuf object.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vv":{"name":"protoObject","abstract":"<p>The key pair converted to a ProtoBuf object</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two key pairs for equality. The keys are equal if public and private keys match.</p>","parent_name":"KeyPair"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVv":{"name":"ourIdentityKey","abstract":"<p>The identity of the local party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVv":{"name":"ourBaseKey","abstract":"<p>The base key for the ratchet of the local party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVv":{"name":"ourRatchetKey","abstract":"<p>The initial key used for the ratchet</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vv":{"name":"theirBaseKey","abstract":"<p>The base key of the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vv":{"name":"theirRatchetKey","abstract":"<p>The ratchet key used by the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vv":{"name":"theirIdentityKey","abstract":"<p>The identity of the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV7isAliceSbv":{"name":"isAlice","abstract":"<p>Indicate if the session was initialized as Alice</p>","parent_name":"SymmetricParameters"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV7versions5UInt8VvZ":{"name":"version","abstract":"<p>The version of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV6lengthSivZ":{"name":"length","abstract":"<p>The length of a fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivZ":{"name":"iterations","abstract":"<p>The number of iterations for the creation of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vv":{"name":"displayable","abstract":"<p>The displayable part of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vv":{"name":"scannable","abstract":"<p>The scannable part of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV11displayTextSSv":{"name":"displayText","abstract":"<p>The string to show the user</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_10Foundation4DataV0D8IdentitySS06remoteeF0AG0jI0Si10iterationstKcfc":{"name":"init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_AA9PublicKeyV0D8IdentitySS06remoteeF0AF0jI0Si10iterationstKcfc":{"name":"init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_SayAA9PublicKeyVG0D12IdentityListSS06remoteeF0AG0kiJ0Si10iterationstKcfc":{"name":"init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV7matchesSb10Foundation4DataVKF":{"name":"matches(_:)","abstract":"<p>Compare the fingerprint to scanned fingerprint data.</p>","parent_name":"Fingerprint"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVv":{"name":"publicKey","abstract":"<p>The public data of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vv":{"name":"privateKey","abstract":"<p>The private key of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_s6UInt64V9timestampAA0F4PairV03keyK010Foundation4DataV9signaturetcfc":{"name":"init(id:timestamp:keyPair:signature:)","abstract":"<p>Create a signed pre key from its components.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_AA07PrivateF0V09signatureF0s6UInt64V9timestamptKcfc":{"name":"init(id:signatureKey:timestamp:)","abstract":"<p>Create a signed pre key.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vv":{"name":"keyPair","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vv":{"name":"protoObject","abstract":"<p>Convert the signed pre key to a ProtoBuf object</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyVAcA0a1_deF0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signed pre key from a ProtoBuf object.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two signed pre keys for equality.</p>","parent_name":"SessionSignedPreKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ":{"name":"messageKeySeed","abstract":"<p>The seed value for the message key when deriving the next key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ":{"name":"chainKeySeed","abstract":"<p>The seed value for the chain key when deriving the next key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vv":{"name":"iteration","abstract":"<p>The current iteration of the chain</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVv":{"name":"chainKey","abstract":"<p>The current chain key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyVACs6UInt32V9iteration_10Foundation4DataV05chainE0tcfc":{"name":"init(iteration:chainKey:)","abstract":"<p>Create a new chain key from the components.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV07messageE0AA0c7MessageE0VyKF":{"name":"messageKey()","abstract":"<p>Advance the chain and return the generated message key.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVv":{"name":"protoObject","abstract":"<p>Convert the sender chain key to a ProtoBuf object</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyVAcA0a1_cE5StateVABV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a chain key from a ProtoBuf object.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender chain keys for equality.</p>","parent_name":"SenderChainKey"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxv":{"name":"store","abstract":"<p>The local data store to use for state information</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzv":{"name":"remoteAddress","abstract":"<p>The address of the remote party</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherVACyxGx5store_7AddressQz06remoteF0tcfc":{"name":"init(store:remoteAddress:)","abstract":"<p>Construct a session cipher for encrypt/decrypt operations on a session.","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF":{"name":"encrypt(_:)","abstract":"<p>Encrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0D11TextMessageVKF":{"name":"decrypt(_:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA06PreKeyA7MessageV03preiaJ0_tKF":{"name":"decrypt(preKeySignalMessage:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0A7MessageV06signalH0_tKF":{"name":"decrypt(signalMessage:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7processyAA0C12PreKeyBundleV03pregH0_tKF":{"name":"process(preKeyBundle:)","abstract":"<p>Build a new session from a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SessionPreKeyBundle.html\">SessionPreKeyBundle</a></code> retrieved from a server.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV04loadC033_A7B7CE7E72D1FD6B1E024448F80198D3LLAA0C6RecordCyKF":{"name":"loadSession()","abstract":"<p>Load the session record for the remote address</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C6RecordC4from_AA0A7MessageV3andtKF":{"name":"decrypt(from:and:)","abstract":"<p>Try to decrypt a SignalMessage with one of the stored sessions in the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SessionRecord.html\">SessionRecord</a></code>. If a session can decrypt the message it will be promoted to the active session.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C5StateC4from_AA0A7MessageV3andtKF":{"name":"decrypt(from:and:)","abstract":"<p>Try to decrypt a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SignalMessage.html\">SignalMessage</a></code> with a specific <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SessionState.html\">SessionState</a></code>.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA9PublicKeyV14theirEphemeralAA0t5ChainX0V05chainX0s6UInt32V7countertKF":{"name":"getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)","abstract":"<p>Retrieve previously stored message keys or create them from the chain.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA06PublicI0V14theirEphemeraltKF":{"name":"getOrCreateChainKey(state:theirEphemeral:)","abstract":"<p>Retrieve the chain key for a state and receiver chain key.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH9plaintexttKF":{"name":"getCiphertext(messageKeys:plaintext:)","abstract":"<p>Encrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH10ciphertexttKF":{"name":"getPlaintext(messageKeys:ciphertext:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vv":{"name":"id","abstract":"<p>The id of the signed pre key</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vv":{"name":"key","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vv":{"name":"timestamp","abstract":"<p>The time when the key was created</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVv":{"name":"signature","abstract":"<p>The signature of the public key of the key pair</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicVACs6UInt32V2id_s6UInt64V9timestampAA0gF0V3key10Foundation4DataV9signaturetcfc":{"name":"init(id:timestamp:key:signature:)","abstract":"<p>Create a public signed pre key from its components.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVv":{"name":"protoObject","abstract":"<p>Convert the public signed pre key to a ProtoBuf object</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicVAcA0a1_deF0V0G4PartV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signed pre key from a ProtoBuf object.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two public signed pre keys for equality.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vv":{"name":"preKeyId","abstract":"<p>The id of the pre key that was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgv":{"name":"preKeyPublic","abstract":"<p>The pre key, if a pre key was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vv":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vv":{"name":"signedPreKeyPublic","abstract":"<p>The signed pre key that was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVv":{"name":"signedPreKeySignature","abstract":"<p>The signature of the signed pre key</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vv":{"name":"identityKey","abstract":"<p>The identity key of the remote party</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleVACs6UInt32V03preE2Id_AA06PublicE0VSg0heJ0AE06signeddeI0AH0kdeJ010Foundation4DataV0kdE9SignatureAH08identityE0tcfc":{"name":"init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleVAcA0cdE6PublicV03preE0_AA0c6SigneddeG0V06signeddE0AA0gE0V08identityE0tcfc":{"name":"init(preKey:signedPreKey:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleVAC10Foundation4DataV03preE0_AF06signeddE0AF08identityE0tKcfc":{"name":"init(preKey:signedPreKey:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vv":{"name":"keyId","abstract":"<p>The id of the key that was used</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vv":{"name":"iteration","abstract":"<p>The iteration of the chain key</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVv":{"name":"cipherText","abstract":"<p>The encrypted ciphertext</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVv":{"name":"signature","abstract":"<p>The signature of the message</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV04baseE0AA010CipherTextE0VyKF":{"name":"baseMessage()","abstract":"<p>Return the message serialized</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageVACs6UInt32V5keyId_AE9iteration10Foundation4DataV10cipherTextAA07PrivateD0V09signatureD0tKcfc":{"name":"init(keyId:iteration:cipherText:signatureKey:)","abstract":"<p>Create a <code>SenderKeyMessage</code> from the components.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV6verifySbAA06PublicD0V09signatureD0_tKF":{"name":"verify(signatureKey:)","abstract":"<p>Verify that the signature matches the message.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vv":{"name":"protoObject","abstract":"<p>Convert the sender key message to a ProtoBuf object</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageVAcA0a1_cdE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender key message from a ProtoBuf object.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9protoData10Foundation0G0VyKF":{"name":"protoData()","abstract":"<p>Serialize the message.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender key message from serialized data.</p>","parent_name":"SenderKeyMessage"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVv":{"name":"signature","abstract":"<p>The signature data</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVv":{"name":"vrfOutput","abstract":"<p>The output of the VRF verification</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureVAC10Foundation4DataV9signature_AF9vrfOutputtcfc":{"name":"init(signature:vrfOutput:)","abstract":"<p>Create a new signature</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV1loiSbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two consistency signatures.</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two consistency signatures for equality.</p>","parent_name":"DeviceConsistencySignature"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivZ":{"name":"derivedRootSecretsSize","abstract":"<p>The total number of bytes to derive when creating a new root and chain key</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvZ":{"name":"iterationStartOffset","abstract":"<p>The offset for the expand iterations</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV13deriveSecrets10Foundation4DataVAG8material_AG4saltAG4infoSi12outputLengthtKFZ":{"name":"deriveSecrets(material:salt:info:outputLength:)","abstract":"<p>Derive new secrets from the KDF.</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL10Foundation4DataVAH3prk_AH4infoSi12outputLengthtKFZ":{"name":"expand(prk:info:outputLength:)","abstract":"<p>Expand the bytes to create enough output bytes.</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV15chainAndRootKeyAA07RatchetfG0V04rootG0_AA0h5ChainG0V0dG0t10Foundation4DataV8material_AM4saltAM4infotKFZ":{"name":"chainAndRootKey(material:salt:info:)","abstract":"<p>Create a new chain key and root key.</p>","parent_name":"HKDF"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV5localSSv":{"name":"local","abstract":"<p>Fingerprint String of the local device</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV6remoteSSv":{"name":"remote","abstract":"<p>Fingerprint String of the remote device</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSv":{"name":"displayText","abstract":"<p>Displaytext</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintVACSS5local_SS6remotetcfc":{"name":"init(local:remote:)","abstract":"<p>Create a displayable fingerprint from local and remote fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc":{"name":"init(localFingerprint:remoteFingerprint:)","abstract":"<p>Create a displayable fingerprint from local and remote fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELLSS10Foundation4DataV11fingerprint_tFZ":{"name":"createDisplayString(fingerprint:)","abstract":"<p>Create a display string from fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two displayable fingerprints for equality.</p>","parent_name":"DisplayableFingerprint"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvZ":{"name":"provider","abstract":"<p>This variable can be set to provide a custom crypto provider.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6random10Foundation4DataVSi5bytes_tKFZ":{"name":"random(bytes:)","abstract":"<p>Create a number of secure random bytes.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtKFZ":{"name":"hmacSHA256(for:with:)","abstract":"<p>Authenticate a message with the HMAC based on SHA256.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6sha51210Foundation4DataVAG3for_tKFZ":{"name":"sha512(for:)","abstract":"<p>Return the SHA512 message digest.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with the given scheme.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with the given scheme.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV23generateIdentityKeyPair10Foundation4DataVyKFZ":{"name":"generateIdentityKeyPair()","abstract":"<p>Generate an identity key pair. Clients should only do this once, at install time.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV15generatePreKeysSayAA07SessionE3KeyVGs6UInt32V5start_Si5counttKFZ":{"name":"generatePreKeys(start:count:)","abstract":"<p>Generate a list of PreKeys.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV20generateSignedPreKeyAA07SessionefG0VAA07PrivateG0V08identityG0_s6UInt32V2ids6UInt64V9timestamptKFZ":{"name":"generateSignedPreKey(identityKey:id:timestamp:)","abstract":"<p>Generate a signed pre key.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV19generateSenderKeyIds6UInt32VyKFZ":{"name":"generateSenderKeyId()","abstract":"<p>Generate a sender key ID.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV17generateSenderKey10Foundation4DataVyKFZ":{"name":"generateSenderKey()","abstract":"<p>Generate a sender key.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV24generateSenderSigningKeyAA0G4PairVyKFZ":{"name":"generateSenderSigningKey()","abstract":"<p>Generate a sender signing key pair</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoVACyc33_D8858E66F8480749A0F433B505F180AFLlfc":{"name":"init()","abstract":"<p>SignalCrypto only has static functions and there is no need to create any instances</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html":{"name":"SignalCrypto","abstract":"<p>The <code>SignalCrypto</code> struct exposes all necessary cryptocraphic functions to the protocol."},"Structs/DisplayableFingerprint.html":{"name":"DisplayableFingerprint","abstract":"<p>A Fingerprint to verify the keys specifically for displaying to the user</p>"},"Structs/HKDF.html":{"name":"HKDF","abstract":"<p>The Key derivation function used for the Ratchet.</p>"},"Structs/DeviceConsistencySignature.html":{"name":"DeviceConsistencySignature","abstract":"<p>A signature used for device consistency checks</p>"},"Structs/SenderKeyMessage.html":{"name":"SenderKeyMessage","abstract":"<p>A sender key message is used to send an encrypted message in an existing group session.</p>"},"Structs/SessionPreKeyBundle.html":{"name":"SessionPreKeyBundle","abstract":"<p>Pre key bundles are used to establish new sessions.</p>"},"Structs/SessionSignedPreKeyPublic.html":{"name":"SessionSignedPreKeyPublic","abstract":"<p>A public signed pre key is used as part of a session bundle to establish a new session."},"Structs/SessionCipher.html":{"name":"SessionCipher","abstract":"<p>The main entry point for Signal Protocol encrypt/decrypt operations.</p>"},"Structs/SenderChainKey.html":{"name":"SenderChainKey","abstract":"<p>A key in the sender chain.</p>"},"Structs/SessionSignedPreKey.html":{"name":"SessionSignedPreKey","abstract":"<p>A signed pre key is used as part of a session bundle to establish a new session."},"Structs/Fingerprint.html":{"name":"Fingerprint","abstract":"<p>A fingerprint can be used to ensure that the identities of a communication channel"},"Structs/SymmetricParameters.html":{"name":"SymmetricParameters","abstract":"<p>All parameters needed to establish a session</p>"},"Structs/KeyPair.html":{"name":"KeyPair","abstract":"<p>A pair of public and private key for elliptic curve cryptopgraphy</p>"},"Structs/SignalAddress.html":{"name":"SignalAddress","abstract":"<p>A <code>SignalAddress</code> identifies a single device of a Signal user, with a user"},"Structs/PublicKey.html":{"name":"PublicKey","abstract":"<p>The public part of an elliptic curve key pair."},"Structs/RatchetChainKey.html":{"name":"RatchetChainKey","abstract":"<p>A chain key for the ratchet.</p>"},"Structs/CipherTextMessage.html":{"name":"CipherTextMessage","abstract":"<p>A <code>CipherTextMessage</code> encapsulates an encrypted message and the type-</p>"},"Structs/DeviceConsistencyCommitmentV0.html":{"name":"DeviceConsistencyCommitmentV0","abstract":"<p>Create commitments that are hashes of the identity keys of different devices."},"Structs/GroupCipher.html":{"name":"GroupCipher","abstract":"<p>Use a <code>GroupCipher</code> to encrypt and decrypt group messages for already"},"Structs/SenderChain.html":{"name":"SenderChain","abstract":"<p>The sender chain of a ratchet used to encrypt messages for sending.</p>"},"Structs/DeviceConsistencyMessage.html":{"name":"DeviceConsistencyMessage","abstract":"<p>Device consistency messages can be sent between multiple devices to verify that the"},"Structs/SignalCommonCrypto.html":{"name":"SignalCommonCrypto","abstract":"<p>Implementation of the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/SignalCryptoProvider.html\">SignalCryptoProvider</a></code> protocol using"},"Structs/SessionPreKey.html":{"name":"SessionPreKey","abstract":"<p>A pre key used to esatblish a session. A unique pre key is used for"},"Structs/SessionPreKeyPublic.html":{"name":"SessionPreKeyPublic","abstract":"<p>A pre key used to esatblish a session. A unique pre key is used for"},"Structs/PreKeySignalMessage.html":{"name":"PreKeySignalMessage","abstract":"<p>A <code>PreKeySignalMessage</code> can be used to establish a new session.</p>"},"Structs/SenderMessageKey.html":{"name":"SenderMessageKey","abstract":"<p>A message key in a chain to encrypt/decrypt messages</p>"},"Structs/SenderKeyDistributionMessage.html":{"name":"SenderKeyDistributionMessage","abstract":"<p><code>SenderKeyDistributionMessage</code>s are used to establish group sessions.</p>"},"Structs/PendingPreKey.html":{"name":"PendingPreKey","abstract":"<p>A pre key sent out as a pre key message, until a message is received from the other party</p>"},"Structs/ScannableFingerprint.html":{"name":"ScannableFingerprint","abstract":"<p>A fingerprint optimised to be scanned through e.g. a QR Code</p>"},"Structs/SignalMessage.html":{"name":"SignalMessage","abstract":"<p>A <code>SignalMessage</code> is used to send an encrypted message in an established session.</p>"},"Structs/PrivateKey.html":{"name":"PrivateKey","abstract":"<p>The private part of an elliptic curve key pair."},"Structs/RatchetMessageKeys.html":{"name":"RatchetMessageKeys","abstract":"<p>The keys needed to encrypt/decrypt a message</p>"},"Structs/SignalSenderKeyName.html":{"name":"SignalSenderKeyName","abstract":"<p>A representation of a (group + sender + device) tuple</p>"},"Structs/RatchetRootKey.html":{"name":"RatchetRootKey","abstract":"<p>A root key is within a ratchet to derive new sender and receiver chain keys.</p>"},"Structs/SessionBuilder.html":{"name":"SessionBuilder","abstract":"<p>Session builder is responsible for setting up encrypted sessions."},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP06signeddE010Foundation4DataVs6UInt32V3for_tKF":{"name":"signedPreKey(for:)","abstract":"<p>Provide a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP5storey10Foundation4DataV06signeddE0_s6UInt32V3fortKF":{"name":"store(signedPreKey:for:)","abstract":"<p>Store a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP08containscdE0Sbs6UInt32V3for_tKF":{"name":"containsSignedPreKey(for:)","abstract":"<p>Indicate if a Signed Pre Key exists for an id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP06removecdE0ys6UInt32V3for_tKF":{"name":"removeSignedPreKey(for:)","abstract":"<p>Remove a Signed Pre Key.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP6allIdsSays6UInt32VGyKF":{"name":"allIds()","abstract":"<p>Get all Ids for the SignedPreKeys in the store.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vv":{"name":"lastId","abstract":"<p>The id of the last SignedPreKey that was stored.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStorePAAE5storeyAA07SessioncdE0V06signeddE0_tKF":{"name":"store(signedPreKey:)","abstract":"<p>Store a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP6random10Foundation4DataVSi5bytes_tKF":{"name":"random(bytes:)","abstract":"<p>Create a number of secure random bytes.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP10hmacSHA25610Foundation4DataVAG3for_AG4withtKF":{"name":"hmacSHA256(for:with:)","abstract":"<p>Authenticate a message with the HMAC based on SHA256.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP6sha51210Foundation4DataVAG3for_tKF":{"name":"sha512(for:)","abstract":"<p>Return the SHA512 message digest.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with the given scheme.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with the given scheme.</p>","parent_name":"SignalCryptoProvider"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP03getcD4Data10Foundation0G0VyKF":{"name":"getIdentityKeyData()","abstract":"<p>Return the identity key pair. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataV08identitydH0_tKF":{"name":"store(identityKeyData:)","abstract":"<p>Save the identity key pair.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP8identity10Foundation4DataVSg7AddressQz3for_tKF":{"name":"identity(for:)","abstract":"<p>Return the identity for the given address, if there is any.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataVSg8identity_7AddressQz3fortKF":{"name":"store(identity:for:)","abstract":"<p>Store a remote client’s identity key as trusted.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE03getcD0AA0D4PairVyKF":{"name":"getIdentityKey()","abstract":"<p>Return the identity key pair. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE5storeyAA0D4PairV08identityD0_tKF":{"name":"store(identityKey:)","abstract":"<p>Save the identity key pair.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE03getcD10PublicData10Foundation0H0VyKF":{"name":"getIdentityKeyPublicData()","abstract":"<p>Return the public identity key data.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSb10Foundation4DataV8identity_7AddressQz3fortKF":{"name":"isTrusted(identity:for:)","abstract":"<p>Determine whether a remote client’s identity is trusted. The convention is","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSbAA06PublicD0V8identity_7AddressQz3fortKF":{"name":"isTrusted(identity:for:)","abstract":"<p>Determine whether a remote client’s identity is trusted. The convention is","parent_name":"IdentityKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP03preD010Foundation4DataVs6UInt32V3for_tKF":{"name":"preKey(for:)","abstract":"<p>Provide a Pre Key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP5storey10Foundation4DataV03preD0_s6UInt32V3fortKF":{"name":"store(preKey:for:)","abstract":"<p>Store a pre key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP08containscD0Sbs6UInt32V3for_tF":{"name":"containsPreKey(for:)","abstract":"<p>Indicate if a pre key exists for an id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP06removecD0ys6UInt32V3for_tKF":{"name":"removePreKey(for:)","abstract":"<p>Remove a pre key.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vv":{"name":"lastId","abstract":"<p>Return the id of the last stored pre key.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStorePAAE5storeyAA07SessioncD0V03preD0_tKF":{"name":"store(preKey:)","abstract":"<p>Store a pre key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7Address":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"SenderKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP06senderD010Foundation4DataVSg7AddressQz3for_tF":{"name":"senderKey(for:)","abstract":"<p>Returns a copy of the sender key record corresponding to the address tuple.</p>","parent_name":"SenderKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP5storey10Foundation4DataV06senderD0_7AddressQz3fortKF":{"name":"store(senderKey:for:)","abstract":"<p>Stores the sender key record.</p>","parent_name":"SenderKeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP12GroupAddress":{"name":"GroupAddress","abstract":"<p>The type that distinguishes different groups and devices/users</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4Type":{"name":"IdentityKeyStoreType","abstract":"<p>The type of the identity key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP06SendercD4Type":{"name":"SenderKeyStoreType","abstract":"<p>The type of the sender key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4Type":{"name":"SessionStoreType","abstract":"<p>The type of the session key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzv":{"name":"identityKeyStore","abstract":"<p>The Identity Key store that stores the records for the identity key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pv":{"name":"preKeyStore","abstract":"<p>The Pre Key store that stores the records for the pre key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP06sendercD006SendercD4TypeQzv":{"name":"senderKeyStore","abstract":"<p>The Sender Key store that stores the records for the sender key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzv":{"name":"sessionStore","abstract":"<p>The Session store that stores the records for the session module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pv":{"name":"signedPreKeyStore","abstract":"<p>The Signed Pre Key store that stores the records for the signed pre key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE014createIdentityC010Foundation4DataVyKF":{"name":"createIdentityKey()","abstract":"<p>Create a new identity key pair and store it.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE18createSignedPrekey10Foundation4DataVs6UInt32V2id_s6UInt64V9timestamptKF":{"name":"createSignedPrekey(id:timestamp:)","abstract":"<p>Create a signed pre key with the given id and store it.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE13createPreKeysSay10Foundation4DataVGs6UInt32V5start_Si5counttKF":{"name":"createPreKeys(start:count:)","abstract":"<p>Create a number of pre keys and store them.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE11fingerprintAA11FingerprintV7AddressQz3for_AH05localG0tKF":{"name":"fingerprint(for:localAddress:)","abstract":"<p>Create a fingerprint to compare keys with someone.</p>","parent_name":"KeyStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP04loadC010Foundation4DataVSg7AddressQz3for_tKF":{"name":"loadSession(for:)","abstract":"<p>Load a session for a given address.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP5storey10Foundation4DataV7session_7AddressQz3fortKF":{"name":"store(session:for:)","abstract":"<p>Store a session record for a remote client.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP08containsC0Sb7AddressQz3for_tF":{"name":"containsSession(for:)","abstract":"<p>Indicate if a record exists for the client address</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP06deleteC0y7AddressQz3for_tKF":{"name":"deleteSession(for:)","abstract":"<p>Delete a session for a remote client.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html":{"name":"SessionStore","abstract":"<p>Implement the <code>SessionStore</code> protocol to handle the session records of the"},"Protocols/KeyStore.html":{"name":"KeyStore","abstract":"<p>Provide all local storage delegates.</p>"},"Protocols/SenderKeyStore.html":{"name":"SenderKeyStore","abstract":"<p>Implement the <code>SenderKeyStore</code> protocol to handle the sender key storage of the"},"Protocols/PreKeyStore.html":{"name":"PreKeyStore","abstract":"<p>Implement the <code>PreKeyStore</code> protocol to handle the pre key storage of the"},"Protocols/IdentityKeyStore.html":{"name":"IdentityKeyStore","abstract":"<p>Implement the <code>IdentityKeyStore</code> protocol to handle the identity keys of the"},"Protocols/SignalCryptoProvider.html":{"name":"SignalCryptoProvider","abstract":"<p>The <code>SignalCryptoProvider</code> protocol can be implemented to provide a custom"},"Protocols/SignedPreKeyStore.html":{"name":"SignedPreKeyStore","abstract":"<p>Implement the <code>SignedPreKeyStore</code> protocol to handle the signed pre key storage of the"},"Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF":{"name":"getLogicalKey(for:)","abstract":"<p>Serialize the list of public keys by first sorting the keys and then"},"Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF":{"name":"getFingerprint(identity:stableIdentifier:iterations:)","abstract":"<p>Calculate the fingerprint for identity data and identifier.</p>"},"Enums/SignalEncryptionScheme.html#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5A2CmF":{"name":"AES_CBCwithPKCS5","abstract":"<p>Encrypt/decrypt with AES in CBC mode with PKCS5 padding</p>","parent_name":"SignalEncryptionScheme"},"Enums/SignalEncryptionScheme.html#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingA2CmF":{"name":"AES_CTRnoPadding","abstract":"<p>Encrypt/decrypt with AES in CTR mode with no padding</p>","parent_name":"SignalEncryptionScheme"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO6signalA2CmF":{"name":"signal","abstract":"<p>A ‘normal’ message in an established session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO6preKeyA2CmF":{"name":"preKey","abstract":"<p>A pre key message to establish a new session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO9senderKeyA2CmF":{"name":"senderKey","abstract":"<p>A normal message in an established group session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionA2CmF":{"name":"senderKeyDistribution","abstract":"<p>A distribution message to establish a new group session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO11descriptionSSv":{"name":"description","abstract":"<p>A String representation of the type</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVv":{"name":"data","abstract":"<p>Encode the type into a string</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeOACSg10Foundation4DataV4from_tcfc":{"name":"init(from:)","abstract":"<p>Extract the <code>CipherTextType</code> from data.</p>","parent_name":"CipherTextType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO7unknownA2CmF":{"name":"unknown","abstract":"<p>Unknown errors should only be thrown of no other, more descriptive error type exists</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO05curveC0A2CmF":{"name":"curveError","abstract":"<p>Curve25519 functions returned an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO07storageC0A2CmF":{"name":"storageError","abstract":"<p>The local storage implementation produced an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageA2CmF":{"name":"duplicateMessage","abstract":"<p>A message was received that was previously decrypted, or is too old</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO07invalidD0A2CmF":{"name":"invalidType","abstract":"<p>The message type does not match</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO10invalidKeyA2CmF":{"name":"invalidKey","abstract":"<p>An invalid key produced an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9invalidIdA2CmF":{"name":"invalidId","abstract":"<p>The (key) id is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO10invalidMacA2CmF":{"name":"invalidMac","abstract":"<p>The authentication failed</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO14invalidMessageA2CmF":{"name":"invalidMessage","abstract":"<p>The message structure is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13invalidLengthA2CmF":{"name":"invalidLength","abstract":"<p>The length of a message or stored object is incorrect</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13legacyMessageA2CmF":{"name":"legacyMessage","abstract":"<p>A message from an older implementation of the protocol is received</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9noSessionA2CmF":{"name":"noSession","abstract":"<p>No valid session exists for the address</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityA2CmF":{"name":"untrustedIdentity","abstract":"<p>The identity of the recipient is untrusted</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureA2CmF":{"name":"invalidSignature","abstract":"<p>The signature of the message is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufA2CmF":{"name":"invalidProtoBuf","abstract":"<p>A serialized record or message is not in valid protocol buffer format</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchA2CmF":{"name":"fPIdentityMismatch","abstract":"<p>The identity of two fingerprints is not equal</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16noCryptoProviderA2CmF":{"name":"noCryptoProvider","abstract":"<p>There is no crypto provider set</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesA2CmF":{"name":"noRandomBytes","abstract":"<p>Random bytes could not be created</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO04hmacC0A2CmF":{"name":"hmacError","abstract":"<p>There was an error calculating the HMAC of a message</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO06digestC0A2CmF":{"name":"digestError","abstract":"<p>There was an error calculating a digest</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO010encryptionC0A2CmF":{"name":"encryptionError","abstract":"<p>An error occured during encryption</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO010decryptionC0A2CmF":{"name":"decryptionError","abstract":"<p>An error occured during decryption</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html":{"name":"SignalErrorType","abstract":"<p>The different types of errors that can occur using the SignalProtocolSwift library.</p>"},"Enums/CipherTextType.html":{"name":"CipherTextType","abstract":"<p>The <code>CipherTextType</code> enum describes the different types of messages.</p>"},"Enums/SignalEncryptionScheme.html":{"name":"SignalEncryptionScheme","abstract":"<p>Specifies the type of algorithm to use for encryption and decryption.</p>"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivZ":{"name":"maxStates","abstract":"<p>The maximum number of different states that are saved</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGv":{"name":"states","abstract":"<p>The states that are saved by the record, sorted by most recent</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgv":{"name":"state","abstract":"<p>The active state is the most recent, if any states exist</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC7isEmptySbv":{"name":"isEmpty","abstract":"<p>Indicate if there are any states in this record</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordCACycfc":{"name":"init()","abstract":"<p>Create a fresh session record without any states.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgs6UInt32V3for_tF":{"name":"state(for:)","abstract":"<p>Get the state for an id.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC03setcD0ys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedM0tF":{"name":"setSenderKey(id:iteration:chainKey:signatureKeyPair:)","abstract":"<p>Set a new sender key state and delete all previous states.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA06PublicD0V09signaturenD0AA07PrivateD0VSg0opD0tF":{"name":"addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)","abstract":"<p>Add a new sender key state.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedN0tF":{"name":"addState(id:iteration:chainKey:signatureKeyPair:)","abstract":"<p>Add a new sender key state.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vv":{"name":"protoObject","abstract":"<p>The record converted to a ProtoBuf object for storage</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordCAcA0a1_cdE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a record from a ProtoBuf object.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two records.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivZ":{"name":"messageKeyMaximum","abstract":"<p>The maximum number of message keys stored</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vv":{"name":"keyId","abstract":"<p>The current key id</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vv":{"name":"chainKey","abstract":"<p>The chain key of the state used for key generation</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vv":{"name":"signaturePublicKey","abstract":"<p>The signature key</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgv":{"name":"signaturePrivateKey","abstract":"<p>The private part of the signature key, optional</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGv":{"name":"messageKeys","abstract":"<p>Dictionary of message keys indexed by iteration</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateCACs6UInt32V5keyId_AA0c5ChainD0V05chainD0AA06PublicD0V09signaturekD0AA07PrivateD0VSg0lmD0tcfc":{"name":"init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)","abstract":"<p>Create a new session state.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC3addyAA0c7MessageD0V07messageD0_Sb15removingOldKeystF":{"name":"add(messageKey:removingOldKeys:)","abstract":"<p>Add a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SenderMessageKey.html\">SenderMessageKey</a></code> to the keys which are stored to decrypt old (out of order) messages.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC07messageD0AA0c7MessageD0VSgs6UInt32V3for_tF":{"name":"messageKey(for:)","abstract":"<p>Get the message key for the iteration, if it exists.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC20removeOldMessageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLyyF":{"name":"removeOldMessageKeys()","abstract":"<p>Remove old message keys if the number is higher then the maximum.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC06senderD0AA0c7MessageD0Vs6UInt32V3for_tKF":{"name":"senderKey(for:)","abstract":"<p>Get the sender key for the iteration of the chain.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateCAcA0a1_cdE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a SenderKeyState from a ProtoBuf object.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vv":{"name":"protoObject","abstract":"<p>The state converted to a ProtoBuf object</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare tow states for equality</p>","parent_name":"SenderKeyState"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vv":{"name":"ratchetKey","abstract":"<p>The current ratchet key</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vv":{"name":"chainKey","abstract":"<p>The current chain key</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGv":{"name":"messageKeys","abstract":"<p>The stored message keys for out-of-order messages</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainCAcA9PublicKeyV07ratchetF0_AA07RatchetdF0V05chainF0tcfc":{"name":"init(ratchetKey:chainKey:)","abstract":"<p>Create a receiver chain from the components.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC3addyAA18RatchetMessageKeysV10messageKey_tF":{"name":"add(messageKey:)","abstract":"<p>Add a message key to the stored message keys.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC3hasSbAA18RatchetMessageKeysV10messageKey_tF":{"name":"has(messageKey:)","abstract":"<p>Check if a message key already exists.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10messageKeyAA18RatchetMessageKeysVSgs6UInt32V3for_tF":{"name":"messageKey(for:)","abstract":"<p>Get a message key if it exists.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC16removeMessageKeyAA07RatchetF4KeysVSgs6UInt32V3for_tF":{"name":"removeMessageKey(for:)","abstract":"<p>Remove a message key and return it.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vv":{"name":"protoObject","abstract":"<p>The receiver chain converted to a protobuf object</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainCAcA0A8_SessionV0D0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a receiver chain from a protobuf object.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two receiver chains for equality.</p>","parent_name":"ReceiverChain"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivZ":{"name":"maxReceiverChains","abstract":"<p>The maximum number of receiver chains for the remote party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvZ":{"name":"keyInfo","abstract":"<p>The info material used for the derivation of chain and root keys</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vv":{"name":"previousCounter","abstract":"<p>The last counter in the previous sender chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgv":{"name":"localIdentity","abstract":"<p>The identity key of the local party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgv":{"name":"remoteIdentity","abstract":"<p>The identity key of the remote party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgv":{"name":"rootKey","abstract":"<p>The root key of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgv":{"name":"senderChain","abstract":"<p>The sender chain of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGv":{"name":"receiverChains","abstract":"<p>The receiver chains of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgv":{"name":"pendingPreKey","abstract":"<p>An optional pending pre key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgv":{"name":"aliceBaseKey","abstract":"<p>The base key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateCACycfc":{"name":"init()","abstract":"<p>Create a new sender state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13receiverChainAA08ReceiverF0CSgAA9PublicKeyV3for_tF":{"name":"receiverChain(for:)","abstract":"<p>Find a receiver chain for a sender key.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3addyAA13ReceiverChainC08receiverG0_tF":{"name":"add(receiverChain:)","abstract":"<p>Add a receiver chain to the state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV05chainH0_AA06PublicH0V3fortKF":{"name":"set(chainKey:for:)","abstract":"<p>Set the chain key for a given sender key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3setyAA18RatchetMessageKeysV07messageH0_AA9PublicKeyV3fortF":{"name":"set(messageKeys:for:)","abstract":"<p>Set the message keys for a given sender key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC17removeMessageKeysAA07RatchetfG0VSgAA9PublicKeyV3for_s6UInt32V3andtF":{"name":"removeMessageKeys(for:and:)","abstract":"<p>Remove message keys</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC16receiverChainKeyAA07RatchetfG0VSgAA06PublicG0V3for_tF":{"name":"receiverChainKey(for:)","abstract":"<p>Find the chain key of a receiver chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV08receivergH0_AA06PublicH0V3fortKF":{"name":"set(receiverChainKey:for:)","abstract":"<p>Set the chain key of a receiver chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC15aliceInitializeyAA7KeyPairV011ourIdentityG0_AF0i4BaseG0AA06PublicG0V05theirjG0AJ0m9SignedPreG0AJSg0m7OneTimeoG0AJ0m7RatchetG0tKF":{"name":"aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13bobInitializeyAA7KeyPairV011ourIdentityG0_AF0i9SignedPreG0AFSg0i7OneTimelG0AF0i7RatchetG0AA06PublicG0V05theirjG0AM0q4BaseG0tKF":{"name":"bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC19symmetricInitializeyAA19SymmetricParametersV10parameters_tKF":{"name":"symmetricInitialize(parameters:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LLAA14RatchetRootKeyV04rootS0_AA0q5ChainS0V05chainS0t10Foundation4DataV6secret_tKF":{"name":"calculateDerivedKeys(secret:)","abstract":"<p>Create the root and chain key from the secret.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vv":{"name":"protoObject","abstract":"<p>The state converted to a protobuf object</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateCAcA0a1_C0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a state from a protobuf object.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare tow session states.</p>","parent_name":"SessionState"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOv":{"name":"type","abstract":"<p>The error type</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC7messageSSSgv":{"name":"message","abstract":"<p>A decribing message accompaning the error</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC5causeACSgv":{"name":"cause","abstract":"<p>If the error occured in a subfunction, then this variable can be used to construct an error trace.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSv":{"name":"function","abstract":"<p>The function were the error occured</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSv":{"name":"file","abstract":"<p>The file that the error occured in</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorCAcA0aC4TypeO_SSSgACSg5causeSS4fileSS8functiontcfc":{"name":"init(_:_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code>.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorCACSS_AC5causeSS4fileSS8functiontcfc":{"name":"init(_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code> using an already exisiting <code>SignalError</code> from a subroutine.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorCACSS_s0C0_p5causeSS4fileSS8functiontcfc":{"name":"init(_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code> using an already exisiting <code>Error</code> from a subroutine.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC11descriptionSSv":{"name":"description","abstract":"<p>A decription of the error, including all contained errors, without function and file names</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC16shortDescriptionSSv":{"name":"shortDescription","abstract":"<p>A short decription of the error without the contained errors</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSv":{"name":"longDescription","abstract":"<p>A decription of the error, including all contained errors, as well as function and file names</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSv":{"name":"trace","abstract":"<p>The trace of the error which is used to build the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSv\">longDescription</a></code></p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSv":{"name":"localizedDescription","abstract":"<p>The description of the error</p>","parent_name":"SignalError"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivZ":{"name":"archivedStatesMax","abstract":"<p>The maximum number of archived states</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCv":{"name":"state","abstract":"<p>The current session</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGv":{"name":"previousStates","abstract":"<p>A list of previous sessions, sorted by most recent</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC7isFreshSbv":{"name":"isFresh","abstract":"<p>Indicates if the session was just created</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordCAcA0C5StateCSg5state_tcfc":{"name":"init(state:)","abstract":"<p>Create a new session record for a session.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC03hasC5StateSbAA9PublicKeyV04baseH0_tF":{"name":"hasSessionState(baseKey:)","abstract":"<p>Check if the session record contains a specific state.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC19archiveCurrentStateyyF":{"name":"archiveCurrentState()","abstract":"<p>Create a new state and archive the old one.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC12promoteStateyAA0cF0C5state_tF":{"name":"promoteState(state:)","abstract":"<p>Make a state the currently active state.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LLyAA9PublicKeyV3for_tF":{"name":"removeState(for:)","abstract":"<p>Remove a state from the previous states.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vv":{"name":"protoObject","abstract":"<p>Convert the record to a ProtoBuf object for storage</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordCAcA0a1_D0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a session record from a ProtoBuf object.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two session records for equality.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html":{"name":"SessionRecord","abstract":"<p>The record of a session (and previous sessions) with another party.</p>"},"Classes/SignalError.html":{"name":"SignalError","abstract":"<p>All errors thrown by <code>SignalProtocolSwift</code> are <code>SignalError</code> objects.</p>"},"Classes/SessionState.html":{"name":"SessionState","abstract":"<p>A session state contains all data needed for communicating with a remote party.</p>"},"Classes/ReceiverChain.html":{"name":"ReceiverChain","abstract":"<p>A receiver chain is the part of the ratchet that creates the message keys for the received messages.</p>"},"Classes/SenderKeyState.html":{"name":"SenderKeyState","abstract":"<p>A state of a group message session with a recipient,"},"Classes/SenderKeyRecord.html":{"name":"SenderKeyRecord","abstract":"<p>Stores the states for a session.</p>"},"Classes.html":{"name":"Classes","abstract":"<p>The following classes are available globally.</p>"},"Enums.html":{"name":"Enums","abstract":"<p>The following enums are available globally.</p>"},"Functions.html":{"name":"Functions","abstract":"<p>The following functions are available globally.</p>"},"Protocols.html":{"name":"Protocols","abstract":"<p>The following protocols are available globally.</p>"},"Structs.html":{"name":"Structs","abstract":"<p>The following structs are available globally.</p>"},"Typealiases.html":{"name":"Typealiases","abstract":"<p>The following typealiases are available globally.</p>"}} \ No newline at end of file +{"Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira":{"name":"RatchetIdentityKeyPair","abstract":"<p>An elliptic key pair specifically used for identification in a ratchet</p>"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVvp":{"name":"ourIdentityKey","abstract":"<p>The identity of the local party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVvp":{"name":"ourBaseKey","abstract":"<p>The base key for the ratchet of the local party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVvp":{"name":"ourRatchetKey","abstract":"<p>The initial key used for the ratchet</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vvp":{"name":"theirBaseKey","abstract":"<p>The base key of the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vvp":{"name":"theirRatchetKey","abstract":"<p>The ratchet key used by the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vvp":{"name":"theirIdentityKey","abstract":"<p>The identity of the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV7isAliceSbvp":{"name":"isAlice","abstract":"<p>Indicate if the session was initialized as Alice</p>","parent_name":"SymmetricParameters"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vvp":{"name":"id","abstract":"<p>The id of the signed pre key</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vvp":{"name":"key","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vvp":{"name":"timestamp","abstract":"<p>The time when the key was created</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVvp":{"name":"signature","abstract":"<p>The signature of the public key of the key pair</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2id9timestamp3key9signatureACs6UInt32V_s6UInt64VAA0gF0V10Foundation4DataVtcfc":{"name":"init(id:timestamp:key:signature:)","abstract":"<p>Create a public signed pre key from its components.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV6verify4withSbAA0gF0V_tF":{"name":"verify(with:)","abstract":"<p>Verify that the signed key is valid.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVvp":{"name":"protoObject","abstract":"<p>Convert the public signed pre key to a ProtoBuf object</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV4fromAcA0a1_deF0V0G4PartV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signed pre key from a ProtoBuf object.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two public signed pre keys for equality.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVvp":{"name":"publicKey","abstract":"<p>The public data of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vvp":{"name":"privateKey","abstract":"<p>The private key of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV2id9timestamp7keyPair9signatureACs6UInt32V_s6UInt64VAA0fJ0V10Foundation4DataVtcfc":{"name":"init(id:timestamp:keyPair:signature:)","abstract":"<p>Create a signed pre key from its components.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV2id09signatureF09timestampACs6UInt32V_AA07PrivateF0Vs6UInt64VtKcfc":{"name":"init(id:signatureKey:timestamp:)","abstract":"<p>Create a signed pre key.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vvp":{"name":"keyPair","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vvp":{"name":"protoObject","abstract":"<p>Convert the signed pre key to a ProtoBuf object</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV4fromAcA0a1_deF0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signed pre key from a ProtoBuf object.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two signed pre keys for equality.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vvp":{"name":"id","abstract":"<p>The id of the pre key</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vvp":{"name":"key","abstract":"<p>The key pair of the pre key</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV2id3keyACs6UInt32V_AA0fE0Vtcfc":{"name":"init(id:key:)","abstract":"<p>Create a public pre key from the components</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVvp":{"name":"protoObject","abstract":"<p>Convert the public pre key to a ProtoBuf object</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV4fromAcA0a1_dE0V0F4PartV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a public pre key from a ProtoBuf object.</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vvp":{"name":"preKeyId","abstract":"<p>The id of the pre key that was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgvp":{"name":"preKeyPublic","abstract":"<p>The pre key, if a pre key was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vvp":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vvp":{"name":"signedPreKeyPublic","abstract":"<p>The signed pre key that was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVvp":{"name":"signedPreKeySignature","abstract":"<p>The signature of the signed pre key</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vvp":{"name":"identityKey","abstract":"<p>The identity key of the remote party</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Id0gE6Public06signeddeH00jdeI00jdE9Signature08identityE0ACs6UInt32V_AA0iE0VSgAkM10Foundation4DataVAMtcfc":{"name":"init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AcA0cdE6PublicV_AA0c6SigneddeJ0VAA0jE0Vtcfc":{"name":"init(preKey:signedPreKey:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AC10Foundation4DataV_A2ItKcfc":{"name":"init(preKey:signedPreKey:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvpZ":{"name":"mediumMaxValue","abstract":"<p>The upper bound (inclusive) of the pre key id</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVvp":{"name":"publicKey","abstract":"<p>The public data of the pre key (id and public key)</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vvp":{"name":"privateKey","abstract":"<p>The private key of the pre key</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV2id7keyPairACs6UInt32V_AA0eH0Vtcfc":{"name":"init(id:keyPair:)","abstract":"<p>Create a pre key from the components</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV5indexACs6UInt32V_tKcfc":{"name":"init(index:)","abstract":"<p>Create a new pre key with the index.</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vvp":{"name":"keyPair","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vvp":{"name":"protoObject","abstract":"<p>Convert the pre key to a ProtoBuf object</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV4fromAcA0a1_dE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a pre key from a ProtoBuf object.</p>","parent_name":"SessionPreKey"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV5storexvp":{"name":"store","abstract":"<p>The store to save and retrieve keys from</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzvp":{"name":"remoteAddress","abstract":"<p>The address of the other party</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV13remoteAddress5storeACyxG0F0Qz_xtcfc":{"name":"init(remoteAddress:store:)","abstract":"<p>Constructs a session builder.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7process06preKeyA7Message13sessionRecords6UInt32VSgAA03PregaH0V_AA0cJ0CtKF":{"name":"process(preKeySignalMessage:sessionRecord:)","abstract":"<p>Build a new session from a received PreKeySignalMessage.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LL06preKeyA9MessageV36records6UInt32VSgAA03PreoaP0V_AA0C6RecordCtKF":{"name":"process(preKeySignalMessageV3:record:)","abstract":"<p>Build a new session from a received PreKeySignalMessage.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7process12preKeyBundleyAA0c3PregH0V_tKF":{"name":"process(preKeyBundle:)","abstract":"<p>Build a new session from a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SessionPreKeyBundle.html\">SessionPreKeyBundle</a></code> retrieved from a server.</p>","parent_name":"SessionBuilder"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgvp":{"name":"preKeyId","abstract":"<p>The id of the pre key, if one was used</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vvp":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vvp":{"name":"baseKey","abstract":"<p>The base key used for the outgoing pre key message</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVvp":{"name":"protoObject","abstract":"<p>Create a ProtoBuf object for serialization.</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV4fromAcA0A8_SessionVABV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a pending pre key from a ProtoBuf object.</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two pending pre keys for equality.</p>","parent_name":"PendingPreKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvpZ":{"name":"infoMaterial","abstract":"<p>The info used when creating the keys from the seed</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ":{"name":"ivLength","abstract":"<p>The length of the initialization vector</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ":{"name":"cipherKeyLength","abstract":"<p>The length of the key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ":{"name":"secretLength","abstract":"<p>The combined length of iv and key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vvp":{"name":"iteration","abstract":"<p>The iteration of the message key in the chain</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVvp":{"name":"iv","abstract":"<p>The initialization vector</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVvp":{"name":"cipherKey","abstract":"<p>The encryption/decryption key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvp":{"name":"seed","abstract":"<p>The seed used to derive the key and iv</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV9iteration4seedACs6UInt32V_10Foundation4DataVtKcfc":{"name":"init(iteration:seed:)","abstract":"<p>Create a message key from the components.</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVvp":{"name":"protoObject","abstract":"<p>Convert the sender chain key to a ProtoBuf object</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV4fromAcA0a1_cE5StateVABV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a message key from a ProtoBuf object.</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender message keys for equality.</p>","parent_name":"SenderMessageKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ":{"name":"messageKeySeed","abstract":"<p>The seed value for the message key when deriving the next key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ":{"name":"chainKeySeed","abstract":"<p>The seed value for the chain key when deriving the next key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vvp":{"name":"iteration","abstract":"<p>The current iteration of the chain</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVvp":{"name":"chainKey","abstract":"<p>The current chain key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV9iteration05chainE0ACs6UInt32V_10Foundation4DataVtcfc":{"name":"init(iteration:chainKey:)","abstract":"<p>Create a new chain key from the components.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV07messageE0AA0c7MessageE0VyKF":{"name":"messageKey()","abstract":"<p>Advance the chain and return the generated message key.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVvp":{"name":"protoObject","abstract":"<p>Convert the sender chain key to a ProtoBuf object</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV4fromAcA0a1_cE5StateVABV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a chain key from a ProtoBuf object.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender chain keys for equality.</p>","parent_name":"SenderChainKey"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVvp":{"name":"ratchetKey","abstract":"<p>The key pair of the ratchet</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vvp":{"name":"chainKey","abstract":"<p>The current chain key of the ratchet</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV10ratchetKey05chainF0AcA0F4PairV_AA07RatchetdF0Vtcfc":{"name":"init(ratchetKey:chainKey:)","abstract":"<p>Create a sender chain from the components.</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vvp":{"name":"protoObject","abstract":"<p>The sender chain converted to a protobuf object</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV4fromAcA0A8_SessionV0D0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender chain from a protobuf object.</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender chains for equality.</p>","parent_name":"SenderChain"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvpZ":{"name":"keyInfo","abstract":"<p>Bytes used as input for the KDF</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivpZ":{"name":"secretSize","abstract":"<p>The number of bytes for the root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVvp":{"name":"key","abstract":"<p>The current root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV3keyAC10Foundation4DataV_tcfc":{"name":"init(key:)","abstract":"<p>Create a new root key from the components</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV11createChain05theircE003ourcE0AC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V_AA07PrivateE0VtKF":{"name":"createChain(theirRatchetKey:ourRatchetKey:)","abstract":"<p>Create a new root key and chain key.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV9protoData10Foundation0G0VyF":{"name":"protoData()","abstract":"<p>Return the serialized root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV4fromAC10Foundation4DataV_tcfc":{"name":"init(from:)","abstract":"<p>Deserialize a root key.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV1loiySbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two root keys.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two root keys for equality.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivpZ":{"name":"cipherKeyLength","abstract":"<p>The length of cipher keys in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivpZ":{"name":"macKeyLength","abstract":"<p>The length of the mac key in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivpZ":{"name":"ivLength","abstract":"<p>The length of the initialization vector in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivpZ":{"name":"derivedMessageSecretsSize","abstract":"<p>The length of cipher key, mac key, and iv</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVvp":{"name":"cipherKey","abstract":"<p>The cipher key to encrypt/decrypt a message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVvp":{"name":"macKey","abstract":"<p>The mac key of a message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVvp":{"name":"iv","abstract":"<p>The initialization vector</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vvp":{"name":"counter","abstract":"<p>The counter of the message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV6cipher3mac2iv7counterAC10Foundation4DataV_A2Js6UInt32VtKcfc":{"name":"init(cipher:mac:iv:counter:)","abstract":"<p>Create the message keys from the components</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV8materialAC10Foundation4DataV_tKcfc":{"name":"init(material:)","abstract":"<p>Create the message keys from generated bytes.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVvp":{"name":"protoObject","abstract":"<p>The message keys converted to a ProtoBuf object</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV4fromAcA0A8_SessionV5ChainV0D3KeyV_tKcfc":{"name":"init(from:)","abstract":"<p>Create message keys from a ProtoBuf object.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two message keys for equality.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ":{"name":"messageKeySeed","abstract":"<p>The seed used as input material for the KDF to derive the message keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ":{"name":"chainKeySeed","abstract":"<p>The seed used as input material for the KDF to derive the chain keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ":{"name":"keyMaterialSeed","abstract":"<p>The seed used as info material for the KDF to derive the message keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivpZ":{"name":"secretSize","abstract":"<p>The size of the chain key</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivpZ":{"name":"hashOutputSize","abstract":"<p>The size of the HKDF expand output</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVvp":{"name":"key","abstract":"<p>The current key of the ratchet chain, 32 byte</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV3key5indexAC10Foundation4DataV_s6UInt32Vtcfc":{"name":"init(key:index:)","abstract":"<p>Create a ratchet chain key from the components</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL4seed10Foundation4DataVAI_tKF":{"name":"getBaseMaterial(seed:)","abstract":"<p>Get the SHA256 HMAC of the seed.</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV11messageKeysAA0c7MessageG0VyKF":{"name":"messageKeys()","abstract":"<p>Get a set of message keys for the Ratchet</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV4nextACyKF":{"name":"next()","abstract":"<p>Return the next chain key</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vvp":{"name":"protoObject","abstract":"<p>The chain key converted to a ProtoBuf object</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV4fromAcA0A8_SessionV0D0V0dE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a chain key from a ProtoBuf object.</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalMessages for equality.</p>","parent_name":"RatchetChainKey"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivpZ":{"name":"derivedRootSecretsSize","abstract":"<p>The total number of bytes to derive when creating a new root and chain key</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvpZ":{"name":"iterationStartOffset","abstract":"<p>The offset for the expand iterations</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV13deriveSecrets8material4salt4info12outputLength10Foundation4DataVAK_A2KSitKFZ":{"name":"deriveSecrets(material:salt:info:outputLength:)","abstract":"<p>Derive new secrets from the KDF.</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL3prk4info12outputLength10Foundation4DataVAK_AKSitKFZ":{"name":"expand(prk:info:outputLength:)","abstract":"<p>Expand the bytes to create enough output bytes.</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV15chainAndRootKey8material4salt4infoAA07RatchetfG0V04rootG0_AA0k5ChainG0V0dG0t10Foundation4DataV_A2PtKFZ":{"name":"chainAndRootKey(material:salt:info:)","abstract":"<p>Create a new chain key and root key.</p>","parent_name":"HKDF"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivpZ":{"name":"macLength","abstract":"<p>The length of the MAC for a message in bytes</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vvp":{"name":"senderRatchetKey","abstract":"<p>The public key of the sending ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV7counters6UInt32Vvp":{"name":"counter","abstract":"<p>The current counter of the ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vvp":{"name":"previousCounter","abstract":"<p>The counter of the previous ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVvp":{"name":"cipherText","abstract":"<p>The encrypted text</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVvp":{"name":"mac","abstract":"<p>The mac of the message</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV6macKey013senderRatchetE07counter15previousCounter10cipherText0f8IdentityE008receivermE0AC10Foundation4DataV_AA06PublicE0Vs6UInt32VAqm2OtKcfc":{"name":"init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)","abstract":"<p>Create a SignalMessage from its components.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL17senderIdentityKey08receiveroP003macP07message10Foundation4DataVAA06PublicP0V_An2LtKF":{"name":"getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)","abstract":"<p>Calculate the MAC of the message. The length of the MAC is specified by <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivpZ\">SignalMessage.macLength</a></code></p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9verifyMac17senderIdentityKey08receivergH003macH0SbAA06PublicH0V_AI10Foundation4DataVtKF":{"name":"verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)","abstract":"<p>Verify the MAC of the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV04baseC0AA010CipherTextC0VyKF":{"name":"baseMessage()","abstract":"<p>Return the serialized version of the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vvp":{"name":"protoObject","abstract":"<p>Convert signal message to a ProtoBuf object</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV4fromAcA0a1_aC0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signal message from a ProtoBuf object.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9protoData10Foundation0E0VyKF":{"name":"protoData()","abstract":"<p>Serialize the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signal message from serialized data.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalMessages for equality.</p>","parent_name":"SignalMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vvp":{"name":"keyId","abstract":"<p>The id of the key that was used</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vvp":{"name":"iteration","abstract":"<p>The iteration of the chain key</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVvp":{"name":"cipherText","abstract":"<p>The encrypted ciphertext</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVvp":{"name":"signature","abstract":"<p>The signature of the message</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV04baseE0AA010CipherTextE0VyKF":{"name":"baseMessage()","abstract":"<p>Return the message serialized</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV5keyId9iteration10cipherText09signatureD0ACs6UInt32V_AI10Foundation4DataVAA07PrivateD0VtKcfc":{"name":"init(keyId:iteration:cipherText:signatureKey:)","abstract":"<p>Create a <code>SenderKeyMessage</code> from the components.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV6verify09signatureD0SbAA06PublicD0V_tKF":{"name":"verify(signatureKey:)","abstract":"<p>Verify that the signature matches the message.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vvp":{"name":"protoObject","abstract":"<p>Convert the sender key message to a ProtoBuf object</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV4fromAcA0a1_cdE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender key message from a ProtoBuf object.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9protoData10Foundation0G0VyKF":{"name":"protoData()","abstract":"<p>Serialize the message.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender key message from serialized data.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vvp":{"name":"id","abstract":"<p>The id of the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vvp":{"name":"iteration","abstract":"<p>The current chain iteration of the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVvp":{"name":"chainKey","abstract":"<p>The chain key used for the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vvp":{"name":"signatureKey","abstract":"<p>The signature key used for signing the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV04baseF0AA010CipherTextF0VyKF":{"name":"baseMessage()","abstract":"<p>Create a serialized message from the distribution message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2id9iteration05chainD009signatureD0ACs6UInt32V_AI10Foundation4DataVAA06PublicD0Vtcfc":{"name":"init(id:iteration:chainKey:signatureKey:)","abstract":"<p>Create a distribution message.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two distribution messages.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vvp":{"name":"protoObject","abstract":"<p>Convert the distribution message to a ProtoBuf object</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV4fromAcA0a1_cdeF0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a distribution message from a ProtoBuf object.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgvp":{"name":"preKeyId","abstract":"<p>The pre key id of the one time key from the other party</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vvp":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key used for the message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vvp":{"name":"baseKey","abstract":"<p>The base key used for the message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vvp":{"name":"identityKey","abstract":"<p>The identity key of the sender</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vvp":{"name":"message","abstract":"<p>The message included in the pre key message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV03preD2Id06signedcdG004baseD008identityD07messageACs6UInt32VSg_AjA06PublicD0VAmA0aE0Vtcfc":{"name":"init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)","abstract":"<p>Create a new pre key message.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV04baseE0AA010CipherTextE0VyKF":{"name":"baseMessage()","abstract":"<p>Get the serialized message.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV13asProtoObjectAA0a1_cdaE0VyKF":{"name":"asProtoObject()","abstract":"<p>Convert the message to a ProtoBuf object for serialization.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV4fromAcA0a1_cdaE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a <code>PreKeySignalMessage</code> from a ProtoBuf object.</p>","parent_name":"PreKeySignalMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOvp":{"name":"type","abstract":"<p>The type of the message</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVvp":{"name":"data","abstract":"<p>The encrypted message</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4type4dataAcA0cD4TypeO_10Foundation4DataVtcfc":{"name":"init(type:data:)","abstract":"<p>Create a message from the components.</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol0B18BufferSerializableP9protoData10Foundation0F0VyKF":{"name":"protoData()","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a <code>CipherTextMessage</code> from a serialized record.</p>","parent_name":"CipherTextMessage"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivpZ":{"name":"length","abstract":"<p>The length of a fingerprint</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvpZ":{"name":"version","abstract":"<p>The version of the fingerprint</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVvp":{"name":"localFingerprint","abstract":"<p>The fingerprint data of the local party</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVvp":{"name":"remoteFingerprint","abstract":"<p>The fingerprint data of the remote party</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc":{"name":"init(localFingerprint:remoteFingerprint:)","abstract":"<p>Create a new ScannableFingerprint Version 1.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV4fromAcA0a1_D0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a fingerprint from a ProtoBuf object.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vvp":{"name":"protoObject","abstract":"<p>The fingerprint converted to a ProtoBuf object</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV7matchesySbACF":{"name":"matches(_:)","abstract":"<p>Compare if fingerprints match, i.e. the local fingerprint matches the remote fingerprint and vice versa.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two Fingerprints for equality.</p>","parent_name":"ScannableFingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV7versions5UInt8VvpZ":{"name":"version","abstract":"<p>The version of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV6lengthSivpZ":{"name":"length","abstract":"<p>The length of a fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivpZ":{"name":"iterations","abstract":"<p>The number of iterations for the creation of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vvp":{"name":"displayable","abstract":"<p>The displayable part of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vvp":{"name":"scannable","abstract":"<p>The scannable part of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV11displayTextSSvp":{"name":"displayText","abstract":"<p>The string to show the user</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_10Foundation4DataVSSAKSitKcfc":{"name":"init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_AA9PublicKeyVSSAJSitKcfc":{"name":"init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D12IdentityList06remoteeF00igH010iterationsACSS_SayAA9PublicKeyVGSSAKSitKcfc":{"name":"init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV7matchesySb10Foundation4DataVKF":{"name":"matches(_:)","abstract":"<p>Compare the fingerprint to scanned fingerprint data.</p>","parent_name":"Fingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV5localSSvp":{"name":"local","abstract":"<p>Fingerprint String of the local device</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV6remoteSSvp":{"name":"remote","abstract":"<p>Fingerprint String of the remote device</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSvp":{"name":"displayText","abstract":"<p>Displaytext</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV5local6remoteACSS_SStcfc":{"name":"init(local:remote:)","abstract":"<p>Create a displayable fingerprint from local and remote fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc":{"name":"init(localFingerprint:remoteFingerprint:)","abstract":"<p>Create a displayable fingerprint from local and remote fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELL11fingerprintSS10Foundation4DataV_tFZ":{"name":"createDisplayString(fingerprint:)","abstract":"<p>Create a display string from fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two displayable fingerprints for equality.</p>","parent_name":"DisplayableFingerprint"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvpZ":{"name":"provider","abstract":"<p>This variable can be set to provide a custom crypto provider.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6random5bytes10Foundation4DataVSi_tKFZ":{"name":"random(bytes:)","abstract":"<p>Create a number of secure random bytes.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItKFZ":{"name":"hmacSHA256(for:with:)","abstract":"<p>Authenticate a message with the HMAC based on SHA256.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6sha5123for10Foundation4DataVAH_tKFZ":{"name":"sha512(for:)","abstract":"<p>Return the SHA512 message digest.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with the given scheme.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with the given scheme.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV23generateIdentityKeyPair10Foundation4DataVyKFZ":{"name":"generateIdentityKeyPair()","abstract":"<p>Generate an identity key pair. Clients should only do this once, at install time.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV15generatePreKeys5start5countSayAA07SessionE3KeyVGs6UInt32V_SitKFZ":{"name":"generatePreKeys(start:count:)","abstract":"<p>Generate a list of PreKeys.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV20generateSignedPreKey08identityG02id9timestampAA07SessionefG0VAA07PrivateG0V_s6UInt32Vs6UInt64VtKFZ":{"name":"generateSignedPreKey(identityKey:id:timestamp:)","abstract":"<p>Generate a signed pre key.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV19generateSenderKeyIds6UInt32VyKFZ":{"name":"generateSenderKeyId()","abstract":"<p>Generate a sender key ID.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV17generateSenderKey10Foundation4DataVyKFZ":{"name":"generateSenderKey()","abstract":"<p>Generate a sender key.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV24generateSenderSigningKeyAA0G4PairVyKFZ":{"name":"generateSenderSigningKey()","abstract":"<p>Generate a sender signing key pair</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoVACyc33_D8858E66F8480749A0F433B505F180AFLlfc":{"name":"init()","abstract":"<p>SignalCrypto only has static functions and there is no need to create any instances</p>","parent_name":"SignalCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV6random5bytes10Foundation4DataVSi_tKF":{"name":"random(bytes:)","abstract":"<p>Create a number of random bytes</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItF":{"name":"hmacSHA256(for:with:)","abstract":"<p>Create a HMAC authentication for a given message</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV6sha5123for10Foundation4DataVAH_tKF":{"name":"sha512(for:)","abstract":"<p>Create a SHA512 digest for a given message</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with AES</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with AES</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3cbc3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF":{"name":"process(cbc:key:iv:encrypt:)","abstract":"<p>Process (encrypt/decrypt) a message with AES in CBC mode and pkcs7 padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF":{"name":"encrypt(ctr:key:iv:)","abstract":"<p>Encrypt a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF":{"name":"decrypt(ctr:key:iv:)","abstract":"<p>Decrypt a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF":{"name":"process(ctr:key:iv:encrypt:)","abstract":"<p>Process (encrypt/decrypt) a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL4from5count10Foundation4DataVSv_SitF":{"name":"toArray(from:count:)","abstract":"<p>Create an array from an unsafe pointer.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoVACycfc":{"name":"init()","abstract":"<p>Create an instance.</p>","parent_name":"SignalCommonCrypto"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxvp":{"name":"store","abstract":"<p>The local data store to use for state information</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzvp":{"name":"remoteAddress","abstract":"<p>The address of the remote party</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV5store13remoteAddressACyxGx_0G0Qztcfc":{"name":"init(store:remoteAddress:)","abstract":"<p>Construct a session cipher for encrypt/decrypt operations on a session.","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF":{"name":"encrypt(_:)","abstract":"<p>Encrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypty10Foundation4DataVAA0D11TextMessageVKF":{"name":"decrypt(_:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt06preKeyA7Message10Foundation4DataVAA03PregaH0V_tKF":{"name":"decrypt(preKeySignalMessage:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt13signalMessage10Foundation4DataVAA0aG0V_tKF":{"name":"decrypt(signalMessage:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7process12preKeyBundleyAA0c3PregH0V_tKF":{"name":"process(preKeyBundle:)","abstract":"<p>Build a new session from a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SessionPreKeyBundle.html\">SessionPreKeyBundle</a></code> retrieved from a server.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV04loadC033_A7B7CE7E72D1FD6B1E024448F80198D3LLAA0C6RecordCyKF":{"name":"loadSession()","abstract":"<p>Load the session record for the remote address</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C6RecordC_AA0A7MessageVtKF":{"name":"decrypt(from:and:)","abstract":"<p>Try to decrypt a SignalMessage with one of the stored sessions in the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SessionRecord.html\">SessionRecord</a></code>. If a session can decrypt the message it will be promoted to the active session.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C5StateC_AA0A7MessageVtKF":{"name":"decrypt(from:and:)","abstract":"<p>Try to decrypt a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SignalMessage.html\">SignalMessage</a></code> with a specific <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SessionState.html\">SessionState</a></code>.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeral8chainKey7counterAA07RatchethI0VAA0C5StateC_AA06PublicX0VAA0z5ChainX0Vs6UInt32VtKF":{"name":"getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)","abstract":"<p>Retrieve previously stored message keys or create them from the chain.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeralAA07RatchethI0VAA0C5StateC_AA06PublicI0VtKF":{"name":"getOrCreateChainKey(state:theirEphemeral:)","abstract":"<p>Retrieve the chain key for a state and receiver chain key.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys9plaintext10Foundation4DataVAA014RatchetMessageR0V_AJtKF":{"name":"getCiphertext(messageKeys:plaintext:)","abstract":"<p>Encrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys10ciphertext10Foundation4DataVAA014RatchetMessageR0V_AJtKF":{"name":"getPlaintext(messageKeys:ciphertext:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxvp":{"name":"store","abstract":"<p>The store where the keys are stored</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzvp":{"name":"address","abstract":"<p>The id of the remote client</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7address5storeACyxG0C7AddressQz_xtcfc":{"name":"init(address:store:)","abstract":"<p>Create a GroupCipher.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7process7messageyAA0D11TextMessageV_tKF":{"name":"process(message:)","abstract":"<p>Create a GroupCipher.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7process19distributionMessageyAA021SenderKeyDistributionG0V_tKF":{"name":"process(distributionMessage:)","abstract":"<p>Create a new group session from a distribution message.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV13createSessionAA28SenderKeyDistributionMessageVyKF":{"name":"createSession()","abstract":"<p>Create a new session and generate a distribution message.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF":{"name":"encrypt(_:)","abstract":"<p>Encrypt a message for the recipient.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7decrypt10ciphertext10Foundation4DataVAA16SenderKeyMessageV_tKF":{"name":"decrypt(ciphertext:)","abstract":"<p>Decrypt a message from the group member.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV10loadRecord33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLAA09SenderKeyF0CyKF":{"name":"loadRecord()","abstract":"<p>Load the record for the remote address.</p>","parent_name":"GroupCipher"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvpZ":{"name":"basePoint","abstract":"<p>The base point for the Curve25519 elliptic curve</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvp":{"name":"key","abstract":"<p>The key material of length <code>KeyPair.keyLength</code></p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV5pointAC10Foundation4DataV_tKcfc":{"name":"init(point:)","abstract":"<p>Create a public key from a UInt8 array. Checks","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV07privateD0AcA07PrivateD0V_tKcfc":{"name":"init(privateKey:)","abstract":"<p>Generate a public key from a given private key.","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV6verify9signature3forSb10Foundation4DataV_AItF":{"name":"verify(signature:for:)","abstract":"<p>Verify that the signature corresponds to the message.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV6verify12vrfSignature3for10Foundation4DataVAI_AItKF":{"name":"verify(vrfSignature:for:)","abstract":"<p>Verify that the vrf signature corresponds to the message.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV18calculateAgreement07privateD010Foundation4DataVAA07PrivateD0V_tKF":{"name":"calculateAgreement(privateKey:)","abstract":"<p>Calculate the shared agreement between the given private key and the public key.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV1loiySbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two public keys.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two public keys for equality. The keys are equal if all bytes match.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVvp":{"name":"data","abstract":"<p>The serialized data of the public key</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a public key from a serialized record.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV9protoData10Foundation0F0VyF":{"name":"protoData()","abstract":"<p>Return a byte representation of the public key</p>","parent_name":"PublicKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVvp":{"name":"key","abstract":"<p>The key material of length <code>KeyPair.keyLength</code></p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV5pointAC10Foundation4DataV_tKcfc":{"name":"init(point:)","abstract":"<p>Create a private key from a curve point.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV15unverifiedPointAC10Foundation4DataV_tKcfc":{"name":"init(unverifiedPoint:)","abstract":"<p>Create a private key. Only checks the length, nothing else.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVACyKcfc":{"name":"init()","abstract":"<p>Create a new random private key.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4sign7message10Foundation4DataVAH_tKF":{"name":"sign(message:)","abstract":"<p>Calculate the signature for the given message.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV7signVRF7message10Foundation4DataVAH_tKF":{"name":"signVRF(message:)","abstract":"<p>Calculates a unique Curve25519 signature for the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV18calculateAgreement06publicD010Foundation4DataVAA06PublicD0V_tKF":{"name":"calculateAgreement(publicKey:)","abstract":"<p>Calculate the shared agreement between the private key and the given public key.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVvp":{"name":"data","abstract":"<p>The serialized data of the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV7keyPairAA0dF0VyKF":{"name":"keyPair()","abstract":"<p>Create the corresponding key pair for the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV06publicD0AA06PublicD0VyKF":{"name":"publicKey()","abstract":"<p>Create the corresponding public key for the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two private keys for equality.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a private key from a byte record.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV9protoData10Foundation0F0VyF":{"name":"protoData()","abstract":"<p>Convert the key to serialized data</p>","parent_name":"PrivateKey"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvpZ":{"name":"DJBType","abstract":"<p>Type declaration (only needed for compatibility)</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vvp":{"name":"publicKey","abstract":"<p>The public part of the key pair</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vvp":{"name":"privateKey","abstract":"<p>The private part of the key pair</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV06publicC007privateC0AcA06PublicC0V_AA07PrivateC0Vtcfc":{"name":"init(publicKey:privateKey:)","abstract":"<p>Create a key pair from existing public and private keys</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV07privateC0AcA07PrivateC0V_tKcfc":{"name":"init(privateKey:)","abstract":"<p>Create a key pair from existing public and private keys</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairVACyKcfc":{"name":"init()","abstract":"<p>Create a new random key pair.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV4sign7message10Foundation4DataVAH_tKF":{"name":"sign(message:)","abstract":"<p>Calculate the signature for the given message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV7signVRF7message10Foundation4DataVAH_tKF":{"name":"signVRF(message:)","abstract":"<p>Calculates a unique Curve25519 signature for the private key</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV18calculateAgreement06publicC010Foundation4DataVAA06PublicC0V_tKF":{"name":"calculateAgreement(publicKey:)","abstract":"<p>Calculate the shared agreement between the private key and the given public key.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV6verify9signature3forSb10Foundation4DataV_AItF":{"name":"verify(signature:for:)","abstract":"<p>Verify that the signature corresponds to the message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV6verify12vrfSignature3for10Foundation4DataVAI_AItKF":{"name":"verify(vrfSignature:for:)","abstract":"<p>Verify that the vrf signature corresponds to the message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV18calculateAgreement07privateC010Foundation4DataVAA07PrivateC0V_tKF":{"name":"calculateAgreement(privateKey:)","abstract":"<p>Calculate the shared agreement between the given private key and the public key.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV4fromAcA0a1_cD0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a key pair from a protobuf object.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vvp":{"name":"protoObject","abstract":"<p>The key pair converted to a ProtoBuf object</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two key pairs for equality. The keys are equal if public and private keys match.</p>","parent_name":"KeyPair"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVvp":{"name":"signature","abstract":"<p>The signature data</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVvp":{"name":"vrfOutput","abstract":"<p>The output of the VRF verification</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9signature9vrfOutputAC10Foundation4DataV_AHtcfc":{"name":"init(signature:vrfOutput:)","abstract":"<p>Create a new signature</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV1loiySbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two consistency signatures.</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two consistency signatures for equality.</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVvp":{"name":"signature","abstract":"<p>The consistency signature</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vvp":{"name":"generation","abstract":"<p>The generation of the consistency message</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV10commitment15identitykeyPairAcA0cD12CommitmentV0V_AA03KeyH0VtKcfc":{"name":"init(commitment:identitykeyPair:)","abstract":"<p>Create a new consistency message.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vvp":{"name":"object","abstract":"<p>The message converted to a protocol buffer object.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAcA0a1_cd4CodeE0V_AA0cD12CommitmentV0VAA06PublicI0VtKcfc":{"name":"init(from:commitment:identityKey:)","abstract":"<p>Create a consistency message from a protocol buffer object.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV4data10Foundation4DataVyKF":{"name":"data()","abstract":"<p>The message serialized through a protocol buffer.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAC10Foundation4DataV_AA0cD12CommitmentV0VAA06PublicI0VtKcfc":{"name":"init(from:commitment:identityKey:)","abstract":"<p>Create a consistency message from a serialized protocol buffer record.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvpZ":{"name":"codeVersion","abstract":"<p>The version of the consistency implementation</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvpZ":{"name":"version","abstract":"<p>An identifier used when hashing the identity keys</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vvp":{"name":"generation","abstract":"<p>The generation of the message</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVvp":{"name":"serialized","abstract":"<p>The hash of the public keys</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generation15identityKeyListACs6UInt32V_SayAA06PublicI0VGtKcfc":{"name":"init(generation:identityKeyList:)","abstract":"<p>Create a new commitment.</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCode3forSSSayAA0cD9SignatureVG_tKF":{"name":"generateCode(for:)","abstract":"<p>Generate a String which can be used to compare the consistency across multiple devices.","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html":{"name":"DeviceConsistencyCommitmentV0","abstract":"<p>Create commitments that are hashes of the identity keys of different devices."},"Structs/DeviceConsistencyMessage.html":{"name":"DeviceConsistencyMessage","abstract":"<p>Device consistency messages can be sent between multiple devices to verify that the"},"Structs/DeviceConsistencySignature.html":{"name":"DeviceConsistencySignature","abstract":"<p>A signature used for device consistency checks</p>"},"Structs/KeyPair.html":{"name":"KeyPair","abstract":"<p>A pair of public and private key for elliptic curve cryptopgraphy</p>"},"Structs/PrivateKey.html":{"name":"PrivateKey","abstract":"<p>The private part of an elliptic curve key pair."},"Structs/PublicKey.html":{"name":"PublicKey","abstract":"<p>The public part of an elliptic curve key pair."},"Structs/GroupCipher.html":{"name":"GroupCipher","abstract":"<p>Use a <code>GroupCipher</code> to encrypt and decrypt group messages for already"},"Structs/SessionCipher.html":{"name":"SessionCipher","abstract":"<p>The main entry point for Signal Protocol encrypt/decrypt operations.</p>"},"Structs/SignalCommonCrypto.html":{"name":"SignalCommonCrypto","abstract":"<p>Implementation of the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/SignalCryptoProvider.html\">SignalCryptoProvider</a></code> protocol using"},"Structs/SignalCrypto.html":{"name":"SignalCrypto","abstract":"<p>The <code>SignalCrypto</code> struct exposes all necessary cryptocraphic functions to the protocol."},"Structs/DisplayableFingerprint.html":{"name":"DisplayableFingerprint","abstract":"<p>A Fingerprint to verify the keys specifically for displaying to the user</p>"},"Structs/Fingerprint.html":{"name":"Fingerprint","abstract":"<p>A fingerprint can be used to ensure that the identities of a communication channel"},"Structs/ScannableFingerprint.html":{"name":"ScannableFingerprint","abstract":"<p>A fingerprint optimised to be scanned through e.g. a QR Code</p>"},"Structs/CipherTextMessage.html":{"name":"CipherTextMessage","abstract":"<p>A <code>CipherTextMessage</code> encapsulates an encrypted message and the type-</p>"},"Structs/PreKeySignalMessage.html":{"name":"PreKeySignalMessage","abstract":"<p>A <code>PreKeySignalMessage</code> can be used to establish a new session.</p>"},"Structs/SenderKeyDistributionMessage.html":{"name":"SenderKeyDistributionMessage","abstract":"<p><code>SenderKeyDistributionMessage</code>s are used to establish group sessions.</p>"},"Structs/SenderKeyMessage.html":{"name":"SenderKeyMessage","abstract":"<p>A sender key message is used to send an encrypted message in an existing group session.</p>"},"Structs/SignalMessage.html":{"name":"SignalMessage","abstract":"<p>A <code>SignalMessage</code> is used to send an encrypted message in an established session.</p>"},"Structs/HKDF.html":{"name":"HKDF","abstract":"<p>The Key derivation function used for the Ratchet.</p>"},"Structs/RatchetChainKey.html":{"name":"RatchetChainKey","abstract":"<p>A chain key for the ratchet.</p>"},"Structs/RatchetMessageKeys.html":{"name":"RatchetMessageKeys","abstract":"<p>The keys needed to encrypt/decrypt a message</p>"},"Structs/RatchetRootKey.html":{"name":"RatchetRootKey","abstract":"<p>A root key is within a ratchet to derive new sender and receiver chain keys.</p>"},"Structs/SenderChain.html":{"name":"SenderChain","abstract":"<p>The sender chain of a ratchet used to encrypt messages for sending.</p>"},"Structs/SenderChainKey.html":{"name":"SenderChainKey","abstract":"<p>A key in the sender chain.</p>"},"Structs/SenderMessageKey.html":{"name":"SenderMessageKey","abstract":"<p>A message key in a chain to encrypt/decrypt messages</p>"},"Structs/PendingPreKey.html":{"name":"PendingPreKey","abstract":"<p>A pre key sent out as a pre key message, until a message is received from the other party</p>"},"Structs/SessionBuilder.html":{"name":"SessionBuilder","abstract":"<p>Session builder is responsible for setting up encrypted sessions."},"Structs/SessionPreKey.html":{"name":"SessionPreKey","abstract":"<p>A pre key used to esatblish a session. A unique pre key is used for"},"Structs/SessionPreKeyBundle.html":{"name":"SessionPreKeyBundle","abstract":"<p>Pre key bundles are used to establish new sessions.</p>"},"Structs/SessionPreKeyPublic.html":{"name":"SessionPreKeyPublic","abstract":"<p>A pre key used to esatblish a session. A unique pre key is used for"},"Structs/SessionSignedPreKey.html":{"name":"SessionSignedPreKey","abstract":"<p>A signed pre key is used as part of a session bundle to establish a new session."},"Structs/SessionSignedPreKeyPublic.html":{"name":"SessionSignedPreKeyPublic","abstract":"<p>A public signed pre key is used as part of a session bundle to establish a new session."},"Structs/SymmetricParameters.html":{"name":"SymmetricParameters","abstract":"<p>All parameters needed to establish a session</p>"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP06signeddE03for10Foundation4DataVs6UInt32V_tKF":{"name":"signedPreKey(for:)","abstract":"<p>Provide a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP5store06signeddE03fory10Foundation4DataV_s6UInt32VtKF":{"name":"store(signedPreKey:for:)","abstract":"<p>Store a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP08containscdE03forSbs6UInt32V_tKF":{"name":"containsSignedPreKey(for:)","abstract":"<p>Indicate if a Signed Pre Key exists for an id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP06removecdE03forys6UInt32V_tKF":{"name":"removeSignedPreKey(for:)","abstract":"<p>Remove a Signed Pre Key.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP6allIdsSays6UInt32VGyKF":{"name":"allIds()","abstract":"<p>Get all Ids for the SignedPreKeys in the store.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vvp":{"name":"lastId","abstract":"<p>The id of the last SignedPreKey that was stored.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStorePAAE5store06signeddE0yAA07SessioncdE0V_tKF":{"name":"store(signedPreKey:)","abstract":"<p>Store a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP04loadC03for10Foundation4DataVSg7AddressQz_tKF":{"name":"loadSession(for:)","abstract":"<p>Load a session for a given address.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP5store7session3fory10Foundation4DataV_7AddressQztKF":{"name":"store(session:for:)","abstract":"<p>Store a session record for a remote client.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP08containsC03forSb7AddressQz_tF":{"name":"containsSession(for:)","abstract":"<p>Indicate if a record exists for the client address</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP06deleteC03fory7AddressQz_tKF":{"name":"deleteSession(for:)","abstract":"<p>Delete a session for a remote client.</p>","parent_name":"SessionStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7AddressQa":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"SenderKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP06senderD03for10Foundation4DataVSg7AddressQz_tF":{"name":"senderKey(for:)","abstract":"<p>Returns a copy of the sender key record corresponding to the address tuple.</p>","parent_name":"SenderKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP5store06senderD03fory10Foundation4DataV_7AddressQztKF":{"name":"store(senderKey:for:)","abstract":"<p>Stores the sender key record.</p>","parent_name":"SenderKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP03preD03for10Foundation4DataVs6UInt32V_tKF":{"name":"preKey(for:)","abstract":"<p>Provide a Pre Key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP5store03preD03fory10Foundation4DataV_s6UInt32VtKF":{"name":"store(preKey:for:)","abstract":"<p>Store a pre key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP08containscD03forSbs6UInt32V_tF":{"name":"containsPreKey(for:)","abstract":"<p>Indicate if a pre key exists for an id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP06removecD03forys6UInt32V_tKF":{"name":"removePreKey(for:)","abstract":"<p>Remove a pre key.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vvp":{"name":"lastId","abstract":"<p>Return the id of the last stored pre key.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStorePAAE5store03preD0yAA07SessioncD0V_tKF":{"name":"store(preKey:)","abstract":"<p>Store a pre key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa":{"name":"IdentityKeyStoreType","abstract":"<p>The type of the identity key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa":{"name":"SessionStoreType","abstract":"<p>The type of the session key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzvp":{"name":"identityKeyStore","abstract":"<p>The Identity Key store that stores the records for the identity key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pvp":{"name":"preKeyStore","abstract":"<p>The Pre Key store that stores the records for the pre key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzvp":{"name":"sessionStore","abstract":"<p>The Session store that stores the records for the session module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pvp":{"name":"signedPreKeyStore","abstract":"<p>The Signed Pre Key store that stores the records for the signed pre key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE021signatureWithIdentityC07message10Foundation4DataVAH_tKF":{"name":"signatureWithIdentityKey(message:)","abstract":"<p>Sign a message with the identity key.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE18updateSignedPrekey9timestamp10Foundation4DataVs6UInt64V_tKF":{"name":"updateSignedPrekey(timestamp:)","abstract":"<p>Create a signed pre key with the given id and store it.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE13createPreKeys5countSay10Foundation4DataVGSi_tKF":{"name":"createPreKeys(count:)","abstract":"<p>Create a number of pre keys and store them.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE11fingerprint3for12localAddressAA11FingerprintV0H0Qz_AJtKF":{"name":"fingerprint(for:localAddress:)","abstract":"<p>Create a fingerprint to compare keys with someone.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE4sign7message10Foundation4DataVAH_tKF":{"name":"sign(message:)","abstract":"<p>Sign a message with the identity key.</p>","parent_name":"KeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP03getcD4Data10Foundation0G0VyKF":{"name":"getIdentityKeyData()","abstract":"<p>Return the identity key pair. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP8identity3for10Foundation4DataVSg7AddressQz_tKF":{"name":"identity(for:)","abstract":"<p>Return the identity for the given address, if there is any.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP5store8identity3fory10Foundation4DataVSg_7AddressQztKF":{"name":"store(identity:for:)","abstract":"<p>Store a remote client’s identity key as trusted.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE03getcD0AA0D4PairVyKF":{"name":"getIdentityKey()","abstract":"<p>Return the identity key pair. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE09getPubliccD010Foundation4DataVyKF":{"name":"getPublicIdentityKey()","abstract":"<p>Return the public identity key. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE03getcD10PublicData10Foundation0H0VyKF":{"name":"getIdentityKeyPublicData()","abstract":"<p>Return the public identity key data.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSb10Foundation4DataV_7AddressQztKF":{"name":"isTrusted(identity:for:)","abstract":"<p>Determine whether a remote client’s identity is trusted. The convention is","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSbAA06PublicD0V_7AddressQztKF":{"name":"isTrusted(identity:for:)","abstract":"<p>Determine whether a remote client’s identity is trusted. The convention is","parent_name":"IdentityKeyStore"},"Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP0C7AddressQa":{"name":"GroupAddress","abstract":"<p>The type that distinguishes different groups and devices/users</p>","parent_name":"GroupKeyStore"},"Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa":{"name":"SenderKeyStoreType","abstract":"<p>The type of the sender key store</p>","parent_name":"GroupKeyStore"},"Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP06senderdE006SenderdE4TypeQzvp":{"name":"senderKeyStore","abstract":"<p>The Sender Key store that stores the records for the sender key module</p>","parent_name":"GroupKeyStore"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP6random5bytes10Foundation4DataVSi_tKF":{"name":"random(bytes:)","abstract":"<p>Create a number of secure random bytes.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP10hmacSHA2563for4with10Foundation4DataVAI_AItKF":{"name":"hmacSHA256(for:with:)","abstract":"<p>Authenticate a message with the HMAC based on SHA256.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP6sha5123for10Foundation4DataVAH_tKF":{"name":"sha512(for:)","abstract":"<p>Return the SHA512 message digest.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with the given scheme.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with the given scheme.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html":{"name":"SignalCryptoProvider","abstract":"<p>The <code>SignalCryptoProvider</code> protocol can be implemented to provide a custom"},"Protocols/GroupKeyStore.html":{"name":"GroupKeyStore","abstract":"<p>A group key store stores the encryption keys for group messaging</p>"},"Protocols/IdentityKeyStore.html":{"name":"IdentityKeyStore","abstract":"<p>Implement the <code>IdentityKeyStore</code> protocol to handle the identity keys of the"},"Protocols/KeyStore.html":{"name":"KeyStore","abstract":"<p>Provide all local storage delegates.</p>"},"Protocols/PreKeyStore.html":{"name":"PreKeyStore","abstract":"<p>Implement the <code>PreKeyStore</code> protocol to handle the pre key storage of the"},"Protocols/SenderKeyStore.html":{"name":"SenderKeyStore","abstract":"<p>Implement the <code>SenderKeyStore</code> protocol to handle the sender key storage of the"},"Protocols/SessionStore.html":{"name":"SessionStore","abstract":"<p>Implement the <code>SessionStore</code> protocol to handle the session records of the"},"Protocols/SignedPreKeyStore.html":{"name":"SignedPreKeyStore","abstract":"<p>Implement the <code>SignedPreKeyStore</code> protocol to handle the signed pre key storage of the"},"Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF":{"name":"getLogicalKey(for:)","abstract":"<p>Serialize the list of public keys by first sorting the keys and then"},"Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF":{"name":"getFingerprint(identity:stableIdentifier:iterations:)","abstract":"<p>Calculate the fingerprint for identity data and identifier.</p>"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO6signalyA2CmF":{"name":"signal","abstract":"<p>A ‘normal’ message in an established session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO6preKeyyA2CmF":{"name":"preKey","abstract":"<p>A pre key message to establish a new session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO9senderKeyyA2CmF":{"name":"senderKey","abstract":"<p>A normal message in an established group session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionyA2CmF":{"name":"senderKeyDistribution","abstract":"<p>A distribution message to establish a new group session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO11descriptionSSvp":{"name":"description","abstract":"<p>A String representation of the type</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVvp":{"name":"data","abstract":"<p>Encode the type into a string</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO4fromACSg10Foundation4DataV_tcfc":{"name":"init(from:)","abstract":"<p>Extract the <code>CipherTextType</code> from data.</p>","parent_name":"CipherTextType"},"Enums/SignalEncryptionScheme.html#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5yA2CmF":{"name":"AES_CBCwithPKCS5","abstract":"<p>Encrypt/decrypt with AES in CBC mode with PKCS5 padding</p>","parent_name":"SignalEncryptionScheme"},"Enums/SignalEncryptionScheme.html#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingyA2CmF":{"name":"AES_CTRnoPadding","abstract":"<p>Encrypt/decrypt with AES in CTR mode with no padding</p>","parent_name":"SignalEncryptionScheme"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO7unknownyA2CmF":{"name":"unknown","abstract":"<p>Unknown errors should only be thrown of no other, more descriptive error type exists</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO05curveC0yA2CmF":{"name":"curveError","abstract":"<p>Curve25519 functions returned an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO07storageC0yA2CmF":{"name":"storageError","abstract":"<p>The local storage implementation produced an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageyA2CmF":{"name":"duplicateMessage","abstract":"<p>A message was received that was previously decrypted, or is too old</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO07invalidD0yA2CmF":{"name":"invalidType","abstract":"<p>The message type does not match</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO10invalidKeyyA2CmF":{"name":"invalidKey","abstract":"<p>An invalid key produced an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9invalidIVyA2CmF":{"name":"invalidIV","abstract":"<p>The initialization vector has the wrong length</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9invalidIdyA2CmF":{"name":"invalidId","abstract":"<p>The (key) id is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO10invalidMacyA2CmF":{"name":"invalidMac","abstract":"<p>The authentication failed</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO14invalidMessageyA2CmF":{"name":"invalidMessage","abstract":"<p>The message structure is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13invalidLengthyA2CmF":{"name":"invalidLength","abstract":"<p>The length of a message or stored object is incorrect</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13legacyMessageyA2CmF":{"name":"legacyMessage","abstract":"<p>A message from an older implementation of the protocol is received</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9noSessionyA2CmF":{"name":"noSession","abstract":"<p>No valid session exists for the address</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityyA2CmF":{"name":"untrustedIdentity","abstract":"<p>The identity of the recipient is untrusted</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureyA2CmF":{"name":"invalidSignature","abstract":"<p>The signature of the message is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufyA2CmF":{"name":"invalidProtoBuf","abstract":"<p>A serialized record or message is not in valid protocol buffer format</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchyA2CmF":{"name":"fPIdentityMismatch","abstract":"<p>The identity of two fingerprints is not equal</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16noCryptoProvideryA2CmF":{"name":"noCryptoProvider","abstract":"<p>There is no crypto provider set</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesyA2CmF":{"name":"noRandomBytes","abstract":"<p>Random bytes could not be created</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO04hmacC0yA2CmF":{"name":"hmacError","abstract":"<p>There was an error calculating the HMAC of a message</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO06digestC0yA2CmF":{"name":"digestError","abstract":"<p>There was an error calculating a digest</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO010encryptionC0yA2CmF":{"name":"encryptionError","abstract":"<p>An error occured during encryption</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO010decryptionC0yA2CmF":{"name":"decryptionError","abstract":"<p>An error occured during decryption</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html":{"name":"SignalErrorType","abstract":"<p>The different types of errors that can occur using the SignalProtocolSwift library.</p>"},"Enums/SignalEncryptionScheme.html":{"name":"SignalEncryptionScheme","abstract":"<p>Specifies the type of algorithm to use for encryption and decryption.</p>"},"Enums/CipherTextType.html":{"name":"CipherTextType","abstract":"<p>The <code>CipherTextType</code> enum describes the different types of messages.</p>"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivpZ":{"name":"maxReceiverChains","abstract":"<p>The maximum number of receiver chains for the remote party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvpZ":{"name":"keyInfo","abstract":"<p>The info material used for the derivation of chain and root keys</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vvp":{"name":"previousCounter","abstract":"<p>The last counter in the previous sender chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgvp":{"name":"localIdentity","abstract":"<p>The identity key of the local party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgvp":{"name":"remoteIdentity","abstract":"<p>The identity key of the remote party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgvp":{"name":"rootKey","abstract":"<p>The root key of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgvp":{"name":"senderChain","abstract":"<p>The sender chain of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGvp":{"name":"receiverChains","abstract":"<p>The receiver chains of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgvp":{"name":"pendingPreKey","abstract":"<p>An optional pending pre key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgvp":{"name":"aliceBaseKey","abstract":"<p>The base key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateCACycfc":{"name":"init()","abstract":"<p>Create a new sender state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13receiverChain3forAA08ReceiverF0CSgAA9PublicKeyV_tF":{"name":"receiverChain(for:)","abstract":"<p>Find a receiver chain for a sender key.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3add13receiverChainyAA08ReceiverG0C_tF":{"name":"add(receiverChain:)","abstract":"<p>Add a receiver chain to the state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3set8chainKey3foryAA012RatchetChainG0V_AA06PublicG0VtKF":{"name":"set(chainKey:for:)","abstract":"<p>Set the chain key for a given sender key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3set11messageKeys3foryAA014RatchetMessageG0V_AA9PublicKeyVtF":{"name":"set(messageKeys:for:)","abstract":"<p>Set the message keys for a given sender key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC17removeMessageKeys3for3andAA07RatchetfG0VSgAA9PublicKeyV_s6UInt32VtF":{"name":"removeMessageKeys(for:and:)","abstract":"<p>Remove message keys</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC16receiverChainKey3forAA07RatchetfG0VSgAA06PublicG0V_tF":{"name":"receiverChainKey(for:)","abstract":"<p>Find the chain key of a receiver chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3set16receiverChainKey3foryAA07RatchetgH0V_AA06PublicH0VtKF":{"name":"set(receiverChainKey:for:)","abstract":"<p>Set the chain key of a receiver chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC15aliceInitialize14ourIdentityKey0g4BaseI005theirhI00k9SignedPreI00k7OneTimemI00k7RatchetI0yAA0I4PairV_AlA06PublicI0VA2NSgANtKF":{"name":"aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13bobInitialize14ourIdentityKey0g9SignedPreI00g7OneTimekI00g7RatchetI005theirhI00o4BaseI0yAA0I4PairV_A2LSgAlA06PublicI0VAOtKF":{"name":"bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC19symmetricInitialize10parametersyAA19SymmetricParametersV_tKF":{"name":"symmetricInitialize(parameters:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LL6secretAA14RatchetRootKeyV04rootT0_AA0r5ChainT0V05chainT0t10Foundation4DataV_tKF":{"name":"calculateDerivedKeys(secret:)","abstract":"<p>Create the root and chain key from the secret.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vvp":{"name":"protoObject","abstract":"<p>The state converted to a protobuf object</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC4fromAcA0a1_C0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a state from a protobuf object.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare tow session states.</p>","parent_name":"SessionState"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivpZ":{"name":"archivedStatesMax","abstract":"<p>The maximum number of archived states</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCvp":{"name":"state","abstract":"<p>The current session</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGvp":{"name":"previousStates","abstract":"<p>A list of previous sessions, sorted by most recent</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC7isFreshSbvp":{"name":"isFresh","abstract":"<p>Indicates if the session was just created</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAcA0C5StateCSg_tcfc":{"name":"init(state:)","abstract":"<p>Create a new session record for a session.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC03hasC5State7baseKeySbAA06PublicH0V_tF":{"name":"hasSessionState(baseKey:)","abstract":"<p>Check if the session record contains a specific state.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC19archiveCurrentStateyyF":{"name":"archiveCurrentState()","abstract":"<p>Create a new state and archive the old one.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC12promoteState5stateyAA0cF0C_tF":{"name":"promoteState(state:)","abstract":"<p>Make a state the currently active state.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LL3foryAA9PublicKeyV_tF":{"name":"removeState(for:)","abstract":"<p>Remove a state from the previous states.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vvp":{"name":"protoObject","abstract":"<p>Convert the record to a ProtoBuf object for storage</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC4fromAcA0a1_D0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a session record from a ProtoBuf object.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two session records for equality.</p>","parent_name":"SessionRecord"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vvp":{"name":"ratchetKey","abstract":"<p>The current ratchet key</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vvp":{"name":"chainKey","abstract":"<p>The current chain key</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGvp":{"name":"messageKeys","abstract":"<p>The stored message keys for out-of-order messages</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10ratchetKey05chainF0AcA06PublicF0V_AA07RatchetdF0Vtcfc":{"name":"init(ratchetKey:chainKey:)","abstract":"<p>Create a receiver chain from the components.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC3add10messageKeyyAA18RatchetMessageKeysV_tF":{"name":"add(messageKey:)","abstract":"<p>Add a message key to the stored message keys.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC3has10messageKeySbAA18RatchetMessageKeysV_tF":{"name":"has(messageKey:)","abstract":"<p>Check if a message key already exists.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10messageKey3forAA18RatchetMessageKeysVSgs6UInt32V_tF":{"name":"messageKey(for:)","abstract":"<p>Get a message key if it exists.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC16removeMessageKey3forAA07RatchetF4KeysVSgs6UInt32V_tF":{"name":"removeMessageKey(for:)","abstract":"<p>Remove a message key and return it.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vvp":{"name":"protoObject","abstract":"<p>The receiver chain converted to a protobuf object</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC4fromAcA0A8_SessionV0D0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a receiver chain from a protobuf object.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two receiver chains for equality.</p>","parent_name":"ReceiverChain"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivpZ":{"name":"messageKeyMaximum","abstract":"<p>The maximum number of message keys stored</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vvp":{"name":"keyId","abstract":"<p>The current key id</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vvp":{"name":"chainKey","abstract":"<p>The chain key of the state used for key generation</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vvp":{"name":"signaturePublicKey","abstract":"<p>The signature key</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgvp":{"name":"signaturePrivateKey","abstract":"<p>The private part of the signature key, optional</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGvp":{"name":"messageKeys","abstract":"<p>Dictionary of message keys indexed by iteration</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC5keyId05chainD0015signaturePublicD00i7PrivateD0ACs6UInt32V_AA0c5ChainD0VAA0jD0VAA0kD0VSgtcfc":{"name":"init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)","abstract":"<p>Create a new session state.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC3add07messageD015removingOldKeysyAA0c7MessageD0V_SbtF":{"name":"add(messageKey:removingOldKeys:)","abstract":"<p>Add a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SenderMessageKey.html\">SenderMessageKey</a></code> to the keys which are stored to decrypt old (out of order) messages.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC07messageD03forAA0c7MessageD0VSgs6UInt32V_tF":{"name":"messageKey(for:)","abstract":"<p>Get the message key for the iteration, if it exists.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC20removeOldMessageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLyyF":{"name":"removeOldMessageKeys()","abstract":"<p>Remove old message keys if the number is higher then the maximum.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC06senderD03forAA0c7MessageD0Vs6UInt32V_tKF":{"name":"senderKey(for:)","abstract":"<p>Get the sender key for the iteration of the chain.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC4fromAcA0a1_cdE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a SenderKeyState from a ProtoBuf object.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vvp":{"name":"protoObject","abstract":"<p>The state converted to a ProtoBuf object</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare tow states for equality</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivpZ":{"name":"maxStates","abstract":"<p>The maximum number of different states that are saved</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGvp":{"name":"states","abstract":"<p>The states that are saved by the record, sorted by most recent</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgvp":{"name":"state","abstract":"<p>The active state is the most recent, if any states exist</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC7isEmptySbvp":{"name":"isEmpty","abstract":"<p>Indicate if there are any states in this record</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordCACycfc":{"name":"init()","abstract":"<p>Create a fresh session record without any states.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC5state3forAA0cD5StateCSgs6UInt32V_tF":{"name":"state(for:)","abstract":"<p>Get the state for an id.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC03setcD02id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dK0VtF":{"name":"setSenderKey(id:iteration:chainKey:signatureKeyPair:)","abstract":"<p>Set a new sender key state and delete all previous states.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD0015signaturePublicD00k7PrivateD0ys6UInt32V_AK10Foundation4DataVAA0lD0VAA0mD0VSgtF":{"name":"addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)","abstract":"<p>Add a new sender key state.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dL0VtF":{"name":"addState(id:iteration:chainKey:signatureKeyPair:)","abstract":"<p>Add a new sender key state.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vvp":{"name":"protoObject","abstract":"<p>The record converted to a ProtoBuf object for storage</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC4fromAcA0a1_cdE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a record from a ProtoBuf object.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two records.</p>","parent_name":"SenderKeyRecord"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOvp":{"name":"type","abstract":"<p>The error type</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC7messageSSSgvp":{"name":"message","abstract":"<p>A decribing message accompaning the error</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC5causeACSgvp":{"name":"cause","abstract":"<p>If the error occured in a subfunction, then this variable can be used to construct an error trace.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSvp":{"name":"function","abstract":"<p>The function were the error occured</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSvp":{"name":"file","abstract":"<p>The file that the error occured in</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC__5cause4file8functionAcA0aC4TypeO_SSSgACSgS2Stcfc":{"name":"init(_:_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code>.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_ACS2Stcfc":{"name":"init(_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code> using an already exisiting <code>SignalError</code> from a subroutine.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_s0C0_pS2Stcfc":{"name":"init(_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code> using an already exisiting <code>Error</code> from a subroutine.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC11descriptionSSvp":{"name":"description","abstract":"<p>A decription of the error, including all contained errors, without function and file names</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC16shortDescriptionSSvp":{"name":"shortDescription","abstract":"<p>A short decription of the error without the contained errors</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp":{"name":"longDescription","abstract":"<p>A decription of the error, including all contained errors, as well as function and file names</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSvp":{"name":"trace","abstract":"<p>The trace of the error which is used to build the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp\">longDescription</a></code></p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSvp":{"name":"localizedDescription","abstract":"<p>The description of the error</p>","parent_name":"SignalError"},"Classes/SignalError.html":{"name":"SignalError","abstract":"<p>All errors thrown by <code>SignalProtocolSwift</code> are <code>SignalError</code> objects.</p>"},"Classes/SenderKeyRecord.html":{"name":"SenderKeyRecord","abstract":"<p>Stores the states for a session.</p>"},"Classes/SenderKeyState.html":{"name":"SenderKeyState","abstract":"<p>A state of a group message session with a recipient,"},"Classes/ReceiverChain.html":{"name":"ReceiverChain","abstract":"<p>A receiver chain is the part of the ratchet that creates the message keys for the received messages.</p>"},"Classes/SessionRecord.html":{"name":"SessionRecord","abstract":"<p>The record of a session (and previous sessions) with another party.</p>"},"Classes/SessionState.html":{"name":"SessionState","abstract":"<p>A session state contains all data needed for communicating with a remote party.</p>"},"Classes.html":{"name":"Classes","abstract":"<p>The following classes are available globally.</p>"},"Enums.html":{"name":"Enumerations","abstract":"<p>The following enumerations are available globally.</p>"},"Functions.html":{"name":"Functions","abstract":"<p>The following functions are available globally.</p>"},"Protocols.html":{"name":"Protocols","abstract":"<p>The following protocols are available globally.</p>"},"Structs.html":{"name":"Structures","abstract":"<p>The following structures are available globally.</p>"},"Typealiases.html":{"name":"Type Aliases","abstract":"<p>The following type aliases are available globally.</p>"}} \ No newline at end of file diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/undocumented.json b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/undocumented.json index fd10459..6779c7b 100644 --- a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/undocumented.json +++ b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/Documents/undocumented.json @@ -1,19 +1,19 @@ { "warnings": [ { - "file": "/Users/User/Development/Github/LibSignalProtocolSwift/Sources/Elliptic Keys/PrivateKey.swift", - "line": 114, - "symbol": "PrivateKey.data", - "symbol_kind": "source.lang.swift.decl.var.instance", + "file": "/Users/user/Development/LibSignalProtocolSwift/Sources/Additional/SignalError.swift", + "line": 33, + "symbol": "SignalErrorType.invalidIV", + "symbol_kind": "source.lang.swift.decl.enumelement", "warning": "undocumented" }, { - "file": "/Users/User/Development/Github/LibSignalProtocolSwift/Sources/Elliptic Keys/PublicKey.swift", - "line": 122, - "symbol": "PublicKey.data", - "symbol_kind": "source.lang.swift.decl.var.instance", + "file": "/Users/user/Development/LibSignalProtocolSwift/Sources/LocalStorage/GroupKeyStore.swift", + "line": 11, + "symbol": "GroupKeyStore", + "symbol_kind": "source.lang.swift.decl.protocol", "warning": "undocumented" } ], - "source_directory": "/Users/User/Development/Github/LibSignalProtocolSwift" + "source_directory": "/Users/user/Development/LibSignalProtocolSwift" } \ No newline at end of file diff --git a/Documentation/docsets/SignalProtocol.docset/Contents/Resources/docSet.dsidx b/Documentation/docsets/SignalProtocol.docset/Contents/Resources/docSet.dsidx index 1a1610410e5d8cd76e44dd91b15462e426a30783..14079ca769ee8e5021c32c08495c5940ec1adf35 100644 GIT binary patch literal 167936 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 literal 167936 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%0Dem*7JXCxKM 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 diff --git a/Documentation/docsets/SignalProtocol.tgz b/Documentation/docsets/SignalProtocol.tgz index 8dc8da7ea693363c4a72f795cff378876de59ac1..e7a6441ecfe38f59060740226296b11412f31db6 100644 GIT binary patch literal 378514 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%0AL4Mnh3kWX<1vy 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∈cR!^bZtnBu^XT{S=5vSu2y|%UYNxb=bac`VJ6!+<l8cQkYGxs8# zg*@m#rjLcNEhwArb_q-~%x#P#zgC|%gP9+uKk_^C7&x~<tUM)qGp&2wF85$8m|Nvw zr=m9YeipGu!nv*-o`wD?br|`p!F?2T!p_dVoq8}gIhj(xS6knm;CBG7FlE9v9v#%l z2f%w}Vl9K1aB5^OQ?A@Pjd(68(+ygI%12;A2IjB=v0CboX7;hJ1v5up*aWo&Nq3Y7 zUi(m)cT9anv=Sn~_C0DsV*ZcM%z`;4l=n)<&qK(J_cJzs*7KhS4cw})Pn}-s41P6G z;wZ5`4Iw{ya`!H!D5R!xjx)~E`$98}fVWqkpElmt?b)9wwv<?3g_BsfOxsc}$Kz4F z{Nl=iXKkD&>6`F1(w8fNlg3&_5nF}h28A=fXROdC5S{ScjCC?nm)*GF1?l3pX4hUz zs;1QX=k}^gTi2hIJmj5K`AXcZd}yfF6+V&mFOeaJGy)q~O>E?F4H{i-BT-(cH1|=R z)i(^EAYy>*Vws6!7?av5o&LE*yP0L#v<ui{U|Cs~x=3*|=;*EMk~`STnirCGcv3JW zETAYoSjwu~vfDF{Kd)=75_t52M_!GkD~X6w$P;h{qDHGmc14P+%a+CZx)NQjzJB-7 zMGrGXiUoYRl41vU3tZh9ES)?D_p_b4UWd_dmv(tV8@Q<Nj6Wu(jZD`swF`|L*xxK+ zy*|T!&1C6wVFuoFdP+ucK$+NjaI1^J1AQe3<Ugud|FVYQupnIeui^Nit}Y_Ofn`P* z)2z;kI{MV^=_>^h4<HbtHNJ~c;agK_5*aAPN5Eu8XzQ!f3mc4t$cRvJTk~by5)YNc z@W-txFCGlN0dvdd8;-7wo{C1|=@G;l_N^*A8;+C^qp`B0#gEmOi$lh`6h_*9tSUbU zjy(w!C>SH!JmhEv7%R<1{sjCs`<gN-@puU_sxm8Dds{=fcyNl02xo^iLB|+mS~K^Q z2=PeO)Sb@nfys4wya4gWpjpwMtCxgP3K48pqgcanjjY~8V%g0^&>Xi_@DjWAW;QmV zsJ_b~gdoV~SLOw1zn24OhS-~2arc4?n)AcNnb&=V=b*$lVyQRNnpnBxVWq4_(QS=2 z?MU~)ORok|_FkHF)dvw2HbN;u6fE)5h>^-#2;|c0E#K#UW7RAp%Df<3eZ~b7G_??D zDDN*Lh@vOYHoGS6iPc^Sp~M5Ve6|fl8f=9AT>RDIV@{0nrv-5>9@=yxmK*!d`rRQI zXa1k7DcF3@{wBblz|auhH+<cT)O6qQ%`y;edlW+1(%_+Tu!SUy6))QWh9W_}as}#v z0_(yHq2pw*6BEXcuWKbKh!#KG$TugU5gUy1yND#OLTdZ+C;kDxLZI&~LBm*Y-(4?4 zgnO-Ttib$Uh>5xq!>H-tU^5n@o;K}6$QLr_aQ1<Bh1u@>6=PMjsmvU7<k?qn=QyP} zHCf=pAQ5!*WO6kplyP0bJE%F>(LWs*>3>pk$Ccpt+J_(_VdMGPHqPIj7riRLCVGBy z>HfwM$$l|~bb@PYT^huBOx7GcZTp!`44pJg5$Undu8p2)<v0#5?RPXTur^Uf>5Sm? z^alXft)t*tVisd)sNiVIkp@>>sJ1p*nl@^;h@e$`JhAdXO9JD@^0Hg{)I3y98DQq| zc&~MM*~O|ub|YOYJ!kt^N-@-`67=ik5GkxH@!w-E_|+g6r&hH+99G{KP#t8@wMY+6 z9JklL%dF{?q*rYDnb)hRY^F(h)f-(n)LHkML`LF&a;8P2+8+)Y=Iy@j%9vY9B!C?d z*$e<RM0uN;u5NOlfO~}m7n74GuAM$EBOJD@RZ!~po|Cvt#>Bw9GQhl=aMuwYWQLtN zf<SqmQ9!++DqSn1I#+@&69i=gQAz8hXu{PpZg9JLNGoG}C}Z-Fg)DPbK&A0e1*(dH zzZec`m8}>?KE|j&s-n4YZM;#yPEIKknQI)Zj*hGSL5sP!?j21E%J|Zp5(w>F7o(TS zQ&yNgY9WsiG9B=!i%WHZ!JA0%;^3@WSz+Vi9=9KLf9=L7ms&aKuNk$$6<;~jOrI_C zBNM996%vmz(XpMj16w}M!E-Jw%Ggb-oqNuQKP~u#qFoQQK<%(^Z5YXCaip#B#H@5J zWBqXv0{po^s2DAPagoE0;57<2c`}j4I@+Mvi;L{)^fV48ntsVnKP#3{?`(m8IlrmT z-9fi9{+sOdBuq!@_rCh_;rfuMfxz{3Iw(Hc>!{Dq9*laqm0dA&cwTvzS@5=G7Kq2V zqs{|8@B6LU<RHD?7djO<=l-kkgSZ>7-GjodyDVYE+-~b`q8$n)yaVtjeGN&BW#C+a zn|YCD1u_}~-b%dN%b1f}4>piU3$a*fb>%98dyxn6f^52+*xCIxHJ;hv#$=WlF7fsl zccrA3VHSL7mLp_m`N3@kozu6zO0O8y3hYzHb(GP)2AwnQe}s>*(|r-$X#Zi82jL*0 zweW^S@|Zzh2#{m6Ci|GHtIeFHo(ZjUkv;tj>}ulf>^5B+BJUiWMID04B*0*bG?)s8 zWPA<Kcw`8z)P9h-6R<DVz$Ik*1Zl=hV@v96PLf-+^h7TS(In*(0qq57!5d@971aZi z)3jNsvns)%@<8M25p3PrT?tYT39odV2-2Rr^YyGsF!E(gXu>hFzC;B7tf>4IgBL5% z{(%B$qJ-*1)SB0#ug{0iV$EoBhXVqm^DckX4pqZIE$ViF_R&u|j7|>z7^Q~3t)R7b zkDnDJ?yV{P%33Nx!j}hcm*+lrk{rYK!|IFW%?%WXT2burs&J=_^rJ#4v!SVa)}=h2 z1))@oFr<^P3~AY3M|V%f0uE-YjJak76Ih2gukh2n9G#DpHbz({vK1<y!d>ZJA7=9w z<YsZtp%sBGVr|KNGk-+R(sHv(jFsV9BQ)2!$)f9Spd^rFuw*%!QMp|!Hl}Jbl)^5k z`#HarEpTZAC*uRFaQpggrOmJVij7LyZo>&d&F-W%tT8v9yD*b35CB82IqgIS9ZtWz zdPR7m=C2xOTV_mKqb~YL;%&b>ml^Esf8(M?o3Xc)k&}!sOQ%`$bc<Z0{~ldXXz$?; z30N(7&Z49a9T{(@?ZLsv5!)pm5`ff?+)iV!sk(^yJb1mWkM>DS-?F^e;M8hsn9zPl zcHV_z_i+iK1M+@fOO<~8aR2KugvG#Rr(if3#??AZUD?W+Wv@b|CV65yruvoQS(mB~ znh6j)h;MbR>;@SWb194n<VNrX0{(YmN15(FV#nP7o!9~50P0qjwaIVE(4vCO{*f2; z+Ys)G->L6s{jf>l|0#Ba0RQjB4!eAycC3jXy^Xk79Z~H0$vypBJzF>tnMsB@9_NJs z!Gob>qU2bSBZ}vbJ?MJSu{aK;F7|pKCtX;jvHzA`pLQ|s)@7ywMa8h$;t%Nxb#b*K zO}o3IoVvJ?XEAiS9L&!d%2~xe7#PKc3C%;X|DkoH3uAew27g#>8qaO$Yq0Y1OzqCB zeZajMH?G^IOx3-@aSiS^OXHXDFl8F7YSSf7W$Ul<JQ(fx;ej8+<T?AJLM8_pKEC;T z&ts)9@Wqbp3=EA6O{nd7n<USPn*sa%df8%_tt3ms$Ox-E`z^MONROR3X<pP<RmhnT zuPy>>QSGma=@cgV`d>Ed@@ca`d1W8mSw+FnCR;I~%)vbB9~pusy8ET3#vXLVfW*u! zxI<m;C4~zmr_u+SVyb(aWQD_u>IxkHb5+Pc-O7;|N^E&0*w@SyB-Jl<W)iU<_#|1@ zQGWwR=8HJ}P{eUO61O0<IOGx2Qw=BGjxUQDe)O4-;b)32kqpS%O!$xHEAi7k?|72b z{(X4q+8#jxH4N6~G1zZRUtvlia~=1&NDB<Hkz7W^u`fKYXc9ZP<=(MuBZF0(k2bBK zWi>n-hR3&I$`hTrJAaiG=@eXP`Q1>S*}TRyVx5E>gm18=-M?~E;aI9tA4<HvBEFtB zYl@eEzn@a^0wgh6*hm`mu%eIfaUw-wda^;M!)(|qGEEaCm!-@OiRJ-j={jP*?KgI6 z@{xo^r}>ShTV{?2WWGwZ-ziQ8S`*|{1pdQrlV3@c-~2@ek3a4(BW5%i8=;^9hBX%l zNdgWNk-<&-z(@)fG}_6!sz|>cDZhzoBEg!!UQsXx!%sGjDyt83!!rcco;;Ksfg2cM z-L=jRw59!AM&7Y~Q`OXhWst7cRP|n}J-ON2m8_MsI|0~>Q%y5nM=P__xm^2t-3{wO z43sE|;nCrxGPZDMw7I>x`So?v+QQV-mxYaIhVIC8d6j0O=4h=sUFC`2hnt&K3yq65 zsCDf57Bhl5cX_i{FBp74MV$(>V<#RHO2gcIT2EVJgP#$7h7(mw(x2VAo#tPwmgyg> zR!}zoY8(z9ZyCEq!l^h!`qT<9-g*{u2w;cC?q<gUTHBmKD6Y8I2OPFcMpBJsdRx$C z&P<v*N;Rf87jtWAX6TtZRW{xipB1-%tY@rT9L}%fV%`#0(RgVcIg-_usqgC$O1R+v zG2tEjOEo`TO?^Jxyjsw>)pqCJ|7qUuIqlTy^-<IsIyWIePbUH2GY+jEaP4$Eu3f8a zc(2BZ7EqgG#5R3&p6~?Gr{L9f?X>Yz+>ouq4yp5%i`$TmsEGcQSr{EO!8#1q&5=;p zINvcJ8hRKFtKEN95oE+rt3ks)D?ET?9z)WVTUBw^Jgi7#L{cqqk#0=%gmF9_4TMwq zqO`Q<Ax<Ru%XWaj^b<x-8mm^4CUT+e__#%Qs?r=-x-!5L+~t)@6QX#On(9Yow@LZZ zzDgHxXa6}AWC}D!wG+i>!{D&Ey4uxP55*Kn|NdceOW$MNoJr#-TvSea!2Sg!8hV1$ z3q!O_G!F^&PkB=Ja&s*fh;>%+XKGw}t!20`G>SlKeM%r`^Nf*Srk57|1#_tQa}%-* zhw&)C7<(qlp9C0D0*3|ASy?ehZuk|doGhEel}Gb`uNF|VzzHwE{u+iJPeF#Lagk7b zhme$mLzQbE4=-r-{W}hWj-%1Ms<*nPI3Q>^mBGXS#yv~5ic~SF#_2vdNJ$8Z1`Sz> z*mL`<{R0>$t?JO9A)e(<F%-jEN>R)Z(;b&JorD&S8KHA19vwfUI7S^M4ug!AoZC2q zVK-QM0va^khkURZ$9Mu7Cw*lMVB1C}takik+p@>tQS;D(F}o*%3<0k(IN27gF%I+{ z1yIn?&^2SMM~GOhDR&||*09CLWFf`bcvuId*FfNjL#DuiwufGArXoYoowx=vF~D)l zmfOj}B1ZQF_6+<P+2pw&dS+BL3>#~?mF0_L=6EpyJrPGl%<Xl*r$T~|J=qiR(sVa3 z;HoU7p$bifLwnV4Qs6%oNie{De;hnv-vcNkyqq^%n3IAA*JE(}>#Z~T2Jlw320)rw zkfxCsn$*-F{}2$gjXy$WhGFjWPtnTU@<i5!oWLI4R>UJ}<~NzzK!s9<UnOd%qNyto za(=R_V+H0<T(=@|PoCB2AWn#}h>$yR*0w^ACtwlQ6I~TwWV$w%rR9X-xFjw)pal8G zr16N(QSno+%8iVbD-83|$<ddpu0rGu)}&&4?c9EYb_cVsk$*qndo7xtU%9&OvtQ03 z$#1h<;#X3BY;(x5RS7I4Or4KXS&J>+jgXt=wA!0Q8H`=E!&;o?y$U^38$NV{mpmu= zx^4K<Zw&TMnfG|3XQYc*?ZNV8wFhn8xW6skS)|ryt;xLdbBN~LtTyA`fv1vV0J&6R z_YzV9jN88e;}#RYDdb@$TN2L@PcBqF-lPj_KW;Ee+g^UOAs^i4_6i|-fPan3y(Qyc z8sq_>K^o&_l)^QRPa`h^>6TH_&HqV*GXJ4L<C`1HjSFU5tKenG9B{|E<%Fb+=B2c^ zD!OQ%QGv?XQc>I;q5SzevQIIj$NCLCA>dj7%XXxfu>qll!oWb_&mUua&+ef1mu5>C z@_|mh)XTOqeu6@Ny%EsLIHVXIS)hD65sk9aG{@3{JT1JsbIi+eIfL_tMML-Gwd49+ zt%980(!ft%M?8TgPmy5WMzMT9|I=9)uFkh%GimufJ7YZYmlN9p-QL#3Anbd#!SHOr zS|v6MOwtZvgtY!u+|{;|)q0vZAsC6{ITUy}lM<sgW_&W9vp4qDM}|G74$kHA--Nwp zVGN!zcoXxOonf#}2A7x7;Ng;gjXKEi6*3lr?~pYy->twpXj%XdMV@gH#wKE+rF{@D zuY@lE*}RRn6x_~qKF1&ivjpZGa2bA3r(W$`qgJhkXsmfhTpMDkisduwFOOb8a~OVb z+k~brpK=lSKa5MQ7Iw>+i=_~h5~s!OH~tc94%rsvCifWkcp*_tX-$Yoz8sX74X6~p zE^)>`#=3KZy1zj5;yKz=jfEvln!?HhXSvq;o0r_NILRIqISY{tDhM?y>q9W;+<!>u z&g&kB5Qp1!b+DdL^@p>Bfa$XU=Qsl$8pCxX4C>)Pp)ZR<#am|=*-w!_-jv?ZFIjTm z34dcMoj8CYcaXx^N*o%x)|$klYGt7=GU;l#S6Z9QWLhB*-&rsmZDf%}fB3U@1?(4R z17<!ESG}&B?!a4Dh~q7_#`+c}+*ZokjL)|Ss^y9<_s6IN0$m4&5qDHiP<K&93nbzs zk33=vsqBMxti~o<UJK1{iZ8ObMaG2%x=|sPG(~qF%68+qUDy<+>9~yIRlFCKbWC{~ zqa5TsK1qmWj=WP_<FhkbS8P%Up>;f-j=}hZ4Y00y5p;NxsOxm+|H)-IKd<qNeqUMg zEfjQV<~gZzcJYnGWyC!*ZT4WU-()}a{j0jF7WcGsL+hy)Zkqr;Q?{VRCh^d^cX*Ec zdA0k2eH}jr>gF4nlg-^ibMYjy`+Dop6>SH56j|B+uZ`Igv!iB~rgh}Yb17BQ<-_g4 z)i9Zw-D+NE;NHEqpS+}nC)-AqOkM26WDM&Mroq$KveIX|UlcCyHt@uXMDiHIcz<Vn zjEveWrlcz|!hYXuSVbpMVMUj}k*HF>#WiTWHklO-=%3JK5$C0(vLQ*7ZF_6ks3f6M ztlF`j<ROy0K1H_D=bi892wFb8sw%R38^rh{f}sg?3fON5JvDlN(nA|R(I$d&?;s>? z8kM4kusza}lFT<;Nx5X9#vqU$Nm<F-l!`0Y{z?njaUm3a`{@5G5PuDx|6hPOqy&as zPM)9G<4n1xB4Gw<QAsKbqQ0aj9;KpK4e`(J0$5s;TjT@Z=R9)RI-1Pf9MjtqYu^y> z28}DWX+tKaMmSyJW5DR+f9yvYv%ihxn5<#Irxbl$K*gX12LEM0at@~DiXGY+7#`&x zRoeA5jGI?=`SW3Ry(9h=Qc8lA8Cr4{;CFq&zyqN0@0$Mx;c-tuDViC~ii<h^No0al zVU@Z#(llsb${iIH49`Ta;tQl^5r-v+nyIgW{Th0(<%Bu_6i%x5{|1F)LTTO^%p~By z@`x5yGR(tfr2Sla#VIo0&BkS0z5d-Xw&|aP$sF`V{)@QJ@)SI?xzGzb3y^k971{}! zzU)ooXSHz2jov1s1tku_#W4L37@mB%_-9#)9DXCIs+V(Lw3*~TEyleJW^oC&jPjP% zuwo20_ogZTaHszWJL-hC6#tUxl*kk@niR!iI7M#Bq<YB_R=IAXa(zyE$CkihTBmWF z7ur-r>qUt2a85Cf`@)tE{D$}u$pK`OTK&s#=N}xtL!`<M`O|~_*7@yvvzJ<79&sVM z?2DQkqkt1=woPToEqhM{&m!O@pJn!C2ojp;mpB2jm~h;#P=LC7*y{l{ftDtwd6tpU zPw>cKs1kswm=)h6E;;7=dj?uD7zNWPaVZYu`tWurfV@utNARh7?VqUQUr*AT^M9g_ zutj{>Q29~iv4cATc%Qro&+|V1y!iN;)e+e#{aS}!?r<U*a#qNJwF8F0otLc6y(A1s z4YRXZy=@K04?=cQ&`6<lsl!w;A`vbk&EeV#>|5#mg#a;;)uLuG4%(-hBmtf|Xmx65 z54j6vo<E*xi@yTk=lnmSX0J~GYOeLF+4&C-@rRs~sosf0QVrZhr8rl3Ss4aEPMdZ; z7&!ocE(E{em}x~mAn)dh(nauekg&W}k!=%45V<t_PtdHHm+N#n(ypyDzdg%t8N1>$ zO%Ew?Df$d=$mSO+c1iZTiPjxNw*`BDAR8A7S))wbTu?ASl&=}Mz8EZOxW%|}mmLLE ztcX78(!HuEZ*H|9NC*&bEOf#;nuGz)M*cC$pnv@@T(0?VxGW2R%UIO4^gOe9Lil?V zTC}>unRPf-G4}fD_H&$}^YmQWQNLZ5VlE@+X^?1SbuD1E5pi@r84kLcK!;Zlsc1+~ zZjG=rvAsl9CG*5@73W$k;hJoC7?Vw=qHs$swV}EUn?f*hm-ueISCLO@$GlUOu7Zro zz#@ZatgU}V?F1Cef>yN)I(I4#@*59tsAlC^V;Ssfrjj<><vk4P2X(1(C_F67>1y;F zHV$-hEi({-H9SS|6PP}D81X=|{{A<@cxxXViZ4%!TgCe_FlhV-2$GDNLtolhrfYEz zd?R5o9uopTROVP5!2Fmd+jwZXng1ihD6J{$KE`a+2b-RP0>M~ofA`5@Kyr`W{`G+r zIFf3~f|U-uk7q%Y*PjW<RgcA_JE2SgfI1zbuz`U?dH1X;jpjtj`tY6(UK%b35#h$) zRS+gTQI0qS8Y~D$#Eo`(5;*PYD=;$v6wgxJ$w9}*_5t?^PK<6J1YWBiLW+OPeO)OW z-dGqMJfYw2g83b=;Nd<CD9bpVKBtHr-}@;f!i#BxisTt@j5+H2dCMW&=6MtxJMF~= z(I}tB#RwYrbj75uKDcg$>5qOAu(lt(JRSkG4mF`L?D}^$9g{ex$%h0DQ5kBZOqO5w zCL`<)ZT+1Lqwh2!t@jMAWA3QA9}rz+ZJ@~bMDRu~>i#FXxH)(**w03qxgr0_5kS1b zr~};<u9mrOK_yN+DxQ7PCq{uKaR{oDV(i4bR5f|-66I`ULeiPMH5*QY^GCs*Zf56p zgWdV7;2$K6edY6oaN|wh^VSc|ZKiYBT>RT@dI8>Qw#m5htsZ6r*`@35Px=Y1HkJ{l zqt~?{HmCX5>}L<Ak6pkSPw~!H%g)5pEgy46ZE>)v>6{5Re?;S$K7mBebgVbF8O=<f z60dtqJkEghG(!Uk^uf{OWr`qr6=%K9L&Oa`gkSNs=)i59>lo;wTFjdaSB~#O4D^Lr z={ul(J|1=$*z5);W1#-b;E`HZ1UMBsw}Y?{&7_^mBO3}JgV!@16Z9O79Shg!g&3GF zu94PIM;>DiXnN4O)If)@+j&%pwd@(%>Tul$XH)q#cKbk4Xh<)Rp2gTs9uxNKRT_S& zJtj{V2`w3=vdsCbuOC921whlE@L|=6P0Yt<bJz>|XN&K}*d0FuJf#mdm7bz_y-a6j z_6Z@nR#z2A2g*Ec_I|@+Enu>932MB!H~fl56(k9EpQeaLb!_^6LjE4yqX0CVu-}YL z$Lf6{pyA4%;ymy(1{egm(cj2JJDs)M?$;*ddXZT7CK%JTRf8wpw>!P=cagh0rpK37 zdk0!eOJa)+%4)3~SlJXyMKFeRP5icjb!CsXJ_xk@`MK?NiX9#I<Y@V8+~2E4v7agj z;p8c4ty_;DsoZyfsbjB0USE!{CeJ?Czu)?vrGL%vrH^$TWUAr2AKmz}J^>oeNY(D? zQuRh@y^g<E()(`F=e*qA7*e<2cn$xxvi<D6@iKm8@q5m;KJHxgd&(L4@$udr%l%&6 z>w4Dhw&gR^`|?_v>-)Cm<#$kw=w17venj%zfcU-SM)&zA(y&sG{rh&lH=2C>`?&nY z&i4zgHmY|&`J>mO=JT-9@8EgIi__uUYk9`|yw~q!qV}Wj702(Pz>9#(;aG^vN$)-M zduf=&!Qin!Iak~B@@j8N1k>;R(9gOwX8ddLg^!D8WAwWn@Geotav{H&Uib#S$FDZN z?G2f~{Jvzq&PmQmQt8q9iX<G`q%BLA$ZTk`w)(Hf;>VTcgD@iNYrp1eN5X(#O427T zkDeGU|DM=QlzG4RS1xU^Ro*wRu8Ei$lmel}Ve)X%3Mj*H>9ZYp!rtPMmm0xQ7Hrdu zFw4hk_YBZTF&dgGzLryErkk3cD5a-=Tz**p(6U{yaHY#ODP4UXkgn-7g|8%osQ%OJ zY2afbV+ZS--m>uY<Z8*4ns6w}$;8K(Yub2b?Fu6)P06FKc_|$}ei4PO8i&3Bsnzzv zrWVhsZ#^7E*R-BWpNSS3!7INCv$?l^CLJNus%cT!R8X@a%|0^^!)sygNQvr~U0vQE zyC3LZa*G7$j5P)n)K6c9Y801Pao0Sse)+JuKIur=nq+eCls>6V+1t<n2;J~xXa1>a zU=qdCotc)KnLJ57E-~{jW=dZ=d;Ngv1c+z48k(B4wAIE@X3<j`2O8U+tZcVy1B~j; zb%EVf5`hB1Y8ixMNhOP>DXHl%CN(hBOfT7e_k}_tjEEth8GuYLV;}f7D1SGvR;8TU zNoh&x$=u?@q_%BDX0E6bO-8jDHB|j;x~H^X&oPUAadUFAHXT#;pJNBeV}KN=;%dU1 znMrAqx^iq}0hHvb5ETz*9M+rhfXF9}AV^#n4fo;jg_z^L6OQ6Wq;uu_iL=B0eu2ns z_qX%f6WQyz_=N91x-!>$14VCQ^L^=r=U($THoez#J6SDj?C?6d=W90GOz*2kF6*US z?Q^fS_o2J@^Mu~>c%SX%r1x>CT1{s2b7)l0^JdM@^K|lt=N89};d?KWw|n?|sdKg1 zOV-{j-A~hZYpd5=Em*4~)Z_6CrM2Yxb4f|A*Xn@wp1kLRNzV6bsCDOag1*9e=R2jf z%kk&uAx7_!4*hrJbMITtczLV$E}q}h;U<q=8Si(F+)TFnLg&m+H(BquR@+aAZ%6_u zp1-xJwcR&!UdP+*-d91f+l}{I6MVBTW1|&TttSNT{an3I=NtFA-e=1MU)!}iDjDxh z55ao97bLZw?$<eb?4L|q<gy==-N`f3ALo^RdjoDh3wqo)c;9jE+dGfwUw1RU--T<B z7`zKMyzlF!1UWvho!d`Oy|Fy6%bg`K^zW$zuak{_pNF3}Z+>kzey?0PdhU)VnSR&R zZl5omJARLAeqS|_H^;r-h`v`fdY*qHpM7^X5*Fyc#`SpX-ap(vXHfiFM?S{A@W-V$ zr?&6EKlRcfbJ{M3NY3T9?yv7}zAb2`Vp6l~<UV&Wb>0z|zBybuPnN%LgU`PSzeY;F zZz5B^a)Cc{r_A5{Jb4p|-uP0d>&`Ael*yFRa%heJDu2J9UMD9PPyXQQWlh!71%FJY zPUhdLJ?1~FHBLz>y$^D3{klBwGYdVvcKjk7_d=TtX;*Av=F<b=XvoN>H!)2~VY+ng zVP>0=t%XzEd~1~InZZ|g=)Hm8xzCl$a^HToh<G>Sz3pV{J=*i)>--ESU&%b_{VL9; z@3Pz*z5d$EZF>*q<Nd73&ixue$#tJ-)O+0{==e0^duYvF^M0LIyZQc#?O}R~VC(t< z-SK^Q;`_*P>)N%ceR-JqJm!0U?)_dR@Ow<8f63qRId?nv%k_Esv##cQ(rUJ#_X+sN zd)plRethJ+$B51DdU(3=y#%LE{ytue<w^HBynZOf|7<1bz9FH1k1s`;N}l-~Dn0f) zwEKQH(<|ftOgLWmdk>$P8sl?Mc>PQ8IfB@8XV&}hh1lKkkfHZ7^ls<-bZFJ{R;T#& zFeAtNxliDAFZDICP-*AxzE3|q<>z_z{V^KK`^uyCW%bqg{Zf8b3%F^t{hhl8g3l{G zj}<d|%J1_=rh#L*-rMyzEx!By*c0CGL(tf)_KQZp`|(D;w@|(}p;+I)dVZrHsZ4t2 zn;x&F_}|@XAGxouYM-02->*u;u!x(Fr5E%aUzhaLUqg{!Vt>K)c3yib?Yb}cd^aNb z{;nhX?WFqta$PyU_`a^G{oFy!dMV5%cz^Ih*V<{|BJaM<%_;j@XUlmrdabWU{A#^A zJNbT_ul=ml`yQ9`K2FtrZg$gsIYfD${v6D;rQ>^V!1y>`;QP3u&ykwcbKiYyjL!8D zI~R(^=(&Q_vwwX5+WPjLfz9N5pL@sed`Xz;{p{YkOSb#`v*LHALhn)Z;rdvaX>(jp zZm0Xw-t1P>bAEA?zVmYHM$`S7>U-$+Blo-TdAr8WceHZn`OiwT-qQqA=Z!bu6}_As zec#I82f1~hC9d#&ZQQr|)&NF9e)91?9#(%}LH2w+cOKn;U#IIC<gD_1COn*Vem~ss zeaPg#AEoz>_Z-(ClK0+;5ghV)^M0)s_P$K%xeq`0wvzhX4f?&#@O{(!eudI^Uv>5# z{UmtnoAJ{pzq{dUjQ5z!{d9Ss>HW|v`98qtJ(JV@JiYP$TI17wspji^d7$onIof%v zK5xv_TR-LL{J3WGZMe5Sb|QG6A0+rbUD;`T&$074oFI5>`F_Z!|Cq|%el+WKzZvzj zy65A2c;3gLzWE+Xz4>xKSSQ#0j_pqEx#9b~rvF&{e$jj8e(Q`?+kP5Y$$IHC;`_2< z`#Rp}fsecb_}a64Grc~me%tkx5KRp1Urgp9+S?}IQ>Lb8Uvh+g?-AeDnO+b|gK2?$ zvE-Nc>L9!~^o#cfU>+j}R%R^<B;4;ab7_NIH<WcwAts0{4UKF-YW62(!7lh-{AS<s z(_hL4PcNrK4rC{)1xWoGcAO8ZQxGu}!Zz1~KQy~cVI|t)Gj!MmBj&6N!i=4d#lfPY zCCgTCgN8&|xGxo;;Bd<0>X<Pv^J6!hDB!G%K>9>!AFNgd^a_!$StJ8=3xDjhRP^h_ zDypxHfjLKOQmhpI7-Cu9(<&rrW9cB$DnzPcfich=gr3DVHD4|RGl@22U%myc55Ws$ zk?dD1#BgQd1Xe4=vSfh~P%T8!eKZGCjaC(3G6z?Rmc?8u1Cx)IJYA%Kkcl>I1MDQD zJ;N5uz{H|;)fdgdgrg-X00#wly4t8h>jf~|!+@C4`|{L*V%*lQ#et#@P8Hz$F|LMl zSK>A#_YWfR^i}QnglyI>6Fg*pwUlvSY09r>g}<57wuBAIS`kGnVPKh+oO>e6jk8BI z8AXEcnC-X=D4#@?GM})+TKFID9StwYMT+eUdfi!~FtGH<PCJ)Ns|}X?Qp{E$659wV z*hB5o-7&RJe4WkWbzD<)ZEtSj6O*e18NfNWD69~AzGH5K9g#cFw}`^ez#o`k7Inj_ z{3TNpiK*{&?+@}zS4V*An9nsAKkJDYbc#G<A(C2E0;y^N6egC6z1lZ3=(n7wY&__w zKA1kX^Q-W=pR@5Aj#gFR_ycNgL3Reu-{MunIi|wlQS`>bKiVjFed*!952}sGU7QXQ zJKE!lY^Nz*oRrUF6wZ0WTEvn&u&7){>0O+>QajoKMdh7B=hwHGZCsnrpK`GWcfK}o zJ>MLO**ON;&wNfanG^HxxdI<o7hk1L*MCG9g&yZK^FqB)7C9aYbs_Lf1`zHv%aq1u zFY*fYAYGz2+iC)01QAVh&w}MWi5`B{&BEr(;ywtLL2^C^%O4zLbYn=`ncxp<rKekz zjy$(Tb95(6&CsN#n5j9grLVPLO7r%1uue5dQNK2yZBBj^OC3*5d|9PFNu}baveH{8 zPndi`ZH-*w)b?nl4Ti$%)#Ey%I3;hfi`f|<WME$)V6~g?b?^Zg_9ZJ$H=^WC5W=9~ zKO2{a>mb)ddsUwYNs8_tlC{6*sq?=uPm|?6e<tZd7pn<A{|?iIeiRb<_sqXV*fa>9 zKb<kj{;3$|=2c^ey=@jNL9O<Ry<TCN>3)y7#sE-m4`b9%nxyC9(H1(;?izZ8PK>kb zBC-0p8_|v&$+y;Z1?6&ZYgpKL6NyXWwCM<cgrk^ZR`YA$1Yrn7cqNj#d@6Aw4Ek#7 z^p`r~_E-yTJ#n5<dgG_wJJ*<VA&=n0=Mj5K@k$G8wZJDBop+I1kmx%q`S5hqBrUwN zD2hL{vS~?w5QEw=b%!v5kT@FqsAZImP^Z=lR|22%(IE5?7|Y(%^v0s1)U6YX$JvJp zRF(V<=b*c<TCthQ0wRXHBSj`R*c4`xepeWW3qXj2*eEHO`#Dz?%;udM`ARWT71--C zxW<kel42)=lOw%z>66LVv#ZvZrH6xF3N>&S6wG~{x>pNF);&|<m6kg*H#`yJHDV24 zH17bSp56PqL&tGB9;S*OoT?t0jqq25T8R-$Jz|JrRh$++wZyI=5$YsX^u(-*b1h!Y zm8wU!UVesX=XN9-SH(8X;N&tqoCZ>Pj!spMN?ua^V`b4gwfua}y&{J;0g}38@>m?# zE2{OwfF*iTvo(>c&!>}0nX<hYI<fEl7KBST>0HV`a5TK)hZb05kKX9-@wADBX#2zW zfxG)Sl+j}q&}$>yC#Bmb_^E$jR!2<FDZ@b01Vj7WD16kYBP#6S6x>!%C{{LU+df3r z&^Bw<Udut~iCQXE6nn(09kc}q67vgiH;J*TE7Qa((cHud3ezESS_g&Z^a~1ci5-|j zNpXrMx)l^*gUpMe@=}zKCH=O-rKgYxA%9{I<I^<|4rd+|XS`#fa^(o9MNW2@zkL%! z8)iofR$pnG5W~re_A=?~Gl*bke%$w^K#nTGB<+@<oAv)hI_FOyMBt9%Wj3w>tPg-# z_-*-GdQVS+Nar897=ngX7KuA7FO@6x!r0YR3*?%DjbPuz3ztQ$#lfQsicZ~8G?EFT zet4GSdIwAO(KtO3F|O>%ip<hRPC|&etwX_JuSn$g%YYwP+KMPcbdUXSc5D&J&MT#> zClw03SkHa=hrL)2%;TZgso(q4_r=liL}_%ummkxbG;gBY`}b4>$N4uKAZq*i?J~vV z0(AMgn9mO68vR*@?=P0Ycn<Q?egNW58u*J##s}ybqnOtpF(&v8$aO!D*PmxrfuPTq zy$n(R95n3>sD#(Q98sT-bP@8`BQQ4{>^~cfM__3mASHsnMaWx$I6(QoC;$5proz96 zZZT)&|1H6{2kZxb{a4*(WcVA9@AVtdwHKl%O*YW;qhqbEKVE9Z=ta-UAOZaVKVa^T ztcgCyp!kxdm?>w31M$uQ64rmD(-wnko$OcVyEv{8r(B0J3z~S){e(PKLS4V@2<<<~ zyN}pLw0!LrM;7&Yiz!`xW0Qmn#+L7Ltuao69i#pf9bmglkd^|WH0`iFCB9O)I%i!E z_*pG@V|^pEjQB)nobaXl0Udybyl}!MdZUD+Q5YfP3b81MLECr`msv!m==Q6i5wQ#0 zKVpU<V#b8KYAro|l3R%_MudS;k&BVWDBMiSW~`haw~@bT;a=CIfW<<YCPRZHa#%wo z*_bft4obAUfl$QA5Au?*%pJGTeTbSzpu!QP5RqZ9b$xx(>REfeLHR<tyv&)0Q+Fl_ z;e5NYj>bw(Ny5T3nu?O?Rr4RCRaWFp_lzB^q;p#TcZr|g=9#i@%#uv;-ke+JpzF`} zM%9IuF?*O_27q8XOx3c$@!m5?S;`QCqkFKzPxS^^7ApBsI{9}A-&#SJ;j;cTJu2O) zsyTRtE%3#0bvT9YhCQ|pp7ZTey!FtXkbsCehRpmDE9WjbjYOm;@)Abc58ud$vHD1H z$e%YVoVs=Gu7!bflh|w5#*cFZO6>TRE&kRrh##sjXi*1E^t5~t?8;a=(O$fsm<bLu zcW#$~$j1@mB1~4w?d-LPpTW@#lEbh#{ZPZcx27P;VMeTI^)pKNBTp?YVr$^)bw#$0 znxtno8b5HN{D(p$X~mA~4oS!^J|o0>q>2mEo6XMDaY~)5z-jQTY|l=Qc*fG8sPLXi z@DB8SNHHf(BMi6|8Qjec>stI6peDtJ^WvLNhVM;kI7J1Zn!&r=TlQKN%YNZD{yOB; z{}Dm8Ju!NEj!RESg^)h@BlP$0XKF;Pz93~nYz-3FAq%6+(PxAW4I}=*xl)2@Whz3% zv*t*{7q9};!izbf_{4V~2AgroH_i2AmWHm$Gbj7-OQdK8ZA&x=Qrd2>J@KLj$4&B| zf9m!(ShFbEex~DQ3$ut;?51I7yi`dx!10v<@z4NU%D?y?m9i!)duM1AM#=%RurE|@ zvJaIO4&)7$n$hEiD|_RQ3rPHkLE6C|iP78~oqD|8wjoIZwZp3@0*oGOSQNSTN-j<v zJ6J@$n!tWdj-fcSRT&`?odQg_Dqeuxmd;CXib}W_2%nQi7s1i~L|{|;KLE8rO25Z< zy73NYttLYb6^~;Vk2ZSVt7wEt)2EAyMKfz;6LYpBs&YqBQO)pcGalC%u1W(kHT`?j zmq7*RxK9e{18W$TU`+CD9(%O`%hDWvDm%w6J3UBy@18OAD$H4=vee8P{f?u)VPbk& zALE9nS!Ymp9R2#@PN#Bo%yLvQM%ECd#%i9vEOI`27<-*Ivfl4@r#XLAgqm3+i_jT; z9!Ty|r#?mrYE&7J0QKvME18PVvF>~-NG7M%!IF_lz)bwo$R<GXJx5;DSNZ1FXQhK3 zFydu?i=!`+n8OmT7R~Qhwzdr(rlQrz8d<c?)vp)}gv-1_F8hu{y7t!^kboV~pZ**w zW)E|<zb!F!E7pc$2wHTj!wFQJj$NF3k@sFDsx3B(HJ2@egQ<8mvPNJ0i;^=W;&|RO zIqM8+@$c6ccRCfT;}xs2Zlp5Af02ak9Wu^f*HXKbIfS=PZgSqo%crW`?%Ae_%1$$D z^m9(4w9bh&skPKokun~^X{#`(b55SUa3oTBIYxP@jVn{Z1Itv2uXb#8RzO0?h@<bC z^hd`mF&)&r4{<5mW{t{9Gizi|Z_~{dR~?VPVO&#?&W2sk&E~089J>{X9by`ei<l}W zR67C)COvq}`OBqc$H{ssD90`+ZN$A-AxWl(%p8@EX4c5^F<;{wNKwZlA+@@Kl#zY# zZ4juO3{FmRj5hF8G>%;~Iw*Rt!f}N>OvR%sYh>}5VUb8Sm!Lo6k&#w?LCQ(*ez>qu zfjM6Pn3|X*u?SI(sdaEfM8+C(Dl5k>EBgp~ukv!$tboc)SJob6rXEmWY%<fTFIbuB z)ejdIDl-F+nbw$7nK^#@(oN8NwlUF>mYMEg(;g3dH070Ka1>uF#_E!!y0{hye6lLF zduNy|o0+%CC4m=j8e*xbs%@o^PB(b9*{P(eQY&3;%DkdV?Pe2*3gnl{$ql3yV_OxV zG<Z-(LNSJRpg9m_vBhPhICCDC#{w$Flmvm1F`eLB%L<aasFq^lmpE7(blNq%`(Gfa zrr7DJ%zVN{fq?uR0)c|dF_qrv&}GC4t@I7<_U+zK+@uuq%u^qI=BbY{T{bnJ%46(F zSX&Nmk2I3vrJ*gX<AS(O{Pq!h#7H^%**B$7R0}AsC75KfkgiCz-r`9;0VIRk0unkA z_@7gIrD{@DL27zgi+HZ2*O4N1<SJ6qD^j)7B5A8)r=_Iz@ZP4eQ?52a(~>Cf?lxGK z%}-A=_;WTtLq6H8_8b0kxePnYWOCCpc_5$6Y=&WTnVIbL35E?~06GdxIY8+ENe?Oq z#p?9|`C4Zf^Ye)OEljLDw0!l=S5_H~0vGTHgY^%Py{6k1nux3E^h<QiqW9c0m@ts0 z>X>yz0<2d-XK2r8&tvA(cuG-w0#cd?sWB3218gf`vvgHa4CYLw@Gp(^QzSjT|5{8f z=d7uPR1geJP6nzkp6aOesku{nmKI`~QRFJA<OU$Q)j@JE)#Am}4XC4ry9l~TE9n0e z!SD9~kp;#8FK9x6R5ZY(g<<w#zrkiL)Jf)|7~9JP+AF|7p$mp^vso-vO=3)K%K+D* zwLtPi!{%i0Vh!yOF%esI3LgeU40&JA#4{}WdZwmJ98_~E6U*+=;7k#%6th|xssPiM z_=>abvTpkDt%f;w@IBpVrrKg7mR{W8(KZ9aa*kKecPbdA4U<jVYm;e=(I_JX-ND+v z0y?Nxl{>A9VjsNGM$X1<wzUN54X(S24bYgQV<d_6&EN(6w->rF``&ixwh_B6a%LH9 zzE(H~(R2jUzT~=74O!~66{jg=ty0YrQ<!C3HnV*MmvMQd=wqn=>RWz!wLPVB%1x!u z9QOo)i+ULD9za0768A6iauZftIxI(;$J)@-06id%G6LF?FQVQ$xx!%(nKLzLEM*mp zMK=_Z7#I@b<iIs1wzObzILE_E3JQfL8}RbXA%y()F#0jLmr3pt`(bHfjOuu7Vk#7_ z)(qoizTHIfRWL*F9*`kx9EpcKV?zz}n2!Y)Brao<te=)f9-+gar?rkq7H|elnZLsz zC?^=N?Z(VBtX6F|3v#)w>6L7LX1TOHyOPV!%+6(J^7+-ZX_j4D$*)c4X67$lnlr8+ zWb&}8sR&5B+)(F{oMCy@V4)1VCUwLb`7yo1soX~C!dAIl=GBX9u|;RQaihwDyT*c5 zVIgtI1UABW<pB33slit{0kp|T!<DN`a{pMAxn8Nn=C5=r0$*KaH_mOT+NfBy$Kk;d z`+OLrZ1mY6W%G9!q--{xK8GJ6np~0%?sudeGLcwFj5|FpFz)2Q@VIaU-u@LCxggk5 z0z+Xl^(-LH!~n7AW|kd^l@uHfBE+0mCmf1%=p~`U!-Z=7bkmm}nh-1#&+mo^EE|5{ zLy>_x7Mq2rd#CI(68)XDj&mLjJS(WnSJ5))O<sYudbPJKwOYK2_g*$w9oxV%Vc~QR zpI>%Z=uFQhe)tA?^f?rSywVo99=6YHrkjDzGczD${cwWEKx`0=1?^UemJ$$#^A}gv z^v3bmfLaA1eTCy?%k03v0&4pTD0Y}?O;s3HhdnJQ9Gb2o%G4=VJaPiV#CJK>J}_oN zPzcEC#s<Ln9Z>u0_-;H>$yTU^!j&2<7M%p3UBwB<mJuwXbxBhD21ic}2uZohiK4e& z@yZGc6<IXc_ttGG!DF!I$e9=@5@-)Jy(;sS4&KXfin>8Xf=20sEDSUjXFJeX$$_CE zOV6baFWA<9j>KS*IIJZ{TCg}A)`KH03>-@xu_hodG+Is=m^8)hg-Oc^7L$E@z_qPn z%LxyY*J$<U2Zc}D;DO~fFc;b8aqj%sGJ-|qfhBkpE;SK?m0s?(S_rgd^$I6*@D0i4 zZc~3wX!~IJr5Y#joOS#Gr!XZgDU97PHzKdsHQB6g&f50m@#2&-?Oa#J7{=G0yO4%1 znLqTSoJMb3V7^W1$6M@2S3J%Xk9Jaip_%c0F$-DlevNz_edLqndp;Iki!HWwS?F=H z8)qZ2)AG(#{og{5a`xNvc(zC4LVK~?MpgVSQXzNo@i9Si7hh;dGOspUj4Cl51(BE| z*6kmL6Kl3x11a~l0nfAJKJ(0AcF;M)XX<TJWEJk`HTOAlk{Hf?olM?6aSvtkrPcD* z^3w7)jO&$)%jKDIT-|Zkd5Cv+_S7eLI=#m;#(O;aJQ(-37(B`hj5zis41><JU_`Y< zGWJZHtKmIEdbwvGQhdPW9xSE%>HH|&&559Vyt*z*S2TJZn|!p@8H#-L=#x90%EzGO z<JEPWd=w=r9PN)Df^c*Y`B4&%^x`7Dxad8lk-xY||HksSkNcnQn{Y$h!1q39W_<2{ zW@j?_jO+eqHlNM1^!{fMf9d-tm>Un{*<`x8R4$cacA0oJ!Mvf&SSOyzUWlYNk<4I= ziM$z<WCe=qgdoWc&@NRZDu}s1eR86%AH<HMq?&j<hId!+3q>$$&cvh&7C*6K5pTpu zb!@401T;D6laWF@ZAn&@v(BGIlrruIo>ifl2{uu%T1`C8*W(jbk%ZcmrENw;+YGs4 z5Rd77meH*a4_W~P?KUsgpbW8@IP>yhEOACgYDX3sXeDu{K>m%#U}R7o498k*!howi ze^&b_s7+o;4j6_mCo^Jk^LkRY^(4s`A0mU00#QzQ64(7uJt-B%l!6C1$-y_6gDR&c z75LijD9vOCzL3j-P*Ny9ekWNi3Mo}8tJw2JvJO9*obu4N2sO5mtoD-aV%^HG72ByQ zCkSz^=|r-Lt7sGr@C=Frcx@13Mxr%KD$JbNX;nbsn?s?dM6iDF2Jf9@&$A*%><9vs zpPW>SP*qABwL8gf@o`*7VS-I6aut7w(q%I7@cqsiv#J&z(xjMp9FHRp;}chl>h7+b zNNJvk^|etvrrouLSp<TRQuuOk5y5kHpaGu5B}#~!{PoGnxC9?X{5^3-P2oG7DSTg1 ztSvWrp%#}CsWvA=jSoV{QZi~uU1a3kF;VSc%CmK_SVU*h=~%4LN84z3*JCWvSz)uP zO$JI_ha&o81tb3s?rx<RBb*vbZWo;tW;6|CzMZOLqTp4Mb0>MVn0|EgnsTkPwz{@< zZKuRuKfUYveP6n920vEZPPGl%D?YAqc)@5AXip(8J|wxYofMGRP@4rdsY)eT=6V(j znqVZYKbRi?2GF&GO<jX!FI+$i>{<M66P?B%DXp>V1ugCRog^myvdUF&I;zA&q(UEB z2n-@pRmuiBo=75#rJ<v!tI>UtaIAVKiMVRh3*&YQ=a34aiaW^`*Y+w#8Z?o`0SDKP zJEZ|3T)jBbdz=*UG$o*3!si|X>8e=5^eObTs=@ZtlryfN&dZAGR{^>eXQ2#Ol!J;) zWuOeY<uR_dnMjJo)97@ZOjCii2GxmETr9Galj4GUc9Tq;c>Q`|^E$3xtoioRoR!_( z{t473zMv!(Py_`KjPQ|E+GN<^7x{803DX6}uUIP*PSC&G+QZ!;G9)P{L4bf@H3xB% z1>OT0s1!3GTg_yn+d^?7a|R2LSVfWq#Mu~_13@AbIY(uRUfJo>iDaJ~;C6Q#aW1jD z8|OgkCZNe;u>+NG8aXOcQ;9RmLgx&A8YGw|HRH%peS%0c5@ih~#3Hw;UQcop#bO*( z3w%#tOp}u`d~Bz9<%+=ZqBgj388^%q3F|@@`Gmwo;%uCU|3g2q=9!#y77!C>MLdNC zlIO0I<U)TjjG{3KaREjcDlT*-zQ(Ws4#OcuAl0B8&YHFO<DloU-|~X4sbi<(x(GUb znNyo7&8c}jkpN-b7Pu;kr?0J~8_8HKk>nLv?bLc$dk}9z4l;II0+^LWNow0^@lMjw zr+zj_iaO>AurfeSZ))?(XyvbiCM=qA9FPA5s3#tO_Y(VY5!A6R1!6WzkHM3wo%G?i zuBycZ&`B+Uajv%7YR?bn85?EjfHMYi7NoHtRXAa_%L$H0TVzmNauDkmVzhw8!eVW@ zjQjIAZa@SRM&pe$@&b&EMynGUqS>`k*p$K2N#c)00(&~Rc?SvFE4R3;!5jL7K_$T3 zV7RmfsS(h)ajbVO;<$<l1Iz52$fc;Pj$s30^ZFTwfdY0ZbW|s8=<iuWuZYQ*LhL8I z_6Ds~K#78)PZFq!L{fxF68qb<sQ?YNdUh&P=ooZ>Z4`iun{q+LL#Dw!tr`*uW&}*f zzDYov{OQxziz<wvIe2=RBA<kDY{2mJp)wi(v54(c3F_v|x<Noqh-ah)?u-NtfP|TV zVcC?RSRw&LuS`zzMD~+Jld*ZXwzO<FB7C6<1==#HijalXA8A1*&FRvQFB)w^CBPG! zwu$qJGbT+*x-cB}fFXEvT?*YLMoNdT6*5Vs)5c4ULKEb&hp|@fwJMT8q-tH<)PAM3 z%dV1)O-XlBBB`4Yu_aA!Fb@*Dnb8b!#<;!85Ncsoz>H<qQDb$dt;-cnV(AUXh^7Mz zmjQ|ABoSfL6iBht>gm|^7!Uy%{FkI{BrkIc0v(#LZ0Ti7yH8Bug_t(%F+7BmlgQHc z*t|8QM+3f3PEPd5M?A)1$S^iVad(%+TnvIvUlrI_3hE-*0_s#on;v4#t`<F{tD%#V zO0ts_lGS8A*-qAy&156lOLmj3<W91J-G<!0Euh%x%>7uL<M9HE*tVLw3Usv$|E(4| z=yLL=_EFY8R=jOzguz3P>P1*lCP79%2zuGQekx(cxKS*n+EP1t3xDEe*d^o3dHABO z)*dSQF)y365x58hE^1N}fq{e}Bn;u85BOB(PV!1IR&Ao{O;p=ekO0#QUpS>FR(CmA zkJq8w3i*cb@$8a?x+EyO#Ou&*jaTp??AmUVuho#ai{s9<cLh*<yRD9(@@)a_Lhr;~ z?1n}Xh2E~dG={dSkWq^zFBfB**RJhk*=yI-YuDs!*Tier>epk*^<pf3wr~ypQm~}B zwmo%yck|I}>=cyc*z1YYvE+qf?Ao<W(A=kE_s3(W*H6b1@Pz(*^ZrNg+nspp^|Qr< zo^rNuDsI*IDE>TkJ#l~H)b6#IJL6gm=Uj{J>h&ge^;)i7188q5f+jE<yml=fkMF(e z#I8Fho`8N{zrGtgeF18|Ke3yFa@TOv$@_|!7B#kw0}kkYtN|RlWKWMhN-&-#6+fz1 zdOcyZ0yS#+_vsI>c|3f7Qu~1HEwAkO=HltMVu<h~VHUmZC|Wd%0)XqMpuhK@wT~WY z`w{ySZ%QQJ=xz)K_dY1MQGEQuO2Lu$I(_INcllDOTz2L{N3Hy;rE|_)Eo*o4{_8lq zboJ_b!PV}CMDj{`^^GeJxibLd^7#vwTwn@uLe*q(w2PNNyQ12}|4rc^iK%!MFXwlq z`V<ydI=SfMgSx;NQmqE_wRsxII}yKjt#*Gx+_flH&(MEE_Gusob1(^M#CYflUNX3P ziaFs548whT5fP!9LUv$xRCnKSb=t%hEL7;$ZUg$H^~ma=vk&kCII@;FOQ73;#m^Qu z9|i39=@9QE&lS@c6)(0ssxE1EF&GYH!)~Rcs*;$vFU=?44CR{FYWVBJczfZ|$FHBh z_V_jB{%e~er}ACIT-#13-=Nj@y7(p*4KOV6YuoTI%)XugbtNwr)0@z%bn-0@@*>Oz zyjJ6;>enC7B=dI&@Uy#GuYmCgXiTRF6+P{XVvOAZEjX2*naSl1g)ie3$nLHP3s)JI zubKi*)n%!*+~nkCsfOb6Y4Sv(;F-C&m|=HkX0r47WQNV=Cgt6kd@hSu)+#Ed0Wyfc zolO1O&TReq?xRy@Vc_B8K3y>CIaAj<Yw(9h0ah*|^43V|+1ND}t5&dUuXXD6dM#E! zntqA1Nm!|$hGB}GMyaZft_0SOu2~@0+~|vE@=%nC6|~}ak}|Tdhue5z&7)!q#rrMm z39QpWv+7C&YkVBKo0tfo=>@KWgqWt&laJSUxe&8<%VN+oAY`yA8nCd7f#spfy~i)< zCReF=UbA_(Q-lHW6AHGJ?7vEz_TR=vkhRHJ#b-e=+Dpa9NwtNNUg)fINN?$_qNLuc znn>L7TniwZZGC1N+D2G4>*h3kfU#+q(pWd&u{HrEMCcDJ7_BY|j2O*?X=2lb?0Kf7 zZ4t>UmZ74awf0O4^VkrUF@b`aVJtHyY+HwT&6xobzB)NMuYF|5Ps3=CaRn1ROj8_J z>}YIvS1oK~TODSx4gF7&jni7PkszDq8NFUGfZhOWaa6_jI5teAVtq4nos^j`;<m^Z zdt4}z&1!wWb*Xm&?}#QGK)?j9!4s01sF~kFA}MRDKq%898z(J~swO9QU_B(j=dgM( zp!#O^x{+^?n4GjjRF-;IxyFMW&^cb75rm|3IlNOMI!hAYSGX*mGw+<Ct(hfpZvZOZ z#!1~$IIy0}n+S6x-hQ6w!L;^LDpJTgQ=1Dir$8~uZV{a^hRWDOn!syiOf$G{r*)rr zJYLo2rKD<aYfwDK*T6bDTP;@2MKRdRA}m+cl;SR!tQISHGb-LJau|+bsA`OWccq$} z%JpLGb+OY`+=J6y6vruvGu>h{bwlFCILPG$Q2RxrOOum$H`ca`o&ZY3gV9Z3dC)hC ztrXdKE)(@5$t7UcE*U?Q+3(bO5qP-wconFkf@etEmv{9UcvG*u6Gvv>my)sjGJsHH zREvA@+CbYI#0ye0S%uX+Z`-sblqce@Cl+N8C196dB11GeSp&qda#J@!NH_Vq8c$qL zs+*+j^&)RzQLQEwWZS|(o0aQDym4jacaXI}tGVBA)OjS-VE$s7Sk=Y#1b)?Gjg+zV zV~&`89`L~VyxSns0WYF$;!QwKF{!UYck#YkQFIat4}>D8IGB&~9KQLqiQlh)1hs0b zI%)&ah(O?qAkT=tF(jh)Teba$cFB9`3;4CylxqJ)gr`FQi3tsk2>7rrD)SWqL@L=( zwXL<LGUhJH*-Qb1x{0!GpCM}--+U`ZETve{pCR!Wlh-NGE8AGM{p!_+!>2YKX54BQ zR^2hpFeAVG+N%xehoRH4(y$YVzA<O0|Ff3DSMA?z&p0YDAH;A9s{1Fetk@DjD%es$ z$l)ys9@Dee)3(-epY3_JemCv?R%`~2&B`jCR+IKDF)3Sb7ZKhXGKd@KHOUnvC#iEl z>OkE^X_LE-<vFJG;zV3F-zp~V;QyJB8V;tPob-C5j6BsA5dR&qC;<m(`&0OBt%QH` z$|ILA_3x&TJxt^_0#L%-C(&Clc6KK48{P9)FJE$Mm^;ZfX%wkOB_10$Jl-li+uvAW z+uUl?EDvl#a5jGC+-T0mYeg>E1cB$uNH&TSQoIHxqE=I!$7N8R>j)}#(wo3rkgC*% zTx<aGDXvyqg_V+eiFjQ>^4b0*{61fhIM91CN={@F1s)465bC59uF&=q6tHL&$2+`4 z!V!(56gyt#Gk(iwSOG;?V<jh$OF5g_ps#R^UK8(IxBW%6p&;<JKmrz&zTRBF0fe^% zbTaO5)wElR4{JKS=4SzEPhx}32V&C!5l9aVxk_@vRUxhmj3AHHc*PA9H+D8Ir|P_* zA~|(o#f$DuW&ajf9h#fHo<rDgDq)Ft2Np@tgjjPnfE5-t#5`EmZ486eV@Y$Dace;m z&u)tNt>~RQiNe7<r8Va(P|SX6vb{e|>%WN&8^v8t=%8_rh_=b=IWBm;L23jAE%^XU z*nt^l_@;FI3|~||NC?Q(TFOa9UR%ZOuL<3VBNJwf$JNrgqBq~V)}Xqs9Wqq5$9-2X z1+tES{60$=8E;xW7q>7Fpw9Rr>l%GW<#-N2K9G(-ZrD!}d83rT=74CE-ug;RG>Jww z%v{N&7qSEB9wFQMYR|;ve7s>;e7>tMyf@Ls9q-|Pv^AI|+T24(Ufa5)S-%()L3v<R zS&S`k_~`Sg*y+mY*eP<`VnN$Evy!Lqp7|-JrGN=8ZCANAcKua61*N67z7Wth^+{S< zOT^&<Nb+JViTWoxw&|?yQF!*cDbyz?d)myz@Fx59qP4${_q(r=ombCF4J1}oySqkJ z)=vJ}0^yBaZTr%%F245GqSk+}+91#Sxq|+x!{Zq%%kxR@b)>n|_j^2=dR^)?-e@Fh z)-}DzHJ{|9^{G>gX;hvvzBwn@Ghds%v~Bv%_^jYGBOaeRb1uU%$-^RAdtXDkYNtLm z;VMq<e<x!re$zm15!JkCgFLD2ESs-lpqA_eUV?c{3?lA)Y92M2S;<(z7z?PWk8jKo zgN3edGgbwow&PXJ{mH@(WEoE;Q}-9}+$XRAXpt-Aic#JW2CZV#$lBd)rnXV#Ca+$0 zmc<z@>9$9z<W*8}C1UB~qCOFiN>u_1#EeJE7hC#Sh$MM;WBuAxCNQ6qo^|z}O%!9v zH({#o6?^7@+4j<V`nJq2HVC`Lu2-3^y^Ly%M-yLXz^ggKpuZw1JcgY}?%=&cTQPE* zN=cmcP&&nV$CCamavSyqy!2O{yAkGsyh!%zC*l*bw(}{Q72#CTZ2GMAH7+L#$PfDD zWF|l9n@i3>xm72qBvs!?P>YU@ESzIA5GL3&=7vjhrKq0ms|VTN@ZvYkN%oBPvSPv) z)6|6Omt|_*-Q9R*GA<XrmV3}-ynib=an^qj)WrYK-kW!~ZDskQ_wV`?656c*CPYb2 zQr!g_=1LrAo+@^xrde4K2}y`4fCYe-6p{C{zx~_$i~y*l>fWwiZ@uT0h!_qI4$iR8 z9)CMIi>Q0W!|tOT5)gF%d)pE6Tk0u3Z%Oa;-$oa2pv=9A^9a5!t(0o_m7=ztC5!1d z;esAG#t${<G<ol+#?xm*<Fl_{OXDG9M~!(O=QK-a`5bO2?Oe3y^yNm?%wJ?0P3<ah zQVlf_4;QYQTB*1uWtvZ{9?F?M*?3cmrm#e*cDPjImQp&0Sq)!-20l{6&6;U2UC6zd z?<A_&4Vv8O<Fn*+7cZk^xr<4vSLANk0L2CkXaVI9yov22hIsY{V`vg;vqR2i2P4Y- z76<7&kIulk#67Z1ydA5`Tcav}OGEQkh)yf+b&m3!uCPK`){~)`Ei<&R`Ss~6rm7}J z%9LU+7(!!IijD@__D~xyrF&===?&}IDfg5nNQ1rmJH2$P+_$M3C>c6cJp3?E{UY@g zupKubxOWvtM_)@Xxh3OH$!J=zS?lmpixzsi8JEs#S|zS7gvR7@+7Yd3g^=(yAan9S zR^vuNbu6cq2wn-RpYi>9Lp*Mt_Qm&(tDjgk<PrEwc~A7>KwjR_;M_{q$@pMX*7>5k zEQ{ar<w1VCt_AxkIS59o%1v1ilkpOIx4!zzk*k;v5DB8`mbWz3KH9)9nfSgYUZjeo zzT{L1tjrc`E?5}c2tSJA3oUh#%s;Cjb@3iU(kJV@l*m;@k)vzRmG?8N9b+Pqngp>D zA0B@Nba>SH0GS?gyh?+BX=UYX)m9pZ+*fV4f03UvJ{4K5=L^Z97AlO)P*L|HyQb#! z8g^J<)^L(faKTm4mm~I@HFm;x<<;-G1Xf!517?eqv;D?0KG)G&g~l$XEs|B4LSUNo z-Z9`L@1MrPp?}-tn`M<WdCU|k`60H;10K#0Yw=s>EB1Cs?t^DR(l>vLKR*0zVSVr2 zr^_RAxz67f)uvIO?>+m!_Z8ahV!HG(D~*zSc9j{@am~)=DgO8hq&T0wJ12&L{u1?= zy~lswN9>8Sq@*NdHJ*Y`Fa`NJnEr6UhOpRrCA>$AMSO4`Y>7u<;-GA=<OOs~*Ys{Q zRgKf@nNCmVX!m>bbQI!eiWcMW&s6LzN}fCp131S>W$$tz&2p*FB0T%PJo_JWYW{!r z3MBX;a@2X_PCFb8Eu2HVp4Kw;j-F{hjJXe#1r&8mu?`ddpeahGevc=_m;NNhVZ)&* zoP{Mq+vLPVd4(ix8*{{Q8y)N8hzI5r^`6>3Z1KhPveLQYj@G-x>|#301cEEp@9G@~ z4N^*7Wcgj|KC&B}2*$Vo8aQn0Qc6ehAL}>kg|eWV;1gnjThE0k{G0KCqoU$B1Yalg z=?mJ@hC+B`2nLAS!YZ7c6B@eTRkn5&txDw|M7+{=v|c(3*K-j!m$gkQRSZE`JK;>? zNM1}K3!>kWLv%+m0#Og-(iE&|ndlPJ;*d}OrcP=8!PBQO6RnJr;IX~w-grjrWbnwn zC-ccpMtRl$Rz={cJSxmIdIW074oOkB(yctf`yAUg3o})9-J>(EeH0uAJbAmsMhEsN z7o3!73-fh$(i6)cz)#M-e*7NX9s=bB$j#8bi`}kP{WI;)n!`g^x^U(@TC$OLc%IB@ zMeog~fwSEO13SQ-FQ&YOkNrNwaD1H}ZircKNH9M<!@hmT+jFIPiOcAIZ3K*Ux}IIK z3cQ)F_b<P<3BG*Y<%6mItMrn(s$8+-H_XIWhy`^%XJ?i_z2qvLWz#!nyHD=M=zcz) z$Jx=*b##B5hRZZurQsqa?unXs7tPLzHim2XMcnVAXtq{7*k>Q%`h|Ng1@bu@ry`I+ zc4b<@ZwWt7=J6WL@txyLHe1e3cZ^2hoasO67OMI-U8biI^f&8j9kLUY-xEhiqtPuD zXQ}gkK`%~cuV`>@=M#x>@!XqGo%?0&|D`XB**bq4{qe8(2gh4|CVzyqe*I6h99?ru zt(D&LLVCj6<FtrG#dG`bb&7z&+mrfPdb-;U?77yC!E7*dX$|*H4V|bkLUf@c>Np$( zk!xi<CpKRy5EkDAtk9QD!89g?mgUZ-B$3bZIFE^%w)5D1S0_Fo?7Cx3UB`mlhQ3rO z3srmE35b17zoGkZDTv@qP(pa;vt2Z_pQ5r;1P)QN!4yi*B==?2CXKIcl-(0f4HARi z^j)K@F$bODe*tKkac|7hS}O>On5Jjk*vJO!Fh*iu1`jdjP#Szri=Qg;KL#d2yAd-h z6W5@js2=e<F<<0U5~Fxd!wN?u(EY}}elE&I(-G6D0xhNQsU`1nKykm`uyq9-c4UD; z0kRhDVGwc6PM2e+!)t+ewC9!IE5?yIgnhG@pXa$7_nO$*9C{8$lVx?!K2Vp_cFYxZ zeFkr@R|#(5{oQ+VUF`;}t@0<mIP;vcsnC2jZ`eDT6<sxI*UKxiYE<ed!M90zAAz}6 zEizH++G8xqE6;{48$9z3G%!n&+p20X7#+&KE8>R{PqXj-a-1z7^C{gmbWlsY@?#Fd z+1ld}eCFXHNCGRX^D)dy+wK3R3)wk4tZ^(f+c1)49v+@Wv9@XO`6<m!v3Cu!<qx`u zIi6`~1$@LMeuxB~wF+m`x3tY~7we;8p51i}bI(i#{86!T8Mn3O2vqf|{6iW5sCCVh zc>3p|Fji^9Kx+@p_AutRvkh4Ca}Ryn&uYP$K7~g-I&i4)Cj*7W1@HfGm>fqwJ!zav zEg}qVheCb3RqcBxy#Y1Y`r)m{k^@vGokh-EFo!McXS#YpjW=-R&@kOeM5&p?b#6QA z&slqXhBEozyCtmjGb^8-PRmi7lw6Vo`+jXsVBMsA+D^(*`XtJ`ZV5R(PlEnKkDvX{ z<E!4Mcrml7Y3t<p7#z$*S5te{T>jx|Mx&Y<G*}CfMKixizDb?g{&y4keP3tGqCzY@ zul@7t7RMy)Gsw!CWYC+cUgEg8&Mp~dC9+&qJ5Mj5oVC?8oAc`eDybM?YHh##TFPrj z$2&Mw@9uI3Q$%|>HMYebJH_(*9ZWJ6=I)yu`q*@k0d#{z(>GcfKr~}v{6VIt$-*dD zC&Zh?8}K|Uyj-izG@laP(^hdvV&}&a`_M#;kU%S>NgGv30o96<aJSngiZ@CXOSQrq z5U2@M!!M==tS=I&l{0u;N%4E7-i{gXhAVX#umg5burD<-wTwiD09xIR5gPmhv4u{X zS9B_0f}^nD@A%zTWU;cn5dXO6?J$j%Dumzkunx&dnyJ;9Madf)s!e42-huCVn``<n z^pUt$H{vD;ChgO5(vC(^Jz@|GF$P%oB2&|K?nisU2N;p-EpH;=ut_WcY7&t>N9hXv zF@4~3Yc*?S8?utU;&F||7q&Dd0=ACzIWuZ#^@QbG9?}6o9BO!`Zu;*ScnR&bsup8q z_LbfH+sB58Rz$W|iEOl5E@o{<YHNL|Ev9*2JmAzG$xDedoapcyl5ZCX{D)}j3aPMC z>V8^76$xRSmnoG_*D+t~f1u_6%y{2=e$!Ss^Sat-$?|?Y0t181in%H{z)vJlp4vB_ z=Y8^g$}`NsEffs5AW{YFuBBsaF!kKzu3Adh1@Q^6161Y4E`e35@UaZ|3#?{Jd;*Co z!;0$xaE!JD#VdB6zzNX+2UW#1;g!<_N6f0JLI`<B@ExEs)GHYK!$PhVxQ6nP=OC{r zZ)aA|<0bxFrJ4SgOBigZ69EbEIEWkT0z%)DG%PXRr3h&|tmp%#mkIUMWxOUy8`Z~e z({f6SIIO05as`O5>1>{4$sI>_5Mv(#5r9k5u&+{j_-(wTlW-NIV{rp`Xx>CvKp?%K zS-9XHeLGvy5oFRkb#y_DjWK%_u&eR`UO<&DjQfmV-&?6~C4+EBXH?OoVD?IU4_DNj z-S0e3i>R1>L;ZUZC2L$FQIP@4R%l^{A2d&v|6BfGc+*ecYU|%stm}`Gw=|Sf)q;#V zY7-?o#)?k8kc8(xQI2_gwR4ih{INE5&Dg$xJp)rWgXYED!VV1BB)Aw*PYuSC3d{mY z8Zd6e7kdhQ10WO@lvP2RU#=R(uJc0xFTuEfn5HW%3K#(*JJS}bcygf*ELxSQ5{lh? zvUyrfHVS9S|JIHA)`%KFO(hz%rj0(DTe?>orp76*`dMtRxT<#72%10X=^`DCHj{$h zT*#Zf_ZIrS9smxl#?3RD5z-7k#C~ct+Z#mv3Pzyb-)T(PxV1TcB2`XlDJDU%bMTXN zL>!Uer?mQ?+bTCiXlNQet>mgvmYb`*okzR1W|%c+z%8^B?1dlfWz;VYcFi-Gp1UL_ zUdS_upryr5r1ClqPJ{S1rFYY!I>*YoNmuc6keUMi$l4_vF3j|J{33ldN=3?n?~4Z^ zwcU=-;y3AYy(Td(3jy*H7bTkCi)eC9bL$P!8^M&hNT1KH=X8~ZjY-4N(M5EB1+bj$ z_M+$0w1m1eyZ}>mc&SbHcQhhb$_xE2yug#om}bYl;wXuB2&0A8yh>k0yAmqci}dgg zZ=-%cK8~piZgp{{S#L+_bxZ}(-nZN&^SV}EcNgBq=jd9;(f;kTQ>8(^CSr6;-$q26 z|AzQUe-#%I+MOroAUWsJPScT1d`={m_6ustxfw@lodGDq6!m;3s2<~+Am2t?-c1zW z?rcazgMitj(&d`85?3{9<De{{oG%!%=%phG9MT7hS&&0nV>|P-qm^hUX==B#a?Xo$ zYTPT5LLW`2%u9OV3v7mP5Ht=1Y3{hYZ>(!U2av#OObw<@Is^iVAjoBk@NH^vx;C%D zF2tK2Ok(tzXRL=(gr2F;CS8K<S~|vG6TAED330%meFQo{GkXJTw37b+(uu9S!~!x@ zXv2njra}_&-KL=l0SQ-{rn&Nq=ttW~8!I9UX0v8Pwx{-sEkW66@kH2t{cXD{{bB5) zV(6G+674qrSXMNaXePd}f|A~R2V<f-#1#E?k;<2-eYZ$29{L~^%DmBA-*8B?irwDm z&A5usqWF*oQd<(3TyAWPyk16_A91NIM`}ieYZ5VO`YfY}W*ywGXdc0=`*2(}!;ZO5 zM(Mc@)D0r-Vx*jXIn?Pq?mH@_hleyp!zlJ0K=;IWoju@A`#{w4fFHhL?uXp*|4n@F zgE;s%(O_BSVMld^@{poQ7*>j`EvsH7UBvdLShiO|+*QGdd^;Q$*2aOc3j3lEZ7EMA zaL>BG^*p=>zl+s%Cmh`2e2MSc&x;{oXv5%lK3a;JuU1bEek75D-_;e`j?fX7>}9oY z$Q1rwr%l#FUp4F7UV~Vwnz(&0>SL1pr=6}&7#VKZf3SA^2W!`VFp8^u2bahjUhlNs z0BCYur!TA*n7TA0zDR&8*H$}q<NE#S6MEQQr6LS2{6c%z#Wxa=ON)Un@*z-7v@hrj zbBOn{Yol?ceW5O}1LvDPur|Ee8Q;rN(LZo!g8BKEL)YD2YX+Pvifg&yK&FPcHqB)! z06()s*Sq-TUL3R8d_ZU4jo!}>S+ia0njKfXk91cv+4ZQrRTq8jL$v)tx1kQ=9oqXr zdh)lY;Ve7;Z9e<k>yy`~&k_bSYhTx|%hwn4$I;9`e|<827EY6=RQBxI7N|$IRljze zbS`NUPH)BlRrLIdAf}kuYVD5<za5O*4)_~JP8oRG7n#%}Jy4kT!AC8uB%~=-$BhzL zG}@#--!tD}c6ID&G|_^jtcaGwtqQ?kqIlAK9DB>SAI2O*$F-Zim!`8Cv9F0=gkG+` zs2%zue}*w`vV-#*-m`D!fSVpdOdJH`g3l(72dj18G797lpflEs>N&^Y!TNDxwcDpP z>n*8DyV}D7n7oW?ZIxR}m0PBr7eF84)+GG`%Qz}=Vl1DXO<lSKU#-%(@eR4P`S1Bv zL0K~|d3Y8v4(_0->%j+4BZi?Jvc4Uvl6^<Iqoa=u4~Gs-Oe=Jp_fFi`{~muS@L{i; z$Kli2>zmg<&PUIp+25YcA8-H7K@gjS2Jw7w0vB<``-?ZMhMWHTKpPdiThJyg!t?2z zw#;X8Yyr0B79#Um`tEcl(mwku%#$w-gwl3<Sj<pZdqW?xgMgr`PoW$uBQ?-b(!;!N z%{>k;(LhYZNgvSkYO`{|83?9WqzSej3w}-~#FI5S_ziwCZnXm$ugn2>sG3JL{y>JP z5cjDr&T|`C5dAi~<aYt*VyX^En4&ZJ6!ugk_Lb4~o&MKMZbhV`69irW$cf!vQ5^|2 zRqQO>lz3{Vf&(Y6%si0$56JRMfLl7X+vXT>mv>Y3%QG>&0c|u$!J*U>!PaIhSeR?^ z-_sk|<1o8El}Rd0c(a8QADw<*w#918!Ne!=H|aflolyxk#;FV|oZ<imT^Qr&F-~*f zkurF;^exIax?Qe3>#o;f5+%q+r<43?ImvruN+9qN!QzmqUA$OTP442w`(V(DifWn) zI~ZImdjwT@4PJ$2_46Du8gxq!0a*;?E*OVNClZPQw2Vi<8FZuBG!q{a<wDvGP~Wrt zFhX;5Ul~KMZ`bMq?i*u+M|Pp4U`GLZ{h-IhbO0$@?Z`JA2_+LYGU(4tT{UR{-ANQp zU=pMbJg^-ZaFPkah{5v_`l?AOkc{GNx$F$zp54v;GB1Y$txpmKdD=yYjzpCoc5^Sd zmD2rC19Epz{gckQo~%$Jy2!-eN>jV6?U~QoT8p^CSH2%`2+@8R{n%0+^5xP*6?LT6 z^Ux>4w&@xaBU74J{XR$T?qdw|U3MKhRAGF+=T95$ghuQu+jSmRb<=Fv`w0WpKU93r z8-D+r-S_ZEqozO5Rb6*zJle>~;JCa*+@bAYq+W;|ahWrB7&<)oyenO!uqM<4g&~&& z#YN4yJyVJFqq2H0O+qfv=GW_0*5(2GKBlG^^m%5hCYqVMn3o)p;VoE(8PDgIyK(Fv zPL`3@vWNlqujk(We#Az;GKy<rX1a8#W+j*r3~JW<JG32o-0&NAwe<)^5yhWceH48B z-{v*z58@7eDI(3;eU+Y&2<8e~qmxU!^uM!<_TDIk)%sS!r{PzuVRXBRW)F0@DfX?n zC3^6j2<kb#xbcGB@^pYC<Bf^UKe3Bd1f{W;%D%?N+G8XJ>1?e9Tn+MZMZ6fK3~Iwf z+dwCHBDycrOe;8*xIP*+PxZbMu^)FeYmD89sC--s_eBHPR_kxdkF!;ivpb4@j2%v* z9ra0mUDbE&<^dnV7Jex3T&dC$7E{iDuuAW}oxpm;D!X#))lHw7>AlhVj{*!4(~-xb zjQ#m|Ni5M+tNLLICH95$j8xizDXF2T(Q=|?6Vlrd87`2OgqV)drnHGw!!~+8A><Aq zg#+KAT4f%N2Y42(DnX(nm70NsOwJ8JyhBuJ&20(IZTS=d7tQhUPQSa$kC|=W)|ST= zvmu6MIPJMVdOgpsL#leEEgL9Vq?uSZI7-tiJusw)6%BXg?$6zdNbZ4MMC#M8$0LK) z9Tx2Am;YF_URn@KunV4hvpm)o3g!AU)xNhRpU&-sis|LfkfQE^wywtdrQJ+N&U1t9 zt#^iQtQ^;)&)hMyw#grDbg*;vk@lBRgqATjVIm0`OrWl=i-zQhLg#uJFRL<VX)P;| zr6n<C+pD~^1(`}Gty<_Jjv#VebyOWW;GJc!6wy#ir#=F_zt;uE!aAD;B+(ZacL6ri z>Jrh+LF^F4Fc6{<M0>72na8t$9;;Swp@7EMbt(Y4I~cCTzjYexik5-Y$|$yRfUf#y zD?N)<J*X6M3;}Rvm{BOwdlHP>p*d9(^SZjp?wX<HC_`wcnG9ub+66p5!C)8$54JM< zgVQP2UMoZfGd0@HO%J7qPq~NA%D#VzJUO%X=DbD7(WIi^v-v#iy|G{*!=a>M6P~8d zgf@pPPsq#(!60Kc=~+Hj<Egp`=bS(=X{iOL^HG3R8_eZp1t-U`uLK%qoC~;YWZ$-n z(RZ%noD;-%YFBX<8c(Wjn1_^ZB!QNbzKb@$ZkNQXiI_B>R*}N209*oh5gdm&#?Us- z$s!3cK_Ljdx)Sewz;|67bDwP3q8m+CjJ^3slmGEHkI#=U!xhnr=}J?JETr8j{tN~} zIs6fvSrS&GQT%WrbG1~1hcSupEFkbd<K12nmJI+<q8Q#zr5;)?EnTrgT1je?JCi{T zNzk;k%Fbb;Pm7#G3_h)@H;}-G?@+@R#M{u~epP1+NW-JEXYlLb2L3qEz*5aK-V;>Q zChc?q(~$EPl2@7Kl-GyuOVT~XLWzpb+gHVPUTxZNfw~`9o}kV&(`WC_S=!CQ(>SNW zD`@bN&*I$ca^~c^CEJK(&CmGelip2Yr0V3yDDu~bI^383>M#W(qBe(|W&nqRRedJ9 z9AJ&Iv_+64t)1EX^GPvlK}d*crB=laKw8l}mu99!3Cr2L$N8L|)39Fp%De8BQ!WAS zBGz4o6Plo0X^RWk%A>fNL5n$02WT_j@#qRTW~I(chWP{kA^I52Pr$*|bZixgT9nsP zMeJKl?9<IvJ`~K+O9)t|fd0_Q@qn=*^*C+GoH-Z53us{YEP<y>ko1Ib;;8$|XJ^yi zJCZU!J|><ja~ChmaI`+4EPk3od;?392?b}PpDrC|YF)*LZ4{e*lyQ1_BZZ?B&218| zXdj`!!qONMaVEQ7<T%wl;?gl*V`_JDZrMq#M8XfDMMXBc?PsOrE#H2Zm6!SUJM>&m zJO5VTTDI)k{QY;IMNESqolN$Tm(<xwN<jQUt6mA{iaH$MWHm_`H2fbb1feky@uF@K zoio_H>A<`R0eCG5U`>-<0y&3C4XY|{M6vurmrUKQ-J>-wS><h}r7e=X<zsK|h;o=~ z9hyWR%P{28OmQf4k6d-z12eB)DVC=+2^7y_F8*Uyw23<Q7DOm!`swkps+dc{RKOL$ z6Vsdkj_VLgcj|nv{Ik>T_T$c^o!!h?7pOaszbciFvs}P0pbZMKz60p|(KlbIILt4r zYze5qUqIXk%L<nBFXm-5BLldy0LMRIJ0@R#iB*7XCsbUCtnM8+QFk%z==|lPu2!q5 zH`eMs4EEc{qTbW=enH)CSv|jX-OW@EHO&tVIGDq4z{x0qFmjND`vS@f=rkHwcgpBD zuCXD?-N53<wVK#=FQq4*<gJS{n!;yy#p?Oc8oqT-0s8tC5zfB3&PaY%MP4#wqcS-e zpZJy|iRnu-+9+$CH?o1#x4z~0!57m!Sxt32qGU4_P!>pHMC^Ye;&Xi69G}GBrzgka zBM`Y7sULj3`M9mVU$2dKfhqQh=jx+9$bO0gs@s9o`9A(ZToQgBTE)J3TM(Dr^TUy2 z{I*T}D-#c-@Rj7L;#+~E(O<`#VmTV^_%}U^|LW#=X85Bab@|M#tpl=hzl(oneP8IJ zI{HtfZK5>%0*_)N<YTv7tlX4aXj?Ce%T3KH5H^xSj~6$2+fx(k9F<}$#TRJQ;;wG5 zjf&YPL~!Rc-Tkzqa;J{`B$-7wPqj1dGTRx@#Cvhl`Etl(-UVp^NuG-Z?GyWy-nRPf zwjI#W(lt}0oEpOnT9}BPrjb)b%3Cw%v`l~^*HxQ&cD(LjdrMn<g!O3)T_#NdKQAzt zS=K{;g0`gi-Uwl8(^)%DT2E&i^*wM^+LU?*1@3$ox;=qC#L06TGJfhq(@t@Os?N?` zh%#4M^HJ7je|*l{Zznq6ZBGjp3y*)!p^JZwzfiybrJNV;#dG2D>)rPCOdrpY_$<%U zli3Hy|220>P3r_X1#P|IU5KSdsDA_5L&E@6R1lXKRtgS6aK;IyqdfU9<6rUl%Wu9G z7XY574yh{r*f~4mm|Wc)EF7GW221L-V{ki~kmY$C96ve=x@ZI4smob{J;y-!P_qb0 z{Bw?|0gJ2ng)@z1qbXA#b+B|)U_*ncihVIwH$(Wve(s#@;-&wLw+_D;%R1F<P)p~d z?jzCt7mBA)K#jjVRO{#6T7TJF?dM*#%m_I?0lk-WAoayWi~w4IDq5dZZ-~Xi#WC;j z{{00LluG=$D#wO?__^GP1J#Kb$tJ)cmL}TES<o3v3V0FC8=MGRZ86MbDv3dgh_KRq zz7J_Qm+&@D{yh1dCqwtW@KM<rg00p{PtzhKk_BFe!ItSIc6Pvz{3gde4JwC6I25<_ z$skQ>)m!XGV4U1LW%z5{0y3k2w`CZ3*jE{JHSUXmatGZoJUe}JeE&^qf|+iRS*EAh z-#7UtAKrBFf!2>I<;cE^TY!1-LqL%H+-ys*-Y{%)FNr)#IqSjoxgowSsjcOSGvU#K z&HIfa3X-b#3)C<1JX}g%UYnFuoSn)<KU1k+xEO@QMuYG;-E%WmZ<7T$fv>byp{FXf zj8kDv6P~SYXh^EOT{U2@`)m}eO{rpwUTiD^83$M%5);j9md!=1tANtSY3p$2a@F-* zBA6I*BZE*f=`&qj#`j{3+OJseDta7hG;7T;mvc#K)TK^Cqa^KoqAk+{&Otz*i1QR3 z7=wQFX8hA~s>fCnIFskXFl5Q#WcO!=SzZ%=7O0gFt1-;QLtc*@_$YS3u~Wk?oq@Ue z@bVk1WU<P#`mYbxqvoW{c*M>QX#`!i?kp~R-IHt&G}~RLt;U`E$Hz4=_gsm*iV@aL z%V7V&$v|*8k6Mow%8IC<+C63&jhZ)GCCduWNNfe8QLN5*5;j(VYeH9J*BZ4^4Hjy2 zJfDKoT0VX~-bSyNBRZMoFXnuMPPfsCN)m@8r`-g+oV_<nw^103YWOp={P*wk$0jLn zm8Y}dRkfzm?+`yizaLg@TV2z^m-$5-&~7`Nz%?jgHN!TTr;>Q9Y428?6pa&gZ&gf( zcNMeDxaD<Fo?{4IrdBG)t2$6m!pz@vbKyF<%xK{6cP!jjA^~Lx!B?+G%#=MOp@`Gz zlqPE`6XM8y+9{2StO#Yf*-bvwh$p8s>FPdK=m81xn>uvi-5u-xLTwi8&9F%^C05{7 zONMz3xxm+)cOIc50RR<|Bw>+uZc(q(4MYnc9gQ|{TFJ##*StcoE*3{e3#yvKitjfk z=@WY0YP-cXs&us3ZqJ-)ej}a1EnJLNQ5>EfSJ7ko8&+uR36&ocgYy&!cVU(S+UX>% zCX2^ZaqnSeMb}IY_ECD}V!Op_;dKd%!gMhT@jE(;9>a)`jPMuUJ;YIM;0?V3wo04T zZMvW%BG4(v?XvP=mGflKBek%ZCK-^!pLVqqCPZ(iL3c!E!Cf7nSIavu+eg_6{bFnZ zHECOC(#8)Zp)`|Sw%y<yrUQD0n~)Y>0?&)Q6QTk}Qv4=Pk)2L6s@2nMQUO?@W>9Ul zDjBP#_Sa$z>{8tVj6#9gF7&K+K4H6+P;$CUz0s*8<wR_Os1rL&J<HkiMd}svf0W1@ z51lv4l~~we=f$Gs;x(C`n(q>0P$78X_`*(maL03<bT;tjs=66ieiv%9VwUr&SPt3N zRT&s^tINyP&_)&@2YQ~lrq8Kj)bZj_IgR55`nbD$X6h}|8~N1_>Qi}kXSRrSE`qp* zK-w}W5+^ZV(k(wE$ahMMsLT}}f3*GEb+z2A@<-d(Csfz3+1qTJFRrtwS=7b4rE-_F zoCH@bnVrRfP7rjxS+&KQ*4jJz=p6(w+SEXZ4au{mJjC&ua$g-1si{`U?1{Pgl+G{f zYO|JN=FEAbt-S|YEKF4?AG$^9#qV~DK5c7NynZ(D%r7b)FqxeK4>JhnyU8UHjCIQ` zN#&S2g8F34PvcU1QB^Gtbc^{o6U)dY8^5z9KXJvUOAkiM@!--VaetP(ej2qsIS>Vw zgx1?&P2Ge-(}5gAx(1>#9rc~Wtxb)OXU@uI2NULPmsk;vsx6HwpVpI-*0L=59LBWZ za#fvYD_F?_4g?lD)OPPhqFuhm?A{*z+w}F#XmVn^^L8H?jRw<-FVa?#ZoL6~TxXX| z!y^s!avERR#x9@I{}NKbU^UBmB=C<_)U`2?q@(*}9ajz@Of^rc$Yi=kP#=_7aL&k5 z##QiAV0EL4m&IEU*(ME_YB#T-ZIt;L^#SKMG|6TS5o?-jdP2vU6P}CM_tDMxs=Z!) zTj$Cvwu(j@Y_SUtqIVEnGH5|Gpz*|hVCLnrr)~ej^)PlJLur!`-GD;U&|ipnQjT&( zx`&I-6Bq}R)^I&rDnN;vLw1xyVnw_cd>h#SMnJj01xVu==x$!64zF2tHvI~6F)cp7 z>nrH@nCb;=;h}k)!Af(#aN3g17HG?r9z_ji7(^x%v@$B3i``+*VX59b0lmi5d*(r# z_U`;nt~K5jm>2PH>wI&uIqH{D`PbTkOl|R%;BG!&(FP9xZ~XFj(oWhrGZRQdb;f?Y zIL4m%r0m%(QDc1^&>PB%tA8#}r407Dr)DpfJCq&r9NpbbwR?ko?@fMp62DR#=ykPe z^6k1RV4&YFBv6;iZnjGr9QsqOqwQi<EZ&^N&-t0z-^L_HK{OkO<55I%n59B5ayLbQ zx%|et>}277nJbqgBPe(ntd9EFKJ!rr@ru1%;>Ndn8Z*&-PrNNzI|*c=SZkmoYZ+}L zuD{{>0cT9Fuq+kgl-S5x3u+8-<DoQyQcBmAs2k86b!|N*O4n3cmsO`uQxy1j5f$m1 z+$`wB!o=<C*03^{WsU;igag_IVxPv<1r&R5$r<tz+(qL{7!Nc4VdODBzu_OE{FwQD zJqG|gTXFJ{_=JKw3kKbtx|iO|zJ**W-8dx=#oyhXG>U$Fr*(~y!n+6bFH*GB%*(^Q zInr0yHAe^hv%YRmVAy%iU>y2G%g%?!;U>M4#y7BZ+cU<^qh7vKuM|7DKJ&ak6f-=) zcHE#{(rq*)E-&+%6QN5=_o==GMxJBlwQ%mZ0;%M$5ROBopba9|0*4LJSJ|&%gG(>d zut}e*-Lsvo<_g5+43KVNL;IdorNBhS8cigMk&62w)s15uhHOPl03vW`iwcYB#Tcs3 zOYCO=o4gpGQ`fU;3AjglpIxL@Da|OA%ebOm;W{qGh*QUEfD__3X^0XTuviauQp7H> zK*9sR2X#ONz0&9tL8l&G<jIvnN*P1xKwDq9rmdgZn@}CXf8TuF^J-H9(((d3#AbbT zbcpaWb!OxLui`91z)07x1Aa$6Uymgfj;KbufqurXu4xg)3q8U0g!M0^(jAbzr)wSE zu=d+K8pWqnRiZeL1)BnRIAn3+BO&(<8j=6lDz&z^qa$z4BGay2Pr%swM<y-uSM;ZB zjJe$Wk$Fq(@4l(WgPVr+!&8@&G5{@=6C-tU&%Ay;j)IY%L3Bnt;rQ`uC@Enu32}sM zG_cjB>pqy#f>^q09s>>Pl4j9jtmi&$NnoQeuzX!czCrd6nZk>)nZeXb1l@2sy(X~Z zJbuhhOxx|Dy^dME_P~qWXF9Xy_?YITOo*c+ePkzQG|8wvYinKv@0!(1VlmCC&=>Sm zSFuAoZ(N5hz#!S1+K$32acA5*me`j!kseTEwpflZHF%=ZG@f)V_#2*+rgR`LIglwC zVA^YPI~0qpUUpI3va^!*yuvzQRkJYRU3&&oXC=NdOoDzJ2QAKo+{@%z^k%5JtCYEr zMN(+(0ASsH6AO_W1jd;=biz)dc49NWzSst6I;`vbBlX2JJ<fRQIM<v=<(5`#W7?<a zPU9AcS(&K?1E@l0B_socbpcg?n8xgqQTt!E6>-kX5RL&*14ALG8di;|q1R3h_Yg@l z^y?(ko2u}$>+5`3AcNab%`_>@!r%w&sVtn#TR5TqCYmW}Mr=QJ9O8lSV?At$rwYUF z7-eR$&Ls|2DuRoyYImeIZ}o8-P8I-OO`<D^NhjV878VYcMrf(9?jg$`^hwSahKS16 zpnBtV)wFuBj*k3uZ}4LMCiaSv-rVn6fJqJ6f0MR8C7`*Cj0PAg1~o?LpW{1#bXO!4 zxS;d-SWxYsrDw{oZv`d?upFy&<;C!_Qcocmxz*}g4=q$adzh|FhUrL@8!C2_NV)*T zZ+Jx*ZA~^S;H1Fte}>rUbfa{04k#OkN0{CK&4M+Jf;zC`a6g6ABDYjF(3RP;h{RJ( zu<dFj_sS5)Mxk+I79=Y>4%N;K=}HB(JZ*pXsaC`3F@`uZ)tD!pQ5|;7yBRaBwcdeo z9^aFEcb#jWysnQP`^s@BgTwY~#}X`nqJ&P$$phIA-Sg}{4?o_!Gt1{4AHlufr)<B! z^GP>#(duL6n#jszgc}ZnJj{%%<$RhaAo{8&+0{r<gybGByGY3M;pSX<II27&_lnaW z=mnb4FF9|6z&xP1*A*9%XCy|tX^%|__)bv<yZC&ysULbr>b(P{y;tDE{x?*cHh}S( zmg2s51X}aX&Jn0mh=BM|;z?*rWgApV8m|FdM76-^o(IO^>rhjnILLV4KF^5&<eO4@ z-X(+nPOd3=uE-$>lsC!P<IuY@mY1>~#XLvv+=<`6VO)A1&VzpFc;S$HdaD8n`c-K_ zPU;{J21trpe<OD?!s~&FZ)?DE{EyPOIqVrM#pFWKsLkhF*^2UIYG47)rR~<bm-TL{ zy)Ae9ZTccl-so4#POnGs=;&S9F8IvN9Ivj}Eg~_aF0;ks9CH6$iZCu{zBEO=b7ggs zE<j+AkwDF+$@h!v{AHV6uT$w!eY)L}oC90wO{maaEO7udLEIy<>Ai#Yl&ITrzsJ#4 zLkyE#e}M0i0xyf}4SyygJA96!AE4Tw8k2qV;05gxV5Q`?c?;(U>hLW@3w^fbA9->A zyB>OVk3W)k5B1VN(ufCo`S)5g^r)I51FhwV9LBTBR_z!09X6wL-ZvOEYJugxGCSB6 zBBhqEstxDwz?HUMsi&5Cn-wb@@nC#Qk~lwfP1jWsdT;)dKKL02?7OD!zAf?_{1O?@ z>Oj4(evXw#$8V$%{pc$y5t2EQ2CWKu`A_zcUsGLN(9ZpnJ>;uO!~EIOIpG}#4O`TC zUjAec`3YJ7&iA*KQVh$9xlYo<pcJS1QDa<GV5VH2NI<R=J~8(1R0Ug(bw^C?AyFgK z7v_1_f&5jcuCt>S2(t9|-Q+#``y@F{)Pph$v<ejyBr?;2mGM}CbrSF~?HzRx^WiGb z-sbu;ZKt{uRdIDD52zFMh`z;}y1(6Y1)O}I-h2E&8*9Y~9ST3%>uHU_$f)lg+2w2l zM%Xg0B`ObW4RwIAQ!zFTNoUf9BnfI!i#U8E77pvNWAzN9B=?*bz5HF;ZAmrdBkMcJ z*LQJM_BCPqiX$OA=J>uy7Iv%c(@b13ouc>j+U+Tza&_c*(dE}xlAYG3hep9T7&*5R zdyCUBiTFc@T1aIAHE1$X`63tuFpq?0(tCkao$mqrV_gD5TTBGJ1u<m+5rl+kUqa>= zN>=2*QAlZfEexJJGxc}t_<wxOP9D=kSj)EOFkG#+`Sm&RD_8ZlxW3#n&$(R{<(n;t z;+9y8>^chf`-MCf49e*B$+MHoBK`m`5R2&cDLdM1pQ5&tBL0<bDO(;uET_rrZ|QuS z(y=!2jp1YRcUa5l;?qOe%4W|$`ry?EuV>ri<7kTu^Vf46Kcf<l+)$A(b1yte0H?4i zz{>h{*he;NT{Ntqtph>e9BWXlFkp9$0Ko0rEzvS-O#9T&y~B$r6gs#saoi|42}X*G zbZYvh8{l#x4wBYHY_eIr4>Ssg88u-7iDs93Z*|}FZ9b^OfP#9`%a+6pwXdiSE5}P6 zT3YeNV8i$dN-3?hR_aKt+KDr35t^7avQiL-@bXw8y+_B<!?TuATTuo|iQN}|qnh*! zr%@ZnLP9(akm{w4jE!Kr;;T;jjXfy|Eh;!Iyme=%YW18=O)kkqJs_@Xfi_C>IjhfH zb93q=i93FK-#K2QZK_R>vpED7?KNtBQ-~?B!K}-4eSC&Q*>DMen_h-@Y*%=@-L8RH z)-$Z$Ayu_wl0Q27Rek22gLv-K83RH>H~vm%lebXILFszusMDyC>@5OaT>KsM=W3(i z2CaD~y9JOu=g;vyEr=!O=-4VP+$GBPUB`pOjnx560Wu;972d#hCrEI2$WdWEG(OEu z8i>io)Ai(nrrIhk;tLw1C1*Oh5oduA@g$sTX9J-}JXo6e4mV772++~NwiifgbP-7& zGfte6HnYaShjqVETGzziAb&3KT%K-JV;WSYT}4)|tH_~Qe=Fa^$@7t3#4ApnG;Znz z4Y_#gVGg>LbwK-X#=qoL)A#iXRq11?BTBCEr1i8h0dIfL8Hpb+G|D-L;C$9k7lt6! zsSCGFv<vR26O~J*R?e90wz=J&9lFrj%=N%sl2`woWap~AEUZ9ob6KOV-)_VXI(XC> zM6V9d;nvBHl)F)Ot{2pBYFOPxUsD%7eRTHh>B*xf&jLY^?J-J*?@?Oij=u_1wFg|_ z1-Yl|_aeRLV$YxX7bKWeaQT5Z%9EBooSI01*%HaW<Ag@t1aCw@E2MYJ5SPZ*6UL&A zM8ixgkspiMRn4ui>Q?lvR}tH;c%N!?$Ey}O!{z4H$-^u@qy@@8k<N%V5<yb-;=tUT zUNyU4dwe|4MK@wCH`9^6?`MGo0NQjp``kv+@+H0h*@$X=1;KmM4sXUOxO|%)d(LQ^ z-o$-@Vgh&N><cHVI&@DppV;T(mz=C*XqJ9vSVSjs?!ki5K+0WJrW-hz_XD}%uz|<L zGg-Mab28$n$I6~514wuJcCP)UdkNbtE2JF9z}yB8=DkoV!1uC?+JFc5cX>x(@;>jM zZ{nAxKRx$2X(x$1|5S4{3+KP;Y~b2ox|g)vZ`(CN!uBSw+Yec13^L_m!J?s}PX346 z$!~UPcIQIx#q2|mVY+C2W%_^H>%0secy$l4(g28aegd_5iK-01%$%*DoBAW{>|Qyi z8h{AyIkEbZ;=q34q`^>{7o^E*6^uzcg~EZq0u07r<Ph^WUSutHv_H72WvZyKL-q|3 zCf<pm^JA-f$?Oeoi1Fqe#HxV$@B__sgZsJ6XU3g5f5@GA4qV%=voa=iea9nbgbcAS z%g2<;GQEGmS{X2>-6<+fPhEe@R?RR?*kpmT>1#g)Qrv<MD5~|ZGZR|$z)ZKoj6c06 z4zQ~%?Wd;$Uxqct@yVs;T$IPIO4R`fU=<WCYFPfNS5*?oQJ~2dE~&#Hc9&KX2))o( zKj76I@S+ZM2LNw7a5`f^?bbnl&b{y^Nd?3>IhDyW2IyW|q}kK7nq=TBIhkSQ#K_8m z0H<{m7PE|IR67S!SEEF)8vc&}efQR;gXLTs^~#Ukh)NwrIXzt8MiNRn(vg&pd^bof zje7i@5fY31#z{I;j;l3nVyq|1BWd9C>YBvQeEE{2=YYZRq1T)$SI$>k<j<lOOk7WM zi@70&%0+a)Qjt=Nrh(&q8mv_wvm`rbaL0VI$}igF_zeHnw-Zh!mi+mY4zFpJ7UgkU ztrOf?lORvaJ2{=4SM`#H{xo2?!{O?6uDXee(MmYZjUK%{Zi?SfkJNHZS0+&1UaYE{ zq+x(5_2wkow3U9D+XA<p|32aN{d+*WnYS0O{H=MR0I)^5<M%V&E7E}K5XaPNP5k=V z6DSQrK)s+X2#bx(=hldtO#^y+K+OKTe^y2LGA6FM!mYH=>E1~L-TMK}Y%aYRi^bqa zJV64UEpYBjG%G}aGSsL8e&P^(Ne5bOh-5KP%EzlJ<LneW6R#?|hkir>#~M)W!#5@i z6IQ6d2jTXY{I2J#Vx0yG3?5^Ox#9cl4?hBTe-0IA$%n_ouZR0)=vj;Ja24NE$(KB> zzROp|9?WS5O8|uJZNB=D%A?L9*j$urR5_jYZ%?rTlwV%>m6<1d%5HYCOmAuHz7}RX zWPl2t%n={w`-DvH7A<CRi0va5_TWv#`hqNFvZ6gkSWguqnPmwk$1_6orBZhHb|QJ< zp?@{@yAN&_KWbkyI{r`{w*rOI$O<5mPRvYE^5mxV0nX-DPV9B(s(vobknLX8p|92M zGezt?1<(m2`eoB>6a<NrG5i-#y?pP%Vu|~K%@Szxgrse>2WMC*Np(Sz+Zefy14R(s zx@FZhZ5zjnSx#Hhcodz)KjHQ<fZ6i&-VjS?wZAQz;=EWD#H|Kb#d4XKL99uriWT0) zKhVSUa@u%buCoP5B2oxn&`|!!2_ci<z0*@F_Xz_1f6UL{6o~Qvs`@PebXzcwf6n(T zay6w)pZzsgl1UDM_~+aPV`zjaBoKAc<3?Jm4Z!*Ile`b6BiO{BAOvvKMt-$+v_7}- z+Y(}pN!$?Y;3Kzrw^D8{=b~tBO<(xyC)MHc7QeHeGS#Gs6cQsmdon)`X)T>b(I~7r z7@s5W6Q|Dq8j8h914+cm03OH~E<lB+l9~(HLDN9Cvmntl&iV!kN+EGM?-7%eK8XU^ zd32!mW@O+I%2AaAd*bkvlUmf%(A1_2A6qO1wQC0cL%R0E{sXFsQXXKloLp3%ixRgX zgLT`hjMnBBf1u{1`D5kum@&A_GsYgEH#oz`hl{*`MmLZ>H5j%1Y1*1;IzO(CH^<E} z&<sGP%^(}tE;VtOxDqW>1ex{Qfn{Sn1Pikv1yF|9>=Tc9powJ>b@H<o;6cFg1X>ZB zrN{(-HSX<gK(8$<&IU+%9Llp$uy41A&dv{?+n^{(5*~)wkmgCs;6L1BvEX6SBi@^^ zW=48xARWWde5bt&2JaEpl%tZRW(g+HeFd6E^v|cz+DFW=**pq?Dr|&qMkOex!C8=$ z?7e1?GLrkOEUwuh<ujt3e8BF$;xxJ1T-#HUI9K1OX5e&{-+oe8H~RSH6$!d;_{`E= zIzuOaYR)QKf$*?=u)fN~g@kBDb;C!$ea88=a8y;->`1AJ8sf-!kOwUDVq$-{qa*&$ z&bgW-4qOS5CEytnW%|kN*6i{uv>)aVCas@C?JIE4dT<zR#5rx8FmW@JY1RfbbTsL3 z=(?3>3dBjK+_XqmRN=(x4Z_OA3(ADlq`Jfem7Ie_Nfii7!RxQ&!KG;>suW08iU{gk zDqOG}an^u7xJqNeRiZvO3S*0y|JdQhLcUpU6j2T#J|(4ZzRK%@XE}^@onA;;Bb_Ng zKnx;B+)Y=wV%>TXSkKj!0#)CG*!0k6)Nty(%#Nu$h~dMd7<ohHj?^g-IqV>d1B)Sm z3};ebXDbD0f)tJiKjd8K2O&(dAc^CgBBa};7BK@Z)2*WU7`ZMH5<ab{pA$iPH_D1x zAbGBddyx%x-cu?#pO$v%hF&Zt9rJIhi+Z#$;vhE2hwRh!UA|}=lY0(JiEe#}5vS>D zi%<z})>Q2mHEm|-pzodhwN~Y)%j}{a6s$Y0YO~4y;099xDuA{`MSN?9V4K(lc{TQA z4^Apv8F>^|_~Z1S**Tp7tuWljssWnrOWSyB1?qlxNh{!@u&`VfyC&;>jpKuFER0di zyj&SK+DxLy-4WAM;`6V@eX%Sa*h&<$?|g;qDz-K|Ck6)|%9CRr?R)!7a=IHD`3Ec6 zMQTTMT;fCvLL#zOe9)m%hbW$?uU#_>As=BWh;_+MGS`&L_Pl!}R2T@?E_Ha}0nk87 z;<|}1g}tw!nk!%xp?+BYwp;pp{Dgl`9nh?u%VR2KtlK!yyz~pkZ1>DvU2?ZymE94F z@hzEf+g&hU`D)9-nJlB((}Gos$gGgf=XS0!JBw{fe^8~_G6#v+g}EwW4b&5L$9{5s zm`gt;WZSv{r;dkv>$p>M8epd!u}rUS^1MvjHg5O2UDHiGHxSthX+`wgB=~6ud8%bi zYfbs2H8dB%M&77n3n(I9ag1@(q^)-L1s<0&N8O~_X<hpQ1Ei~#Lx%9GI=gRacVF7- zHg#WpE?>D;^j$aC%(Pq)W&y>~rb*`+(|mh>7uTDCbQs8f@$k#s4j3;t!bPf-pcQpV zs{3r_^yOSzrMeG3&g0YgZ1|osuS%`jszv=9>Rvszy&pYpNA}FGuW9qOvS_%MtfP;F z>*@M+B3>w{X@O2l1LC@`Q_X!zy|9aWv)7rV?!DNpFTFRRFrEEdjg3KnVEz_ub_}B0 zff<))xeS>Gs!)YxOHucxe$hlL5<<Bi%XRq1V3T6W>X1=6LE4*6^N4!ga-W*odsl!~ zy|>|=Cb}98d3w$;-IjO`egiZ8H;Exh-iPqL5vMZbpdPR56>IQ{NWj2l-cs+o-`x2S zEJ42Dx$+D(P=^9Ajk$-wlnp!JP(R;b&+FeCzke*ON=4)Km=C}GEIN7OL{kO)Y=Bo? z+@`$=8JhuuM<a`q#4{1eYy}xc;NG?XV%q|K4dCV#-Lpuaj~wKe4Ca;^F;(p1TaQI= zCoxd;NYj3x1<#LbLGK#89%d~ZL7m(hnQAFJvA@k$k({<1Kj!!wHm%EM3@2hKwI?#| zw{&cydTceD)`weV{y<poBp1)mRy13R8%UoVBkO?P=SL*mFl!LaQ@U!DLnV#9A)sIa z$4WF#3#HS=rfl1>GI|%+?JQik;}$y~LZsWdK=0F@x1j!aZv~Hod87~$i!MSU1HZ#V zP3T_<=We5ct8Eh&ZI8Y1@WhlLQm`6QizhgX*Afu01UGV}h3fdylgTq?Lk!vrKzcFP zf@o3-C@zeGOc_{i^U<9do;sqX%va&^n3<ClI>*cbT#nrn7Z=w)v)wj;7mV$d(I{Sz zC99x2gNClzhmMb9i&o8TRDF*SaSs6+`A;Tp+KLMj3y`yd)}N;w(;9Z%VxP1?7A6au zF*IP|<rG@-oEQk{Knc*~<3mw}-8o@=cbJ<{L>1*GpIjn-Z3)!PyQ8B!=435HM*<r3 z)SGl5K>|qxy{jCZ-OV!qt;1LwH`CdbIgah&PtNhr^H>f0irb_CF4-H@&K4`KS~Ssc zF@T=S&rKKUDhV$HvX8UabOCy|+f_XDcq|V=D;hc~#03q6oE?in0@q}>Jxo`Fc)k~q ztys3(FeC@3>~f~jm4WhH?IP6&E5?X5cc|H>-UV331#4>zB&pXTcI(x>%1Tr-3dX83 zG@YGt_IY?>JLBcvIdkv)?B01YN0uL&K4*5SFC%>Y-BdS$E&(s*5|~PSB}(pG9C=L^ z;(KiYLhnGAr5{KSFQfSK=*St}e&=3pw`w3`7Z$|O9H)KG{Ex9RBKZg+$d^;BkmQtZ ztfQEVBR?}PrW?g~USfQi;n!ExZ+hxE?_c=)j1X6DMk&EJOr<}O{BvscGhn1I)>Wb- ztS|~vAcX`<L$4AzF`{l2o6ITYysHSSS@R`AGAqBL`wH}vF8~?PJX_Cg1FJ~diI6RM zE47Vtbr%Y~rDZH%`^D@2cEbD9n!zx{zsbQbcQMWfW~oMtVfJbl`RThsO|_y+=APKl zkfR-Z0?9azwPYm&1b$((GP1`pXB#*>4$BjJ5z2kl?3L`cO?P+I*Rj8nfE8NlxpDGG z0(gG~+%y`F`so>Mhto0%GiqM1&{>S}Y&`h(oPj9d$%P!?jR8>?=!hH;^6SP+eh#0E zb?aO^JdN*_zwis@M4@IEo;2wRy*s2I($TX@Nn7Mi(wd9kh+LJFvFXgjbhqxlq%=Jl zOD_RrRbgV{+)Wf~OioJJr;lDid}~;Wm&3951<Vnt8}b3B@6Bi_td6*r;NgKR%j^a? z?F?_iDwV>;Fpwx9WLDFTcxLEJ8TvEpX*CW1_`t?3Z8u5drbX44m3RpUl@&`A(h4Fb zi@_d=e5TJ^YK8%XJD+~s@PU^McwMa{R$95-*Gi-+^*X*0anV$sU@R?(YOpCv;l)Ys zVCbOBP&bw3b|A~xQw<wM<yJOTu_~d@RmNg<700?cI?bQTVXUs=*botQP0oxoah=zp zSsR;JFC>`Dl2t6ZAly&Jrm))GjE(qWW46|9e6Kn2<epgZWHx}mqm)E;?hBTK>M`OV zOC`O=)>e;ISnlS#SXJNA5ndual*-;9B0z!wEseM~aeWL=Ib63B$ACxy+G$)#f(W{Q z%J^0OC6gGX70+)q!IIgco!j$nnwP0h_;nq5l=wGz#cIb*n%%_V52`;ozehh|kV^!q z?t48$5+de@$P<bzsGJ?tlBrx1Lb;C=VVCUA(>hsqY1&j57t`91wDdI5<~9=oYwt3E zzdpg%De^bIr*SKBF3;@cc`{tYP-t!Yt7Uppi#gAm5v9}-r(;2^P_<gZ{Y7;~Y!BUi z6hwdu(ueb})t8|L^`1`R6LlTh#htIyzQ{-*sP;!!3-*n;IcEr9ZIH!AnYQCojR_Cl z3LF8iJKFKIg}L3uxeDS|_x2eK)2`f-O9CP8QOQHzNggEJ!&>3G`7;VOCgj+5f!{8Q zvS_YY_7GSvIRBZcgOtU%pJp+HGs(-vz2;=M%9QR?x>nssn$FI)<*k4r5Cjz0ep+%C zw@A+RQ05*9+IEw`v<lx(haU9O)(ppTOCt_BxrOoa_p-%s&olXLI2hNcr)9qth%Nl( zrqe`Z{I1C6edIXYtY5G)a<qL&c5D;ARU98rq6&|I(y9m-qe!JHaEse|$m#k*zJS>! zgIWTU8pb^huUN!qB-S4ySrp{xfs8;h@&gJz-MgVlxARb!#--a;z!0A4ZVl#~NyP8v zx!=t-5gfzUFiWqeBz!XbtV$SLh8dS`m0u@B7V=hW`?QrlZKY3Dj1Ic8Rb45;6l^JV zx)QaRZfv<5Mb&mXX^DeDBnr~J&`{zzX{>kR&?Y_G^+)X@&yKG2C$VTqV$q#+t?4?! z)CHVGC+gSTcRX{ID6nbR1~Ork!>*IEx-}KsAi5iUAQiho3eAez_fd6ICR9jicw)Zz z{hBXv`_-jalA{Bc)n`UA=<a8wbt#fMc6|MtP3zp?n&gJ6$lg=c?S4O&p-<HHSGJl$ z^XJKIM6iQV=yqu?2PU!gTMElubrrWXJ4!S4ko_f3*{wHJ{=KqrOEa^Mk7;gAN~4xj zN^qKitPxh)VTUR7XsT|9=1H^;J*ycB$<tG(XYV?<-7l-*wOKP+gxXv`$Sky1OkCV! zXS+{nI#f5wpHEL|l$thqLI+0S|K91T+Hz?DWKK45H)UnZ+{4u6G9WdzNh|q@n4UW% zzO>`*?4X{4y=1<%*Zy3*h;*q!;q7%ToBJ^Rhv5DN%Ov=nbOB=GquqC+fF>+hoks5e zrc47tnPfCTD6rP8poJ5A*(%VKd>M!P8yLy6Y0w55fkq`9pz8SG2Yo*^Z_@Dm%Qn7h zQw3U$e4d|j#O%c5m~j0;H-H;{bg!K~ws;!<Kps2$(7sfXy>|IZ9jp7r9uD8UN?h{j z=LvqI9#nej<$5syAT&)O<Z9o7P@&#?5#O|yz|nCZiov=QM#r{x2OJzUTDyl$mu+I8 z_ucf$Ows9puX%mKshJDw*jBjieRWzG$F??#rgakLeqIUskP+YpN~z@1RHATKxC)(X z6BQ_BIMg5vZJ+5zL{pU&nOR=_`H5hvcZ`)9ThN`D^mdu9lHQV$X7ton`=6S$6W6TP z%d(+Tf~vA9m?CyM9h`h!(;5N|t$+%aua~D-InAeqU;_71VoIK#%btbSP1Va>Hb5J^ zkt~(1(Wy&BYy;KSpE;6rP__Bw_08zyG8$wau3F_|XohXVmwf5f%c0kqy2dphtS9Qr z<}v?e%a8K)RJBYqo+;{n1zVyD=DSn|U4cXr%C^<0E?dD!<IGuis$jOo9bEFs(YlX0 z+a*V0Xn&X-b)ah>CPz+y$xN#MxVW7Ge>tCb$x^R<{~TF5*h6JNu5|-=%VgjM$5CeP zk&r)5BE-q>50V2E<`ki8z1*{Nah)D^8R?J>U`es}t`ng>W!JyYO7Ng(r%`g*YK$O_ zC`6xs*T2X>W_5lsJxz|!u;NwkB=-UFX#w$*?e*$oI*NnEDr*`zz~dJW2N*hU*JU#8 zI9}+@c+Y3$Zg{Y@tG9lXyc;5~YvkUFg|+IsbPUwpGF-R+@E?6kNAOT1g~UX8w*01C z-60k!yZw@v2)Zd>tyDCVI{Q}n56~mk4c#hny;`ZGO_P6>A%*D$d?!9s?xs4-;Kfov zk6qyg8@!ps3^C#Dl`O5f?s;!pyF$a<P2Mn%R2c3-;J8m*x32$+x0x#!H8%|t&x#1% z<+g@fw+7$Xl}FP&=||X4{dOg@xu5-zy6`#PH00~%LHo0gAIiXJKS_efqmmNpdc)iU z$G=umd8AOHh;Z;X8QgHap)pb0sPtY%dJVM<Oio}t9P>GK@aQf0X8@QZahlD@MYJA| z*VZAQ%2r&C1LW&bDrb`dw4_Pja>7pK*VY>exD<P^4JzjLzoYY<s(+{d4tr1oo@@!a zrrQtPiGN9t%jr<RBP&}?GJ}RrGI!$tgK-eyyE_h!DM76S`WCx9AkB5xk5>Bi^b|zp z>ZxShcILIxQg~xU`vVr@!048Cbe#r!qg$HMWzc0B;r;o&TV)f6<%+mhVi&7a)laMv z53m}R7J&a47664d@>b&QE3e_iwO97jT4kiRFyS=px>pp^9o1{*BC?4zM!);ZFJ>eA z<(I(VM>ig|>s>O#+bXSZ4i^qrZ|v90gfS9i6ZKics}M@E6ca7SM4NcCy;ifmJI6yc z$$1UPL^rd!m07IvxanZSGtE$*6QB6HKDqR{L*oAT(Fl#RGJy=TZ#CB`=GBnSQ*m*{ zq=y0oRkesmMOsh&iKeF_wJVH>&yS`>3MXq55T#~*F)c>8;V+d!{3^t7SquR}DWxBV zkh(p9J&;*MdY|Jst&+NQFAqaCvLlA#8Cw@&*iOA74p_|Ma4W7#q^?3!%fbY2yKN~3 z8d5yeipzd0Fr#>`+BQVfvbP^YQj<o}T|)-XImNdUW=nLMhU#_ZkBNO`BitY3XH`pF zkmo~oQhtlrCI;%tIf6_Wvpuz{d8(7#HY_gqJYSY7_0zF(z)~ovO`5T~AmJ=3*|Zv+ zCC24aA}*?@r_)VBx7cZPBOxTTO^HxzQj~xPt~tNz(a~XPQl7x4wscuceS@gT*P(j{ zk)V>V7od&;@pePYN7g``nT>OzG?=Z~XPRChmg}43bqv<Tn_NegxDKW^aeBxerkV3; zsfF;db5PYPnYUp{1KnZ!6LLD~A!Sr(Z!l6S7FWBS$6hPln^pF8*j{f1&il#&?yz3a zjA3OpPO9@AfZ3I<Wr~S}J6gTS(v1H`MpD>INP2*~YGO}=sw4`dw1*K(O)3pYO1E@I zkV3-|+$bSl-Qb_C&g#K=KpvgMul$A#LF-S<%2b$taX%9XmW`W*Q+WnUj<~n!tf2Wk zkFV1UMVMoS=R1{TS4kV+I`<5IH5afsoNS6WT4EE<4tJGq(gL2XbqqPa=!E{d=Z7~+ zaJ?S&axh}5U0WV*%-kEUrQvOQ?YtPaXZR*W@vTZT2M-+Q(L@+-jMeBmZi!8F(#N!3 z`k3pupQx0W1xDm*UP;r^YWgI3H+Fg<y|p<DV>iWB>J*v|=Bm5>-CT8|IWiflgyPe= zK=3o>uS(^CG>WMv;<I+1xWu50SqHN0<u<z(gtdwY)>8MrN<wDNm6fbOsIBNKD;m7z zSf|#ZlRNf_21#9|OD}=nc6%M`abAtCu{SoU3m_Ivnn~x%TOolBTnC%U2JXX!5B~xr zUfTbp+{T5l+HN<hsvl_zR5w7|*jX_F48F(-4`oEVN}E^~LYh50o34_j$wG+l3D-KA z+`de5I_qMi)7!Db!CLiX15GAXvN$?wW{bJKb9D4GeKl(})PQ@Bh^Eve&FN<<vx*~W z{51x)9Y`Yr8{E=3s3->ldqKUF`d6%P@F@S80TigomtjHECQ_qLjSXqV%V&i6<w<CB zTAC$It=ZS%2mtQo;k+hV7{z#37(MvpP$nOFxZeh~fHu0Vo5;(`)~GZhdz?57;dQ76 z5n9pfce1{m?vVP>dp~gAcsWNs5Y-+5cXhaXtU-R=Xs84a0z_3VeyUQn?(=a2<L^YC z9}Lx5GI*=Ixk=<D4B(Pa%jCY2)K_kzs-YMAR$E1mRKLLvt<wwnsUBt9^Ybzar?7D} z%X*+Bp3tWl!lYXV_8PWPY*hWJm&;ejZrK=~M5oc{j4^5@k>)@D;^VVPG4-l1q9m*b z=dx{$@{UIZ9AVCE#dByySJgs%cVD<B`1lRv!RZNg9V?Q5`s&L*ARsGp5GK@hH!@k^ zFliavvP^mA=i`sQ`RZF#SVvOv$8~l6k{@SQf@bx}?e!{%EO4dHqpi8xk{M|lXJxx> zKD>LCT|(pu1Fo{p>$<9)FdZ6xTnU5EO5(VvF8Z2;BxTMm!aea4Upsp}CpPLM7KEp- z%ahCaYsGgpoAc|URc4iKah+Y}TUz<Fjb6~!z;>1o9yG|j$?q=nGCC=&682XU`>ZA5 zAx>4T7bnIa<9$yn>7~})M^g+mO#;+73TDBmp8~|#9tvVy0`Lj*fVez`daqNG!&5*# zNksjYIc0HR^&PX?$h@lHn%Y@0m&$m$WY_7S%pn+<Lo1sz6Vf)6w3B+K-I(TSUM^@? z|Ngtr0BcAR8Yk)-1!*uExZ{eUwB~!g$@p30U;n<z>pPA+rF~(Q6{YbP)Sd02TNEOY zgB^>lXl{DViS76mP7@r>fgv(xKE<dV1yRR!k|rwAqG7x|)s3N2H>ra19TDSexR-_i z_pbUVyW*OmtnZ?m%GDCGvNp`~mitr6!d;|&IQuc|S|Q>ElB2uO$4XsOG{jA72^Y~) zAE?Re=}o{GeBD}9UAeo^nDK`u%>~pV{>QoQU9O7APZK3B03D@J8BIkYR1PSF?(rds zaN{b+qy^CbhzJ%E%^-telnfLthl>het0uyKC&KaXPfm&2d`U<DHhxSr=u<ihXVas3 z^h-MX+tK{-N&F4dm+|8%2}}pC+xg>g_BYfxe@x`(@;d%j+j-Av|J)K6hX0RA1gt@< z#-n4Nb`8Q^K(j!;wl~F+^XSnVzfzBX^5WI@(-$9n1cCB9Tzh@;`s5`3tVPu4kNo#h zn+A_h0v(|mJSO4g!vVjZj3(8GEgKWl=kn`7Ke`4X->0d+n;7R+ylbMvW}!On*w#Ih zk(e$>@=$vHv=V)CFoL3|CJtsALaDDYUx@fU4q}O|$~kBf<}mHSUIHPmbB|?+(hUIn zrAyQWh6MhRKekR_HSy|ve`8QZX3bpuG=&7wDf{F*Gh98gN*m?QywBNpwcQf)Ud&eW zX*E409(xrjf0!hc%*YT&taCoG+!_8L@CYz*+N0SmjPNsBf(1t)935pm?Do5V>ju8T zdFR*c_GR9-)V5}PK|Gp@CNkNuOW8}TMwDnLgn|Ol8F>N+iJJN^iV&~BX@3n-b&@?I zUmkqB9fZZ7hGU$Oyh4nqFm2`b<CKI)pG4z?9Np2z=mt!PZOyo!`S`lHR^lluPQN25 zojxl6G|!eq9|MJ!e*8*OD~X}Q?3|n+xnZwn{1tkJ)G!+}8nkts(?WWKC|$ILo+_h? zo5fp>&E-{!NWGC9Q24gDdCfsU1yuhd+?XTouTV8+418KdJB~Td@CM@_Q60*sA064I zRKy?6s=4jh@4M660o|pEzHmELtt;+<#q4Y@IXrl)beb9=0e8n-?R`o%pH#rfmEq7P zJ9H!Ga^=4NxX4#agg$ZRiGk~Lq>)214$j|-CVtG@8TOdey}(k0{sfK?tzzf(c&*Hm z3PWNTC%T62qrPL86Uq3RrK{P72ckj*8?78ZjO=V!vBJ24?}&jU0%W|xb+Z*<`Pn-7 zjOGlZjAhe|lT;;=Q=6w2CvQKU#|tx(4F<rOSX?;6>oe++S<qh9)lC!3qc+V#&F_J4 zmvhUEt8KAqA?kYUcFaFX25bJ;)qxCQ!%?xs;$u3}r?eINfCLb~o@T?+Oc0~%6B4H# zx5Nd&wv*F%l{M{G)v~xKNJd7GMw@YTqf2Iz`%S${)MgX2Y#q>!Myzi0C5bt!<XgpF zJXgROiwdD@oUVv-Sk@KV!Kqo`$lKhN3zc~qi(0ZNL&H&s%ye>ld~<ViOapp-Om7yZ zbU8Udj!A$(egEp?<Npj|$Z81F<gl?vtt2WDS!WFnG>{|*as`J$e2a7MP1mdVz=%ij zuMMN?It6e=mH0J#o2i5|JKc7AJL)`neNI2G&rjr)bc){-sgKU^OLyTV;I1KgIM5eK zehSoA=u1FJ*Ui$`K7aYm*U|#Dn$ZK?#2^uwPb9tr{$@^H%BQF$Nbt1Ci0U#vJhAfV zE_OB*8F@Waw}7eKnYppq<Kfm$Y2V_l%ipb_`cHm?smZ;{Ic9Ld=2s#v<}+AJ=;Et7 zE9tB278ie17dw%!LptJ4E=6|NR?saSXbw@q+l_UzMyygv^EbU3tIytUui`s<iWqzc zljl-NKS(Bc2~;n!0lf9Xvg2zyeV(mWfPqA?R=LOzuJh}v25`bHRgOiwX^=UUHNfW} z{jc!nc^XK*TVnF#7wJ75qV8Vu66XZ;{$4qNge1`Zpiji?a8f?)3-C=V;gVStHM6## zR)hG1C-YsK0z}Bav-3oNRz!eyhxUB1TKP>H0!?2iCrq}beJAiXy$^6EmAq%cK|im0 ztr@sPdv|<}Xba_WKnx=-m%3QyUny2&$g$GC=E|@nX|8LqLp0pWj6|@AUg+@IeD*>O zs~d&YieL-R$aIFkF&q^=$S_(F=a}>Z{&w5#b0<4&G3J6WF1`s*wRgpi<@C2E)cpmN zg|w2>FvMKOAyp&vJc5h0k*L0FV~2>3f|HW~&$9Bm9AD?{RkcKnh@_RfGFPMs@HI4} zl7{w#Wq@eEP!R+g$b{BdUC~xiT@wM1?gx?%K>ooNx)KqHKPFZu@)LWNq#t&^X9Ve~ zYT82y3wLg;_`2Pd{dz$9s8{8ypyqbAHJfPBhzq)$dLY%h2RTKb!U&7O%~r$`{Q{a7 zUl9{XgSF7?<BLgnp-n`1rR=FB#Ge8zMK<x#h}m{ePaH5YLokgUKKb#nIq4qUWmGDn z!>`mnE=3XP$=z#a$CvDx;5{_m(;tjodo^~pc*#O&%z(eU-!uG+>OA?eX$YwuqX44g zQngUHVjWo*#ZK=#&9XYx)E_2Jb~;MKH>v}wXc`;^NiYqfks2`NU9HNC=?9T?iz^P% zODog5PpNf}&H`BX1}hAHNrTagb~G9-^}4L&u(;5y7$XU|ycx6MFUDPB83vzS9P2X2 zFALfxg1Gl28(xU9d#IAHt1<^p+Ttp(rQxV!2iT6fGEjBKw{%aV;Wv4LT<ld4#X}E# zz+7J7k`|VyuEvW0oB4O<)4g{_N}}*DPlK4a=SS@*m>m2)JsqE(1<>Utwi<>9VA*;N z(oG#9+gdcx-gRtl&(@MD@oFrIkX{n!twG=1Yhu;Ej9<i8Fz6XSiWiEub0yD_1BT9m z_?k21URn4C>NbXWAQnOxeq3Qlhbz(00~Y5OuuqD<FfZ_8Z25@vEWQAIlutf5qtlF9 zHTNhI^$Qqyj6f^#YR?!|Ki!8Ur@tdm#i6n_&qhMc7l;jpvp)$Z=kXgyG~ykV1*wC4 z@+Le!<HS_FnerK=BEuyHjyv`n(dQTi4>Nk_@hjq|%E^Lc_60OU8;Gu6@ZAR8rOc99 z+JJ1uUT4wwPTzy*L`Uh9Q~LP!>AR<=+wHrj@4+4%LjXQce<C_cV+wGO^YnY1oYN_= zI;LS~sfVx97eiW)FKHQ@)h+N`y|tabqBXkbd8}gnm|D?PJc^%4L+R6?lni)2f*wwv z12an_?<eYe<Z64Z+mX;@JZHWpkJog><Z+cA5-~nk6HZ9;^BCdX	}a1|`n6>}<^l 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ⅆ2Awe|Deq?Lg@g9*Np?jmN*7vraO7shJD5zrj$p? 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 literal 376969 zcmaHSL$EMRu-&z7+qP}nw((utwr$(CZQHi3{4c32lbY2`Pt~lZ>+}JB6a;{yK#&#y z@U;)5JGQ0A{q#E4Mx%{ATb69Io_+1iC?QGi0<C$IrUwaUY?2ES=`7hsb&*75&3nA@ zgjBZi5WC$4XmiPy(m5asR7rB{Jn*~am(z2oP=Jtj?C(4<MTtOxfZzGv@7~u;LB>LK zwehjL<ugx~Y;ne$Pv6zg?w9Oo>8Wzl82ZzQHy3{wf08_U<A~toD*Tv3fq((_haZE) z@0`ca;@`;}+wR$mlOX>X_=hbH{ypgTa;txjNxEMu)W|Xs*@-h@m&Og}_xj0{s&Cp@ z!S5gFqhw}nUwj_D*;y2*7n{(}75*Xcch8G{)Ew27ACvYtJ#A@|>`n0J>RwmO(_{DB z?uUNTe<gk{Kh8csLpF5^wgBKc@%g(p9lu=okLNS|)je_BBO7efl)1nA7r*cMmyQkF zl4~Qvv^@UypuM@9_0$~sGv<zuiXd*eJgIBwJC5hztB0EghlAyfqX%0PW*cr_&-e54 zdfTzyfr0bEK^xb946anIH}4Az#}&31qx%Nm6}VfjGU!pz!a+f6wYpn*fn~2{Pfqs+ zh6wiUA=gF@9~5A%@O}0C%G1~V79{6fj=BGAw_e@J(&z^D@Ab_ar{p0b4oW_zZCqJ` z+$?V$>AK$E3B2WV`{z(1qtbuL89IN|mDufQ?ýkO5H#=uX&sR;Q}GN&>J7x7V$ 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�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%0DlEx05Uhg}+jr@1XU9^E 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�QU)a|v^9dG$8RQbD-&S@NnJIhX-ehTB!BX?W!Q8^O-$@c zSC_?LEXDU!0DKq_llLj$io;I@NK2d-7skPOSxHM^Wqvr^GJ0RtG(-%bHo^^9Q^#fA zFkXw%q%pt{B=hprr-Ax2q7w+nQo<KL^vg!u$W}g6#S@_;K}NWtGP$S*GzqT2V(#nT zFFj)?kig8EwSp<crv}%MP!^lWSwILo50+#E<LmW@0$90}k)S(x`16)sg#=s`f*$So zr9eL;L4rBbJ(YuWVSJvNtu5?Q6zV#!?3P9BrtED!4?SmH>!+0HR2XSCYSu1i9R=8E zp0Y4k@Q-7*mATUo%TOL?crS%6PMQitYLwiYZcric{-9a@3~vWfHjbV|n1J&c=OpQg zZHLjoP10`f32PTR&^wV&Gb8hY^@?M@{e8Y~Up1K19U?s&{FMtE?<4>h03(JRaNpYX z9Z??u?;?)YwH$yq99G8RT^NPU!IKEt<v}uPQ2@>v)!HWBxaXtE#y!@_G&}zal>x7@ zg3p<W9PcrZ(Dw~;Sb&TPRTy@}K-v-z2~21yk@Ax?q#=^gvDBhVC(70bR}PgVDXb)N zq)Ws{npl%C?vA3Tf0r8C(BZ|MJ<BAyo-`S7w$bu&l$Zz#UW`~5?g82k9lE-QtR-)L zU^Sn|pg)D=F;nL7WM7)%0TL0aX98Jxi|s@yDmER`OG=XSQ>udj%*^U-dk3{Jt(=1^ zS(aMTRzo;#_TlArs6qiHwBs9_D|c74RGML%an1*-)6)3y#5Ie(f~N<u^$k*v6lr%C z_XVt~{?lm%_%ERzRdK{8B@@;nRCm`Q!{K!dD%_lMdmRG>U=gA(P_$Qoj*+!n9uKap z|G_K#<<2@$FS@<^v1E#mmYD)bIi@|m3@Q?!=NoKaXl8mAn4m_Qs_FX<Vy;xe*=P?% zW{JvRU9G%yM<v^&LgykN)sb%GF!7t*tklEXYgr*fx3TDZ@VQvkvJLFZ{n)}*xr1tZ z+X-7^@A~?;#Kb{1x;oy$kl?N@LY|zIiU3^imZk^Ia%yoERWB##X@$bZ?AK#CW*&DR z9k-`1q*qQZqt!PbI)$)ZY}`S^{d$08zX%~<oA)}fCOZ|SvHAwr=wD+uAqfb&JvToN z-=KCh!Ij50zhG&d59iG*RsQZEv{EX54JJ-E?M~vc{8pcpp3F3vT>$%>Z<NUda(xUH zv%lo5KREE>Fe&G3mXn|*xDY)Q_I*$Shj{}l$;hOG1?y5~U=#Sddx`{(livz55;SFk zGNjD}Ze=*~L)GdVTNPHshiXlk?B9Sdz3XmfGd&1k6f`heW8@n#kX2LspdiqGDK}Db zje767SOW$sd`zsi{D6S-I_?1A*tlLmx5T6t&@CA@0CY>RA_Fg~EaaV0$_u0YQT5xJ zcSlUE9qC!UC>?+0ZEIO|2zOJQKD!mk`vzr}>k%}!Y1Pl3utHSXc59#BYX|x?ubx@G z2^CDYSi4Slrj^vM4gj>8D5B0)t8>9sYUg#;@E+<>a_xN9uqP?%{TH><_;ZkN=4*|; zTXoBpbFW&Lb(&T>Wr4OOH4nk+E2b5$MNJF{C+U$j6r|C3;po?&)-sZ7l0T?e+wx*h zt1L!%F#y}xULE@Hdf$?QfIMzJGCOhhDY_1(=!KN`XD(_LF%y3JMwwuivx;@S&efWV zPTTf^2M@j~9&0u$^>b_!*Oj6dn;@1wcrD`MZGPjy0ao16)L_V8tY@Goyup2LS}s^j z5XMuSTsu2USt?Ko4H}_8fp^W5k#U&(Y17Dz$?EQqqu}_5pLVXROyfZIe>p|UTWfVi zUQ+Jzj6Ov(ckPx9x<)o=n5ymzydV0aF_qUvvQZh!j%p-OL77xaVp%amB4@Lshcf*c zXO6Sb9A?FWRu=193sw^AON?W@-HDB31O$!x2k;2TWim4s4fV?$_>RSKo05)Oi!dV} zaG*lp+RMbfCfHBN!M5a(^jRQ&VQHVUFsO=-qr;|W^7^1LS~Q&bWxSuNYVNmA#3dau zgdagL+LdKsUy}6ypAm^98c354!8!FicdmRgz7zgRwkh8*ErBtcC8oGB<qU0h(3n7G zBvd6*?8x}6&^Tr!u|ZIJM4f&1$;Ak|t~9z<0eScNj-ZF3(D0D|N5}_j2YBl?M8XxD z=>v#FbUZ~c*Zq5=Rz=C&wAC}(o=54u0?s1-A3jB%pOe0UC{1tAX_>VN>9yxECoVa) z#yZ)eH95|+Q~e<aaf!_I(}Tc80$<CY7v+r>#Q9oMkjE$uA`4nMRF`VDLM~lGT->3- zhrev53C<}34ZSJz|IXm}LZ=-X{Coykv8rD=MJKw(LcWNi3WG}K%;gyuaIyC`>!_|k zV=VHi9lSb`);=oz#_F*$Ye?svqaCHLnR&Xh!;LAQ#BcNE&LX3cA}ybR!fgbfrhYq~ zG$*HRLf@yU!{dD0qWc^&Ll1apRb|;ydL1wtGjZB`NLY=D*!{LDU&Y|;Dj2jpy*H%` zX@!$DKDg^l?=NrL3et@0(0@Wb+)RB_mJYj;wirqKV{WD=$6k>V1&9{hOEYb7?rJ=0 z2SmOtbtvb+g~`|DwUDRGc9Dz6PMqRw2e;4{)cFJ1vbGHcacIKKO=EyV1&62m5FFx^ zvNTX9F&-2ZYX~%|HX_SHfXI9;{7t7tP!y|*g8s<{4qOcUxzkyak*i;sA7_}4&4J0* zjs7O9{8LP*;0SFhPXAM<K!QZ5r$M)1i0si`>ne_btT|T`lKNPkQ;(6YE<OcDQk_49 z8X;3mYJSz}F<n{C5v^?0$pP0UVZl;ipi8=XKseDuuG7?ZV!Z37elOTdG5kHRLG$F@ z=)3PlbRq<hQZcOUbWZ@QxfTo)xcv#;B7SXA_i--Srklfoe}G#^112v?gpkiW$pnPq zf<Ld=_nw)Do}cFs9cohhY|pO~G?ZM?ta$bgxON5kfj6F$O0)wmJryl;=V{BUiM*{; z`ti@XKrnQ0P)2Z2e`KlXpbBNMWCAm5Zx4zPQ9x>T;%%U`Ju-o{>i{fsQOf8b37$Td zI+C-V;6fszaqh_Z2HYK&C#YgjC5JQ}vU(@E@@`Y^n0RlA1R##n9vT7a_|}mVnn4(a zcRA@hsy|d5OVUc0xA7`v{a+TgkEf&?vl6KSYZpUtrHk`1WwYi~s~sngF}}#fKcy50 zTuK}iWxr+Koyn*Xsh%>P3cA=si(h;;T@fyb_ToB9A)kJFNbkdGW<{DxvJ<J=0L&~l zz3iw_0<{&jh)J*g(C0l3{NxGy5MGkyPt}F$<$Fe|Hv<O=<y=(Cqu!FVFN4K}h-iFj z<|Btk$8URqNwnKVWfz`x;AMRRBxw8uR&nKCso!()^I8o{L*?YXOVGDO7)onZ&iz;G zCDKh0l`IZ-IP*89&Zej}{J~o%d7{n-PjNCxIo2YSW^Sj{%hDnqk}<G+%90Y8O%+~> zFCD2<qXRPc!S9p2>?bevkqZl-8RWif`d>)Tzhaebth$G&wD(tjWdnwk0eG!rnt5h8 zvNp)xANyDPbDG2}=+&u)FUT`!+=EnxTREfM!n>qIB!AFW?T3)){PAjGqg@tk6+dz3 z&ZH%2E?!I5!5!jRoSPDIG9p5E8rm;>Fj13l<#J@{qU2ctCe=(|1k?B09uH`!i(@vu z3gzZvksFs{TGU6LPxb;OuWv4kC2MwbKyT^i3T7SWBk9+%ttL5l0$gRm{%zgf5`Hhc zOJEY~Md_eT-xEfXGexk0TLAAV5*udS1P;CIBd6zm_mLr+l4B!6>B*J6O=*HbbfN@> zkj+b}I1x0x6ikM^P+~uOPUA*5y@CJ6PfG1-r{URq*?(?3CkH-fM5*uv-wX{!WCx!Y zI}|Z@@_mhATpGOQMmZEOZbMhE%Y;lR>u?7Vi8(+w96UIZGf(%wF6r`a0mEc!U#vLd zom)aSU%+Qb4=F06XHwcfj(90to>B>{WC*L4Y|+g^%|DPUqye6n<g^EVO&lA#uM*T| zjI{7H&KfMUO`46_?v$27+Y!xz5a9I7o>DJR+>9|G*qYNWZ%LU~_eoxhWf<YCWspoR z2L4$Ld?A*Y3=DWN@@c5RdV*fYp0Z|>c0m{4Ss`hc>zPUr$U0aH6gM$;|3B8^>0o`8 zUw3gefyUQ78D0I_Idx7$7u0Ms3q-o}q2m=LL~|l`Ly=5!4c-=oAGIp`9KQ}-d0<E< zWL$_+-L6tq&aM7BIX^Q?fZ?H1hWKe`=+Dkg5cKV28b-RSFK6Z}yo}_7ex_1(#+~%r zE7tKQ*HVZ|2jI#=v%?D)&aG%Cq+>r78Wn1Ia74SVdW%Gl9T%oP09-Gs<2-R>8lgrT zTuJ9c=eo4Awrwdzsh2ViMfvn<isl?SDsz%)H>meVUa0w{;xxR_qI}bU7aM`l%g*m& zpotBCWl>slszoVl3DFGU9@YLIBIj~C#`&aE9EN2Ua#3cevdqu_gZ0mG$`7lCh3S^Z z{=|WD!>O^RHpIL|?Gm~s^9IW_8r<{;y9Wn-x+le99xQ<2^@^N_SAd<@tL1qi#b!VI ztp#|U#BmO+!L<yBx8n{eIH!u1*&jc&x@Y;G2%CKM8PD_j^>dTSJuw060#}cWV=s@` z{W*YATF02`988F~`KO92;FB~=XAY$Lj**%t5b)pB(uc@06Nf&Hi~HHK)~B{GX01#S zYpL|9R0(kWWj!RYn)v}xxp^6b>RT;Wkdp%_;pVP&*)+vW4$kJcT0gDj-N9-PV-;=n zsuXQl`u*`(IM9463>;5DLgqNXiX(hOcGx)mmL^|q^LFE~6rD6xm1gu6N)G4>4OGDu z@s11kU6Xt%JfMYh^dSYc{5k34()Xiz(%LNd*#1L14Ts!*Uo)8af|dl}n;gRYFU@pT z#O1qKmL@3`otjbx$s8rz5eWe$cldTuK?HF99rkRy{|_|J^S^)@ADN0tZO#XC^=$O% z%6?7{9HlJ^i2_Eae`%)o|7xZkm)*n&5(LRE`H?RHn(6iwx2Tq*zFtG?Rf=C|$xb;# zTpV=hrW=Q_w?3k&t_m?I25V_f-9{^gj|;JWJtiWlTy!Lw9#0mw$z4IFv*(?V%|3`@ zRRmCPRI%CuMT;#0&7XvsssgT|-34O|IjS{}`<IsgZF}9`E+=0RBfb}ie<Evc@4Coy z#|;&vKrPN-h6^xP9(DtqyRzSH>MSy23i$4v9~UFUhxBTYy*t9xgHYrX<-S#2kD7}Z ztNhl#o8Ro6^*wLCC2*!hmz7bFozuMN+)kt?kKe!WNo#-o(M&LA>&R5L;gf;Fp<tR$ zvuM<%{yQyZ&&M0RWOh7rWcC=8O3b*UDROhcpdmr0!gAL&B~QY0Ym5+Gc;t5g3{I?D z4XJzF4iLuB_1dmp5Hl5%Mc?%QB*|zK0!T7AoPS9&t;tX8V#MmMdoDg{t6U)$lm8n@ zruQ#N=JNm67Zz*+;RybBU-;i7nHCH`&_^f_?QM+zkYvh2{}+<X!aI{0N67HzOq9Qz z=4W=DEqz7KU5!46wgVu$4xqTcjoJJt;w?*ZDT)SU*WLY-T^DX>XS0QmCZbAh-|idW zq-xlfma3>RcO6-FY<F&;x~4+$VD0oeD&JB@9C!BsNY9YJA{axXj?HfYqAri66mHx3 zkMufcp~b(834Y<$w{Kpm+)pyKo)-v`38m7)tEAkrep+GbLwkb!y<3Z<dt1L?qtq%~ zt%l8j>ThG%PG{j{ld3!vSfky3<SS)&4_=lkJbK1&mK#a)#I29tdzT0DZ{7F&@4Nki zL_AjzZ}LJR!S<^t?=JN~FXNltPX<@)Lx2FgB!IdG9@juNk6E&d?4A%?<Xgn4jm#E3 z&=ukJa%Jwoo{%Fzj6ExnyVIxt14PZ<<NJqJ0EtvnG1(QN_h)DL?f<<q?2jE@Uq%a8 zaRa@;^i}uAcowS62h6VgE6}V6_Y}tu&Yke4F5_V)tYsxqYY=%j(ihKhs|Mm91P_rj z@1Y_rWMKO{^`M@;SI)y21%t5t>HZ7@f)1YMGMvH{AXG@~JXD8t=f9;WL4V?M@XnBz z(&K&@X#J)kQ{nm~aqb&4R$Xn*4~d$Z@@1>q5x`z)`jgx(Ty0cQ47~MHoBZ(S6*)+Y zR?b!o@D{q60&A5^{iiFuWm|x;9E+rh`v}v>B#Hq$nF_x{x+dPHJGIGgMTQxnDuX-B z1)GeYD71(QXbZ<KnAzu73&aHyrJ&(|O=6*R@OM#{nT(F6WS0lpG;ulokSb;BXkwUp zPR!s<-|-g|<?7>ygxVWcHsA%OxGB6#mfStk(208!#3cb*OuxmqHrQ=qxs4l80wmbE z+Y1fmeNsDXk@5bAfcpg?;9kum>`T<a+zB`R><_<uwgHs$D2klzh7!h>_H@1tdns33 zkGS6%d<T^OWP|EeJX3QUf;g=0_wTiu?Ue}F-c@>wCs{sLoYtG`QDX9n2~i)%aVerg zomTf5aB$^NS=lRR59v{cRr5#R)(vZX*``+BdT%e*Yx!{Xbmz6R#>OgyIvt8!PE)=% z7MJ%Ib9dmDLf&6st^$hL6la8OK(E^2-_)69Rsmr=zZ+}v>){B$Ew{%mfk?|9^X9+M z8E&gj=*+V5KhPPdp-<?{-G775oTB{~bS5E|72ltOwNiYm61V?`5Y576rLlNn=43sY z{fvEH?y<aN0kWz>u3*&`KE%~k^1~*}5C>)+eGZ&scUr=#4L{#lV7IUpI5RG<EEsYa z++@*HfVbUrm9Hd6e@LJczIzuR1hsX_1+$rZz}H*=TY3G5<4$%zJ7A9*z4E6vJ9Y4` z>aWmzBo0dX^_h3SHz2i0mPand1<+qF!eiBYTh?dNkO8EIAbv{Cng5ZRqdWpDLd5~d zoy6tJP(Nf*Lw~7j=S%c`=Igy35hVli^(Z7xHHv~Kki)->$DfkN>0uvV|NcTre^UWl z_Z5L&I4rh{JzP4xHzKz{j`-Isr2HW29pM<W4uZz4>~B4KI0Q{L0u=&nv$Q(<y8e`8 zU3BgaI?$44TrVNO3&XjZp5TyTix!fHM`ut$X(C6v!P-s#1Mf`z3-2Vx&d60G3VP4Q zk^9H9dC)?)a^iDB$q7}^mzhXL^Ql9Rq*#xD|A!Jo{og4uUe$>Cp+(`pb{K${s>k}m z09tQnyH!0S`#&N=5@O2hbx&SFDSvbI@*!2@P_HrjxQtMOi2cv+6(t-$h3H_(bEarW zQOw|)Sl{}xCUT(@g7SJj%w26#k@jOG0e;E2<WF2J=CQvd4XC)Q&4f(P*RPJFJtCMK z2q+^+5mc5qq01`7T>FMQQEJTksQk3<E@mu{E%e6M*Rwx%1T6*D_Ldd~(sMpl@(#73 z;z-8oWZ%9NPWUOltHxwCGjRzsMR5%l^l)GYGJV23aV6Q~06p-E;(CAzzBZ8uAb*F~ zmwwCTaV~y;%K1?38&G0&!0#~9SjA@`z|-Vz-9bZ)i0y1bm!$z6qM9_sC$se&iDxw5 zrNzLpI}YoVNe_-}{W>y6gMzX7nFP-DnFJ0^$1g&qm+-qM>_%cK8tnh+)|`%&cC-J1 zji*W3!GcapoMb<V9Ox1*O{FVHt;o8QCKC_%bGhk=GKE}}tgP#GKq#a0nEWkUATxUk z6F%uSmpm)=yqEO<9~(5;ApeI!Ga}XN!rm5LtE&oZ>?eU4PxH1%m85^+4?QCWC57xZ zX-%O9Hv)CFIdGvWMgi3T?lCe0e$L}?skVHj#FX9e6Tlr}=ovKCn@gY%`RUuKadzf6 z0gLal?JAld@{Q!Q6mJ4yPXNVkg23&}Py!`^{JY=b{ca+=fcV|~z)W0d47sdo%t>Jw z13f>9fb7pWno$Ae6>O*%DsO<QR%WP&*qiYuK*LK8(D1T~wOK!->ok3XOYU^iX=HtA zJTR@9wYooT98+s|S+<4`hEqL%$mkb)yE(~loR7z>`4N%q9US2>%^XXwRTzPOoL{6s zJ0m*At}`PV;XJJbA$OcF+V+hKHqd#RShqm}gAQ;I9dHKVAmDdgf}+1a_kI!m>tF;T z?msIJA{y)-=0*Qp9j$uWAl;F?=L;LsKaK<af#llTg>xz-ZG&nF#!39BGu#JThrU?L zT8}q}<G7GQK>Xn5Y1e(m1uoj84ztF%g!E~`U~1j+`iOp)MI+wQVL#NvI3(SuwB;Fv zS&y$fgy}6gT9DC1A_=&mS)z1WRrIsKrs4D)bw20qr8iz_^>DtMH@b}ykPEwPO%_l@ zsCxf6&zC*X`}8z45@f$ybyJYDW-HCt)U<>iwG%!j>=nd;5Jcqys}dJVa5d986=(pB z_rPAZmv!p&R)!f0W54ZYBS^atdG}&O4B80LLLXa@6xi!|U_J0*QaT6SfB-yXfAFgw zmz1OSO4?&}76Y%8B`%h$pr7^@Ji;qo{|{;J7+l%HZf(czIGv7d+qT)U(XnmYwryJ- zvtzSk+kRK?z0Y%==hS<u-mkttGnrX)t;&yCtLA-=F|HwKU9b}SqE!-a)@j(<1{eUa ztcUFFoGZK)=x*a4^za$U-kzo+$4G0;6Rs+<F*hxb%Mj#Vk<``RVc0i|+w&JscN13b za4Q+5j~qpb+cwhHX@QdLROG*k5XQ9NGfu)tsl>N`C7b@Cv@`;;71w>?2|`jv`D;w% zyJq)MOqk*+=(`=e_Lpc9aKyz(*~<E8vExqh)pm5N`y^2btvOyaVJ#x5PN<V~um0a| zGfUVpySHoDJA;Tw6YGxzd2cI>+(K+oH6P{&$OV-qaYoEL_j{yOy~3Y-(Bz%KI`f7D zLu@JaTYXh3hcckU#Uo5|S=rDfOi?fgd7ZpJRwM(rT<4x0`DCBbf76_)FZdF<<A#bY zZR>P@Tt7uRY<>LjP1b7Wr(JUZGN^U`sgl%YNQZVcXv@>@E?xJ#J^uOYh-Vdt`Xxo@ zeP)VI{1}SG_I;QHTpg=7Dv^ZIHEbrVs^wiLg9GqxiD4r`OmuhJvTnU<ExJ38INh!h zI={$|wQwVQK0r1>6rJp?={-St^;hz0G^4H<BN??KZBCSl1&ewF8Fk|q4(d8%-0{?- z5m`@QrY@P?b&Z(Rvf$^HHQcX&jsYxIZYTGQ$Dol(!U3c3BxZ7vb;HosuTPci^6^18 zG#j%6Js3)4$e?Jt-?RX;ntKnah~iu5cwn_|XklH<9F&hWnlJMDscIqRc=vE@2NuEx z450{|VCqN_^j^gmzHa5>_WQ2gkLG5d8&ksbD=;se>(c>M+BfF_7@CZF4rX>G539*U zXme1#9A`Be{-_r;(MG>9s*@ubb1(yDf4sR!*X$llIgzuj|Mqv?23~v#;+kIvqoRX+ zeGi`S44|W018?A4QucxD^XWzM|IAXFLU;w>vc^`%H3XVoQ$ZYhHwJlAp|1ziV6kYW z51%OA)->WZyA97m_kf@wS!^#<N&E0q8^oxoDG<;o5CGmwtNgBj<u)nZfZa8H^8FcC zkmQ}1_hVS`;QPXip)+{3n9V-An{-KWZ#qCSBe^-i9d5<=yuR#bcexsQdF_HQ?(nSz zp?{pQhd8_a^=YJJaOnf*cNN%^Z7Flb!W+H~kwU>p{O`Gf2~8DYP7+&+XQuta%vKQ! zjGE3;T6Z0P+;9}C9{W;WTbXrCYNS(JK%&Rkh2M?(JyBR|`kc~Y;4GRjaBo(1HRgdu z<)gRt1CbId?h<J}ny06^*AZf9f%{p7VS1lmlYq!Xwhcr3s`IHV#sN#^L|n$`1zNf$ zs%T5>8BRGl`ea6;_eS|NBx^njRtQ6?!66zSMax73!`P0PW!HsH{(N0!&qh=io-BhB z*sXf@(x#F`eHUCDpja&NXs9In-79$xh85>M|9qglI^Rtb7lH8P;f8uzN5~1(Ecgya z;7t>t%2xR>I*nk_<tu*HHF%2^+>x)WpXLQeP`uat%0s<I&<6eykYkyg@xC&ZK7>|D z-{tjRB^H#^$phqIQP>h*Z=W}yll;xq9*UsK>8=^cc-f0nG%TO+Aa!5X#AlNBE{NKL z-@e!-EgdEP;=^Q;9^=B#fEchPsBxfQ;<&2k9<z!b@uxds6r)tzY_#ke?*)F^skUd% z@deld3nUbO^uQ>0*+C8~T*J>Pi%T5}R4uVXjbF1QYIlqbQ!K=SEW|=`4;*a<pm$s_ zG~qzDQmv)8jhLfw<dlyrX$MK(8>L-Rj&^LzB<@s>yg_Qpv*)bA<MoJJJgBhbTC5c- zgPLM&oAVn<@cOXe7X~tQ%F2nIq?jOG3%+KF<O;0;x^LP;?RWtRA6WW#v<X?W#hj$- z!%6|$hByp0&#;>{-lD4_z0D2ys)xM^F*}K;pAOKv;n9oKYQMLtD#~1oe)|ab;=w<{ z_xWr;YUI19xw17U41nQC<R(r<Tk*Vzq15OWEq?83{Z%CEt?p(oz(=D#95(A~BlauK zgg_BmG7+HI{%G@84lE>0T=`N4#Zc7GV^q_%z!|aO4eBm;@haijV<Xm<Lo&alO#oV3 zgsvz?c^IASgBRhTB(*sc?s@&iloNb?h7%wQD6+V5l#h-(4wBNDk49){@_Kg@bjA7@ zX=BN~o(O@`*pq{O-D!YdAQ|gnLhu0#L{*QutWg)!5$5)&4=z92Lm6-j_tu=Iaz)LF zv}^TORd(S?u~9S3IY3i;yutlqtkr7C*vZx}@r<P-&J|H=bTeG{JKjSgM=_XMC^%C3 zT?&zq!^rNmWlG1?lYv!)rXH8euhh=<s5Dm*_($(NFTIBhj6@K$1RjxW2ikHJ8T+wb zFfHd1OcI-?KYk78r4cq)hu7?!+;jvwR(CI=d`U^cB2aDAOyL}si~FYSRO(!}{ma3x z=O=e+K_;2pVi_q#%|hPrJ_(}X^qh0wy>{ZCuQnDqgQ?Zzyd2JG%7|nI<LVS~L5W2d zGUzwZ;q|9^A}WqOG<FpY(cJQp$7~(hwyCf#CJ?bz^u=PB_AoY5ys~c5;Z!;fQ@Z+J z_Efe^3ZW0O>-m+D<6@K)b*0jb4~-}51H@m=WN#ffR|#Q99TuS<H!9!kZp1YHB;}Ry znSa<!9stTx0%h3=x8%+j4#<j%&Cf$otpH#w<xm~h&9Sa(6}&Gtb=k_r5A~ed?7^oi z6@ws>Z1SrQj)zFDHj_gr<TroXQvS}$%U|(!oX_lxaVg`DE}<0}rW<|lsBMMK{P(Cl z_(Lmz|2w}Lr1HtYN`&~V3AC?|4P;b5im(CP-d5>7+vB}qIT$5H;q&$}1xU=N+!U&; zCUN$CXv{FJ2K?G)r3~(B^7Bwe{2n$DD{*URAgZqb31j9+2VSvLEa{w^1JvTz5=eE# z_3RSwQz@vCwxWdYx_~=>?YrN$;PHFa!USgBd@H*;g*|F>{}~D$K@0V0aDIv@74)7= zSA~Q`4}#b5RrY_l`6|kb%Vh2qXHJ?RsEf>HWE4)Lesn!&<%fUsWl?6uhT2DOy=)lk zHMn&X<-Le32mACP^<ncl`K)@p#>0bvSt(&V@`0KCN??bdegufn^Xhi@Vs2YSr>Tzg zBzn+8!q*nZj>g$Y@PsNN!R)zXp|t+x=i7NXm<VW6EvfeSin|5a+Q|OBwE@{ktb#Vj ziwy^ScUFJ=-y`&I%@F_2%F@>E2cPTddz$0@nV0~7Cqq79)Hc~mlxc$X1FKdK#npT> z^PH(>CLGZl5z18Iwm%Uu5s;xj1Mh#1BSz&Y{lm)Y!~UhT8d!x0Lo7slpm_M}AtxzK zF7aoi@mL-~0Drr!r$b=2YHX=JX2=#6AV)9zpE-J__MpGlHhZMKlzT~jBf_L<@QT?4 zfVB<b9GLyh%Dg%qnZmG02b{JMm1tymt5m5UMLk6pLs!2<Yk*@xZjYCW1U+I!YHO?m z95sLd>=+$3NuAe(@lE}X%%I{&7ng|TtN`>@4GPs7X-(u4=*g$#vZ0%mE`EaBY!@mz z80DBtds1tMJwowMR}fi%oo`GCVCT~cQNoV<__MS@PX{f*X0_&GYTsE_o>3FUMeW&@ zx6P*~u7(}l{ZBt1PX)lw7jE*eeGSUVVYFW*(7#qTPZLMsLgP(~sXAXVYVM9}VhtBg zcU4p^oHeqBau?2BEV{fcrZ1f{ysG$2nK4t&F905yJ4fe?r@Il0{LpHrjMdtOa_z+h zfy?q4vzCx3f%hBpWgOPkfS26Q$PU(TTCAE;?z*SitQJvJPSfXi3!7Jx9hUdi^AGz1 z+FV1lm};ja8=OyD#%Jj3woN9LUw;aKjEa%pDXIJ-#&rWn#QtN4L-;A6ya<UTf#m;_ ztmZ5HMo8$pBXF{BQCFRGTr1*AjI;uEQ)3Z#AuhL<R{wNC$rH&he~BW(CQ@it?(~!7 zpwh|dT3o*ddpOvQWe_2!PRZ`QLiEj<ieK|nb9BAvZS?jJN)`Yj7YKa(SoiArLdSdi z>S;5VdCk&Xd%sG9^Fp<NbBT7ji%TY1Wq<Rw1;t;hohKk)a#{yab|Rra{D50WbOglz zCU9+x!fD|6_x#Nb0Ct^Xz&g&LXYQBx`uPz%go}}0`*6!FCvLz>cixJ{O>zfVT)71d zRUl=#?ybNd{o^Znh+C2iy$k?V%mq+$^LFBh#;DoVcWi^&jqHCurGeBvyW=3JGfH98 zN~gH9hh9PQ1=IIGtx)&2g1CnbLEt%hUO%Zchy&++>!tRJDLzOM4SwIn5081H3;>&R zD3kyAjJPDFtww(fYX8M?QmDx7b!8+yBWV9+33SnMt|0{wN^w4gTo_JPFQ(2syDBnH z38J+fN)D#msgi;Fi^>%|HSqKoWgsy;Z>)UG=WXhf(m>fbe4pmUHx|?!1WpM|pC7_M zw2EK8VjdLMjJ;KZvhaWB0*~EA5P}G(JW&ImZxvMB{p^QS|KClFfhAGk25@{0(ncCz z8D&rzE6GHstcd=wxu`;A{wj<$Cj86E=xP9M_b(@7A=lqdMoaCZKiGj)ra#z$dh9>g z0irc}GvnV!)m3TGuBPJAdeUmSzoX^<SQ-^FU=Y-qb*Z}@jg0mB?Cnfg9q_@13=T@5 z2mRoPZ4(To2raZC{~b9n{s%emtjgmI|7$O_uTh;AIFYz`TS+LKB8>=2X%Ck~s{sY{ z;xN=!^4f~R2~(}Y&?q8U3U2E&eAy}0@mh`J#{!0)i}>X1PMt}28T+^cq%QZ5P`xYT z_UY|0ah!c4jBECHrn5qA=7vbu%)p+6*8&V!U(HJDMsC(bZE^0|Dk6;+wIQHPO21!u z<A>DRgb(Mg<HM~^gT+bINKD<f*^rEyS4N1pRzFOak__0!zp(3*!Vti+q3uINv4a>j zaZl?n9{cjDyPs{njxIY|hTSlz6a?Eb2NV9<QEz?g9}WG937j^;jWZD0OAew^+C~n0 zSay+ZIn!j6$6|i7Mhjnv{x#4On|<&}u3s}2%bFfqSLp|x?;g3EL8{WFZbg&3Bu-bd zu0VB&211kFdG8iV6Uylu8@v8mPR=MaR~Y~dTx$IY%{8>Ie)l55_JzmO6jy>`7ugD1 z{)MS9-RGV7hu3_72L-_KImG_Q@%avLe0GPLrliRGc3x#c3*&&>dK&CID7!aI->7Tp zb3F7foYScs6%$@iCY}~kfyX1e?{tX^xZPNLxKWjPrx_akG2#H7O6eXQ{bj`Iq4TQw z%ZO95wZnxemsITs>-Z(JN$igiC$jg0O4+LVEyZuNBmh#3D|bm&PM^y9_=s{hoH|Rl z4Q*d#?+02VS`7f^wFT%D3AyObtyfy{4Z9FQ8naUU-AvSNp$*PaC=zX&z%cLJRe&G+ zG+Sy#es%>GBmkkSLcjF4{l@)hIOi)WN6>~pmwN;Hq3Z{h0Z2N8lkP@dpnU@eJ-e40 z#?6hq-dlqI>o-VB48gb=#p&Pe%LLCT_NKVOc0M}NdHIoxDClp^qDX;pC^9L51T5V9 z4Sv`@C?)5?hlInGFRORrJ|uJU&PJHyEa7VgJQujF;KSvBTU-M*1&`!5R~?)oCK+$$ zh<w%aD*T?<btJjEx_)zgmLoY*nDTDDGT(>;ZFI>o>ubSm&LZvJT`VvK+g60isS9DB zVjX(rvY4o@`9q;}*?O+%fI+))xWajW1TWe~_R=_*@+i7ar*jX2P3+6N!|Y|tHG0|a z5Or|v%(9v)U7FVh7G_@#hfjF;1@hDrSwEjE_mM*JNrDA8+UNqCZdn_qEI9<^6}a&$ zSs~eiEP~Lz;`og42q7S`07ccKbp6|XiwI(N!^<wWRR4i_&kI!#FXS~Fix#EY@hFWw zQ74I5-9q+lq~M!cf2jOFiZjr6%KpAIR|CE$1`pJ^RQC1;w<@*f67HQt*y1*~Cefx} zaFEUu>&kCc0izYL*owPw6nv)0@84$P7<07NUiNouaj5)29M=B9^a{rn<&g$@wi@{d zg`)wnujwk59;klwe7<jSHl+CxDZaHZvdNzjmC1$8l^A4Xl}N9cv}|Q;%5_p3Ri9p3 z{x<w7AsLZ0e*ncI3HmYu8ICHb!&$E~Icp((34yG0)|9e3+^F!(P{nDpy_}<6)-YRX z!0w5qxI-phL7(uC-hBR--aMywis2;#lHB<w-ifWoOQ*Zjv_t4|q;HwYOJu_F?3S4@ zXQ1%Idy@WEH82hGo*j57i{qK9SjN3I7z~1xsBhg2V|1rq&Y|InhC0*wlBe}CK<(n4 z|47bn{gt9?=)KKlwN(59=NFP~k)^ba*?~LP6g2;%YiS%H+k`M0juBVqX-67mBRQJU z!2=I(Cbhm%;#5?X%YZSCRZ8a-FpQ&R%jZ4gjZG*pt>EP|qv`_*$z?A-?*?N;09Yg# zwXNwMSo6J~t98Jj?-DsxFte`r+E{G7nZ}R;d_2v3zpthszilyQ03chL!93P2NTUlh zZC$zt50kwU95UDON9<S)Y$gtC4+aj<9q;e+I#%9_=H-jg)Sh#--bJV0+ip~k?HXRp zorCU*X{+NWj@#d=O=`Zvz9U&7%DLeBJswzcGdSJlfljcQ*vbJxUL-ZF;nGxh3hmF- zSCQj5h9Fllp?`Jpy9EQ3tiH**@ECWc=Yjh~DQK6jid4NDPPjwF0Tw;6RV-}(pA$eJ zEw5zks%XU-VSuW|Fd@cx#LDoDlYwk2Yu#sPw(pK+4*;=u|Gmzr9;781w$nVORrcR{ zLwb(a6GP)L{x3A$#&MO3Jkxs(&}7A?;^NXKm9E7XSp^ZepQ}L*2mr=bit|5=t>G+% zr2i@GN?rdEc3B-;KcMq^)PcMX=!`7M5DWt-jcESSb$ex!67h>>l8H1&?^#K0(SZOA zEh`myd47e33Z*3;SeuM~U88>0zjR%Y4(>mYtypYoz=Ux9|1=@oF#e0C3vy(;iKyXA zC5fIh0;THEzVC;&4ejcX%qupt0|hHAF{%=X@w$mZ$IFF?)E|v65z~!C|7Sn|bIqR@ z_G1R!>iRy(^8LL5`369s3=CoTllQ?ZJ96XD1mt~e!Fbhz{?K$G|0hj%xBG9Ju3Rn5 zvCGe)QO}vb(>|e50Ge*#Uo_oK4u@zhBOwuCv2`rvN7StFECw9Fd|>0)R?u_z9r4Z) zZC8PV%j{SH!_l90CXJ-ePI>Hwd}CPM93cq-yXd87%r^dn?MvG(fTn9{q)K`|BI`sE zt#%gUTB;cT2d0~f_%}>f=kPyax_W<Lx^Sbt6h+T`xPKn6rvZ=GmL}`ANdplgUqSXj z(~vO$qNtLH?bDorjKZ0Cqj)haVnpt@Dbz4nnv@ZsK}9J|@&2YD7W(#7e*m$T{3~3u z7>gQ24NGo21~iRoO$^q%#%=x5ans8^z=5p|sG5Q74=#6p{iR>v?Ka58ast3?*$iXG zh-#ovQlOw9&MmI<$2t7T^0W!=x?hHvv{?Rknnw#%B@UK)*mZ%xnvW3Ah{ywe=`U1m z0+a~o{kD~tH3}2%U&?2BR%(&-t8|L}ALSF9Stsh7v_j(7|3qy0!Tm3YEnx#Xfapnt zT$r6ef{GqB+7GA5-Nih+oAL0E=xG(1_ckbMELjK(quU3K)cFTWYtH>Yp|qkP>P6`P z)M5ZQTa4oLd`gJ*#DI3f&3uHBuXhZ>ieUPGwB|c3u}{?bavu%sG3+*?HSA4Rx>j8b zzxUaG?iBPjjyo!3{?S$m7gVqbv*i`5<dhe~#!E<m=dL0Opll*TWH_m_#{mGY7glRh zaM3yBP@|^hnqPBjuIh#JU_ddMI0HxIE7wiOi-a{Mkrv*-1k*|e=;$a+-6W5W<NIV^ z|NpC*VERRA%z5mws|bL$3zoWrl7DZzSOxjhc0ry_7!W*)6lC^C4wR7QJA$`d0F|xv zPvBtGvHH=uy1YHpf?m#=?>PiIOUczaIQ3rX-NJTFl|xqO+GTegE$+3K1%(v<Zkgec zmGO9B?(}L0jOu^>X>zIEf+AM`HuI7xhxDtm+CEDnp!J*X*n|2v=^wJjF8hTIZ#mfw zlRHpI-;Di*CHm6lOWZ=9m20NoRqlz&suhpIfsjD3E49MHPNUbNyIh3N@KOsD`e^ax z7i>9M4oydV>uj?Lo<LH_7ahxMZ0+A*UrCpGQ8nZ?iERtUX++2eJ&*@^DBx0b)*sKL z`hlY>r=<V|nsgziG(NS*X|9(bLM|>-mnT)P7lXzH-aaesm%7fc_trIbi>JgmH`edT z6J)uqOXOVE)w;p%ri#CXP&&Kqra%;dzpcSv*Uk=F=Gr-{^hDM|>|-0BNBLr!F*$?G zcP2*V+j9ktW`H@<5mtr<qB`$CkZyo~)A(+-DgBXC7@DTu)+If9{aL*5c^QU8E@pt1 zTCKaKzA2)?Qs%9K9lA%<JF3MiN7X8!AsM|?mSv5<xL2hu*N}bCB+>@*Sa5Tm^^0!L zd|q^IBpDZ@8}&F$UzO%9|BVv0TgU*~H8_>sSvI&xmlV<jw%5FZ+Oc9{6Sl_^=zz%D zKm7Gzw>!%^^EflEi0#Uob^w-}qH;v_W{p|2P~2{TFwYH}xK1F~K@;qt7HmcoQWyfP zefMab@<=xKdeF=Gg&Y0VZeWTqOjrCBR#He!J``l42x#~Fz%xz(Nl=`Z0sPGqQQbE| zd32Mp+s?oYzFJ)wX`)BN_e!~6NNK(<%X9=;v~PZmtAzH}NZ<4z=|-G3=qJH(%o;ZI z@w91vT)QDhK&UYnn?$p@q4#3l1gdOKe<bt#*14)><B3Yh0wTkxl8kS&2#W8;z%##F zI@v4J;>t8<33|qi<4_aiq_j(4^xS4BfMe~_NF=CMlgd26cB-=eCK<=!P0s59p9|)y z(Pim2dSrTdmaQWP`*X`(L;oh;2U<RUy0Kn_p+0d>Id^Y>=NIvqtlR-pBhaY_wu0Bf z(yy`z1v{SN5zGezPQuBq5X2|=EEx0x)342e!lPl!acLvMgCwGv)0v1-5OHW?l6pJp zu$&?5YT2vUd@cbNza$}~rs{GSQ|UcJ=t7}86Z=UfM$e&1LU9uD7rld{Idpj8c1d%j zQusPC9Y-vVX}b7l(`DZjYla5<YEhR)j3kp<RdQP&#M{4Jf7u|K=)bfe-ere(JZxsM z_cKWt!RTNqjfP)Db6`|RJ7(5Zowyb&7oStO>19OL9O9J~f3r1AhWAyegdVS6&xYYA zyGFjW^e7jm$`)-mC6ONOPpJd}EMspSeZa~UhZc4BLip+{DfU=bmcq=W3Au8PK|pg( z>9>Zcq<CBzI1!j$p%k{%ek<hA{)TZ5c3)BdxwLMLe4=JQpEy%RC$TJdMRH%f>FPX$ zprHPAC`jyGXLKz1=^iChqz3)Th5Di3Qj-US>Rn8up}&&X_}hWlDB{aCYO)H3p4(zP z3yR%BH}*cU`I@$pQ=H41R2l7z(Qt8l;B%{@ZsJS)3S3clpdzHjh>q*6$fENrVPn!u zP@Y`Wpz@>M;iw-X*Njx`0aLZMWl7h7MT&P>VJxlM41CcFs+&*BBg=ji%7!0N?yWbZ z(2-YAY<|=5Md378XC5rx3QUZ#2fgOTbH}+rPL$ro4x)1)(&@~=%F%uOth4K4Ut`u2 z2+vLhnIw<IXkE(5=(Uap0UIbo3kiGFz;VA+n`kFW8_V+E)#42%K8fEX(|G2~B_B1= zG59be$r_QL{$wm>Npo19BxF|g($+K)M1o&Wjyqo#Ts1`ezy{Q|z`3M2jiPvyiNl-p z#H%@MeQ`zglCRTXd(vj)te2V*bP#LS%c-Q_Tv$i*6Z&mw;`oD1r_@<4tJC`dVvsQ7 zCA=;tYBi(W_Oj3_!|X7_=Q3GcZ6dI9w6!nv*pYYiRUY&QL>#F!`Y7POL08)0LWq<Z zz8^^ddPC8S)^gvpY2SNCezVGx1E<lil+z}6hf?pb8#a8h=2uGv@^K)N^NgAKMWs6X zdQs$JPc5dBbWBs>d(D;d6oB9R1QWrVRo}$kKPi_qfbbx;)6=GK(;fdv#F5xJHB0Ws z#}pR-D0B=sA&N+PJjTAs1V>-cg~de$Q{OF;x}x!fQ0y#_(JF@%;LY-MFOieD4U)Ls z8$`FuHT#&XF<w^a!IPAxQ<Sb*=RG}sY!*9ytce*lKA6GtC*`QK+!p%G$Clo%AG;mK zFc0UCF_^UPw1eSZ^9w#ly(Fi+w~Dt<O^bIbfoGy>aouxiv9feblU3*2qZ)QBM9}3L za@HH_XdN&^;1e=j;M`TF+GkHpcRm@z^+Y<k+{X^NCzLE)T*6IR;~Bjg=ZPb9HEt2Y z7nRTkm(;eLInETy>-rUxEcT*vJT$5f>k;u=?u2>Uw4W&By?wZcRTrIgysM`(Q~tXm zqVDs-Q88n)6<wdUe18wy+4BwA^z;cj2xwONBKjmBSvH$Xjd>H<Tn2UU_x|jK$S}k9 zY@QtH=|Hi_#knl9qYY&Up+*>aQAk-E$}6mL`0MpCs}wRw8$0(2@rqogEX9bfh?+$H zLyYM1-+Nsb?s^P(`Xw!@f#ph7b{aMx-!PDRF|MG#XnD`ZHM3<c@SgU3c56wnNq~R6 z?dAY_59zKdztfe=NWWSPG|!$2EyQt_7kAbB$FLL7BIlBX1%;cJrqv;dNKmwr&*45- zwpJ?uhlA&?T>P4bdx7`rd)09=!lJ!1*A5puS>zR5(qV^iwBT7&n-E`yN!-0Oz>}F< zt@`?N>+qcQc@gujrFcQ}*R3eZd`8q)$)bfdr(Bj(K#v_)?qCGvM}zGQKE9&2hyyhh zjwCCt$w0!8>CaEz*r|J6_Z~;S_uYP;T!$S@AK*^)yfAULzEkM=G$<b#)<Upv7W`!3 zPf)|te#w69lroYH+ammAEvGak(^>pS-=W~4kcXx{YcQ%cp*M5$bRD5pBwVd-72mSx zwU8B6W<auz;M338_^3Otj|UN`$5^l(E`XO9#0hec0Em*@hRR9liWiI|hCZ2r%PsM~ zJFUQvMmQsd8}Bao`3$)0ln2|s^6_MUg)k#xYf27LnTe3HfNlfQa7MVQr@M*(Q#dP( zCs%n_DN_xiCmJxwevB{tXMw*(0utJb-_at!x%d^(lOcc+N=}yb4`A|KUMP9k!1p_$ zn8BdwPiDUX3;8T%lP<K~E0=BXre9Hcm)s5AZPEtcHSKc$uKQ4t5{rFQ$i@}?)vI}q zcn(C=uRak>i0C|-jgp+2Ya6@xyZ#Gxnu_2TB7s6HPvGBj(Z|2p+;CUq?VA^8-<j1i zaZd8u;(_3ChrqYMayujDUVrbMsbc)xt2A#6z?}9BmUZ!GW)M{&w;X=D$%Mz7`ygWZ z-q3~ypCmI5I(wv-h>A=eg}fvJqFg8!NZ;ld_(}v7FEU7pSd+vo{5`=mTqgOht10yw zT;_w;kRu`7Lfe7YZ<37I!c$NY(u6VZCk_HyQNWi7W4-PuvM>ferf;|n;)T-fSB^-W z<j5MU!Y6dp`Lx%gd!Mw1f<a*tjDm}r;%sLbizto<@Zg~~_n7Am)+HXB7Oaz#beJaR z4_-Y*W-eXMJqz3&(tTa$cXZR676b&g9ImdVE!qauK4Shuq>i`~?LXXOR~xi;Xh^j# zp{Kmjez~LVNpU;T+WYSx)sW`DcD);6zTBCBpma*O@EncHidiUuUUfZ)zxl&+uTlvd zlbPWP>`NPO{#bIE?DbAzNO~W$xLlSd=x9B+g+TnWd94h66gExJ^??8%8H*n%ULY7- z2_o3%his;=7$q)&NE`!S{*KrM8N^G3i=OP(r=WQ3U+~l!7L+pNp86a!C*qUT>)eXN z7~AtPqy;9nU*BT~8OensEGvh=n*ni_Up3|!r(;Q77j5Of+<9Hfu*x`>C}Pt3I-5V9 zKk0IsA)531Q58O@m@DT*iW(Vu7P*9$K@r*5&VFz13c@5;Ds~3&Pvvi)Pj&HDV1H7S zsa$YPrEu^f$}>|q`S5peVw$(h*~SUMC5S+7l#a+^{-A<pm^B@{GbIZE@vaC&LFA4~ zRQwcs`;G2CaQ00e2|7s%HUosua7&25J`k!6)vM8pZjpmp9+?Co*jjz`RZ=mLx;%6U zf3+?M@tGOS5EVXA61p7W{4U!N9(_3w@rRSTgppF3pgP7p7!{YW3?g+DX1>cN%|u!5 zTM)>;B657PpuYVvlmtRvE#pzErdk1obbjzqq5#T9Yl7*^Pu#50LW#yN!j_bR(r(No z_bS{vU%iBH<zO35kua_4O5xLpQR^iM6WZq!d7CZpuO}|F}9EWqk_XI&e93VFyR@ z%{Vdyh$X)D24Kl5aTha#67cTMl@#M@^&<+7(W8n&OLB6XGp82PWq#M|(tiBzD=rMY zK{ceaB%knxcZNx3a}FobTymBi<r+Y`&1u&?{<f6hPM9OmJHxu)O_1|i@6kJ%d^IcH zWuHAiLX){`<K!KCdE&9db5-cFa=Yfz@SNDX2G0|r_pXM$FmLmixy7g1Dt_yUw%VG1 zNrz0=UNRw#$W6&7lUB*0n=6)}&zkgXN!n^T>Ty)_g{BNo5f{x^d$Ew_8WtjK@W8u! zFXo`9ij>7{P$oT2$Ap_ZfqMWx9lDVCx~q_)gAE?IQMQXfc4@e|K$FNL+4jLE8)?c_ zvmasxMpj&(>kgsTY`kx;EX1P27G00#hmbgS&g^C}FS^Sm{?B^8_?HV)r!gLWatptB zu>%xN&Vy4<2O}jT8Q^_wN|ji_UFccdh*MxzG5D=Ve#U?S(<zAUyfJX#DDB5G^I?$o zfCCqx16I^#kZ3^OLHM&Sx`b%ETRaAw0ja!N=12SWRr4IX1=;pc!f9?68_l}krn91f zJW`uXxKttqb@ke;uzk{1EA005`4*>kE?q3Aja#w6g2&mKrb%cVZ+`8K2fkb}?7=6e zeU@kF6YAqel4hrY613gDS^78i+*?W#?H7&*#ddDOQv11dI&Qq$b#$t*sKl!!J5s2; zW#8TV8yVI2Z3I?p$Q6R;ql>u_-1vtpGpElkeB<16*}DdJqVJrWi?Y%YB{rkP8h|Pm zNn#o3=MKc1IO;I>Z;=yZNA6`i@3K*Yjn)sHnrY!e>c(Ygj(O)Tl6i2W0vaSICWWhf z3VeDslEj5|8KHrV=t=USgC!2)+7`s4a)*}4@SHe_H8@Uv*RTx5gbb&!TF#ry6Ngsd z;-X{F70H;!3frm&4boxtSG1#+Dac~5sA4Ow_$vvwa`w#gZ9dCgPtfmexx&+hmG#2% ztnjBgs>@hwO})6ImUayeR6UXwyQba}BK_3$OY$NI4T_+I<EmxA0`)|ypq|~$eEvQZ zh7-@behAl^P#|Hzt%2`5`Z}#1PU@wJ1f*PJelc_b79{uwz3e&DI#09b$UR6sLd5Bd zSm<xOC~fPgPM_I}rMoyjoilhJSBAp0AZ4O8o!mt4;wx6JXQa+p&C$Qf9gAyOt;9_F z1j@I&Q*FOd6lK_kU&K#1Q=rKDk!IpjPX+dis;Aj1){il6*V@UGVjK4<{5gz{)E>g{ z4+QSsHoeaPCqk3Oi>KK#B6q2w$l_yAqC_)ppG_^}rbCBR6?idh?*ZX`IaTAbUqObt z_OUWWVb2nRd}lZyC&=iqgoc4=R6|5fU&AC~w^WxfopmkbupGs|Fx_a%oWfb-SL#{8 zzB{oxe|xL+**s~!oa%VDE^zYMIy2kQ=~y#my+ppY*<_8%W8l|a=Du&%=jDTY_A0Wn za*3=*Q3htSs*5j5zi?g`P_I%B?gaVbhG!}kfU?-N&iZEPZ-!vinCr0w&V+?^SBaGB z!>|r;g^4Y%cr;axYt|%1*|x9>o-}wf5fNyPSYSX?wV1A4_TKLIv$Pd0C3s!ZcGYvO zWmCRp*I$zSSavw4H`uyWpZy>Y9eW}oU48hFm09r<Cp3m!W#W>jFg(3{3gP+LIG7zE zqvm*?Zs_w%Q%(!|+o_VObg#PKeWM)8_B5RTM^^P}b{fRvkluj1DXd56Vdz6_zRq!; zfs|*as-+8YlLSUUA@>APagH1w=v<6(iuI$yB6jxobQY5YRgWaiMx7)UG3{JQ8dVH6 z72{>iGOaE@DJka(h-7rW`Z1mS`8|2_`#XwZuADA~=x46H_{7~TM=`~WM0@J}QKh!A zy7rS=vaxH@%e+MU%0$B=?2vezHv38)betl4?6W>PZ=)o@-*@Ftx;&NZ*~YFP*pB;G zf5T^Ef>G}4^RkSb<yNXtg11kUKzKL<3UD#b>TbHWxj>6ND_kHX=N{+CWpt$rH!+Ne z-Rsi5cen!3`9>s<`8Mmm(?QL{f-tCb;UgM`*Mqt_4-5FO2mgo;Ib2+>GYNpao#0p4 zOlH51OhwT;K%<Z^A1!(67B`Qrzd$wJ*#4IAb=po0bbaP&sn7nN0jzShye}rj{Hy+) zw@d>RZin(O?~AHSrh8RJ=#OT6%~`ScQ%Fv%#b(ObpbqErOT}CAfhQqm%vcQ9<$7{W zpk?Xbr`Y0z_HpfTG)Q4acr`=4i_iKo3|~D;rrmEyf8wI($!Fc{yko2j%@LB1oR}Jm zb>nyC&1qvA8dB-w0g8dbc6i9r7Ap#`vc$KG_ubo#`AO^onn*4j<-w?xcFi(K<v+>A zs1uLWS@OyY@w>lH%*Ys9uIU(c<&`~m=})Eb`30-=Ahr(AH+I_|FkE-Gd3>+nN!v7H zsKk7z{2`5v0xfbo3ib<rz?gf(&3{wIm|j>3!r1ZmT`@>c-U(uV*}AivJ%ATHTv-Ie zIY(i8<=a8t2AgHVUhbdp*na9a=o$E!Kqa_Pw#Z(^Rxs&{xNn1R0B*E}L3^7Jt+L~& z@>==%@oG=9L5%iv8{_lwJlylML8YsdmEpX`FIxexJbGS%<va<^a{$^d?n(KC3A5s# z0R?A@`DyZUD*O~P30)0HV|x?sSMKHFbD&Ge$q1{~(L#IZq2RcK1zw&79X4otQ??cL z58|_4hp)lIajcvLNSNX&K$eB`d1e|N3m{Lgog1WE8UY`oISmaEFA6rS8steTHcNhs z^Cu=%m%hy^Qmk*(h$ha66g~N)sY&o8STRgHW`@3>UidkuJ$K&6-Y>%;9{gleEFU1Q zu>4HP)^tlKrA#vq>9x;m(<7jqct6G1gW-iUu#uG{DAPgdP}_mDY&e20zyuMhV)wD3 z1#mS`So)o)fJ0$lL{iL>0+(3n2Ddc&NC@_^X?DUca^1Xd`}?qRbl!gEYxOf6;@aW_ zpx$68+^m6cj-O04mggv75UmTtp$Q=u9}?b`7~{jHxEwp-Uz@ZQlLF#cwkybll#y_K zG9(_A1JtRcM;7Gy!g}(~wl50;i9xI=p7BKdSE-9o-mv=Twv!-;pSI9bTxAxky1k)w zDC{t|PyE%ndzqZloYS`#QcaHs^jd64lJZCgXQOzecP{5<idmX+Nvr1t&^;iHy4?(2 zEfEAkpy`n7OIv}*t=GI`b3&yYt|++qUHV4s5i9a{k68_efk7lthlMPymY}e%N%H;T zh-O$h4^Ig^C~u3CL><zT!5Zy35U_zlJj^m*m2^$#a?04AY7ZR*d~TKKa}M?6#E%+i zWf8O&EzVS>10>2{Q9UwZI&|cSLC9ntgz-qg&XXaSbMof0@PmTl&|swQhO+UYttEy* zg&RhnF=!R`o0)dzD6uIsk|7Z!tP~W*bD1Tz&?Uad@gnu@%_3dI;ER7n>l<7_WXJ5{ z%m@fB?M9ZV8;vLZW*v!p<AO1s1~Tddy)#QjtmP?a0P*)|v!LSZTz}LzCvuc4Zfb^7 zHl@$-P5T{)ROllR1|`8LxuPYuZ<(!%>}UdKuI~a$qf7L)a_u<#F+Hl`HeyJ<!)wdN zY*o8v!-i#w7G+EI?_p-f=AU7P-uvH%8I3@#n;pV`A7(1){$rRywIafDUJB?wb8LKo zG%#pi!rfvXZf3eNtpO{_$(_!$+8k6qusTp$`P3d#exR!9GGq!m+iC8{;AeInRwBtI z6AZa~;bW&4^hYF&f)S{Pfr5sVEDVxhAtVuq<>rJs%{{~+zr(n0t(`!Lj+aEo9z2wx z?qpu<m-fn}eW`$J?zf8ed%I_I*JU70d5_vMTtCLQcXz*9Vb(*p`d%DyXJ8mMwJ43C z$%@M&s`(?m{s_)RSHn?#KF;`<CR6$44XmD=dE;4G*C0+jHksWiEH0irB7rC;n2jA& z+dmS5Kp6RpjnBos`u>xgL=z$Wy8v4j|H025;)QqM^Apq3W8Pj7cn0aOIF1E`TxO|N z!~^05Ve50KoI?n)BESliU?5L668ApyJcb}V2F`G$p@CyXK{CL~HCUu#p|MgkVgLy` zs~?0!;YRN$IjOUTSY$Lm+!QV!M-wVePKaJ~o4+hE_hnl4lH<VEPX<a~B_&CiHHjiI zNkFEyUT7Yycea$k{cxi%6J|`8T%MMMz>ETwG$lIr4iSbbAi5)nCB2W>+*BHac_xZ0 ztQg_UJY70nc#VIcm~bFbOi9sZaMySSy(3Q<dP_S_GQ{<q)zTZ8a8EIjKf;reaP2$v zDoEAb7Wrqj*yNHRL%pfS<PSs%WYMeq&^go?ieLPpQ%`qgWspnsfw7EmK??ry@G+QQ zNRMGn(9~>}ywLEG75E>+>y}vNi9aDb)<!kCgyPRBI*f@nb0u00GcPA!?+bB_-N}hp zGuM~K9kx*E&eGYUokz>Xy+FU2>1Jzgg`qb9=qQIRS+O+?JzozJeRE>l`5|c)=Zlv+ z2w7EkLPR+`oWQ@*I_fCJm~%c~hbJGK9A1n8IBfLtgj(yK2AYU!5i5wCeBGqgOIPD0 z=?N+~)&sX*S*heXTp<ueLm9S$`7!Xwbd@F2q`phon%)$*QmKdnJ5T<Anm;nX{mxYm z6T>I9CI1f}SJ%z6ZFou-cpMvb*s;~^+bqY`!LmY~>%Eb<OEd)Uljhoqt*`WIr|{Zq zt~e#ts`v9HBRsi(^qaS>aOroJtpXyq2-gIT!W6-Mrb*cD*Vc1@R-@B!-AZ%22R^2k z6*dp~T4s<P#3<)yVUS{lYj++b$tVU({4J~=`Jg1+YRoXBH&J&f2uhtL-0Y^*Q@UZ! z%N4Px*>B3*Gk6c}#*@2rCmg*~DMsP6g+5Dq(A(t-gh$BlyWFgRADqiV!ksXloCr*9 zTNfMJz^jrcJD??-#MKM!V0xSDl%Tx{pYz4sS!+~BeFurl1Sa`<8=;M3r#tQHx6fs3 z56xMQ)=X$yeQv<xJn>B0h<=7O7UJqbf9)KOW4q30PYZIojkPR<Dkuk`eWbNc8?t8v zs^|HNmKbB!;{tq-M~F3=r=TAO8RrAytC1b>*eA?KuoddTH#jRBfAs{6)x@hXxWk|9 zJov{+;$OlW^<#JW=G*U%lxr$jb#zY0cIG57?PY=yvmJrbG{3qyEAIy5eivCrCmEJP zKOTAG@-(xy<gA8t<P~@nbEh(v&)WT_+}N^aI<?lXz(agl=D6tz6QGNj)2JmL27_WT zS9uqj={~RzHu_?;j5}d9MgN{}M2?Kq_pU1$LoOe41hiiB8^fjYl06;%r-hy#9_Et{ zrjzI~?GL6o_dYY7I4x=~Vcnks2Fy!%^?A%RYrFaG;qo6YYp{{TIj$s$_H*E+K)zt! zVq))sNB5TW!e^Od((T*J)v%%msqCP)I%$gyR`MoznbPPo-e)z)&?*g-M=OQ=%;(n; z>$x(GoGQ3dUowOCRnXwbrZm=9E*i3<Qz@<jej#DP?;1TGJp#COU}dlpZ|Mf79^r!e zinNqNrRd%j8|Bj*l1J*3t^F~2iDr_xu<$as=(aQp9Q3O26DVSiDew~uCKXd(Kekj| z&!JD$_CLGIMBaPYCNpIA0bkK3M4y+(L^YYc<Mt3aybx|Y{WT2XV=`~!b|^hVjaM1f zo<qY4lsVUHa{vW5<XE0}7o}8*cQ<M3Nsu)D2BXGvh$;sFe(3zKU(4<Q7yosh69Bm9 zc>^H!nRK2bRsVVmS|j;CFZOs)CQZ2lUZ=zP>tbDEng99_bb*8$j2?+cikxc+-ra^X z6OSW)@1T&U%0<)*+Rb|#X&NndLLIrZ3?(9bpj-(<PrD?ChbvBtl9>73qOH1XhZQS4 zk!O+1Gl_Xt83!iIrAWkk9dn|~fnE&}?dpm{1&iyAvqw4WM8I<6eV$0jPTVHvAzqu8 zYghN{rsp==6zzMyltIdh%&j3>2X(6UYN6)y+U#(Q*A*O&gC%BU7zIFrenlm%Gst0% zQhr!D9&(eyFaE;$?hB2!+q^;dI!5Oj!b=fh<>3yB3cDF3<O1sr?(bQ&Z0+6LQ5N%H zFtD;NOAw*|ImYLqfq6^|6!h!>77es(emj;acDAXYRvE(A%whDFM1s>fC$^tyZrIz# zOEbar`lxhSg7f-Aw}JwgN3wDwuEY5{bYRPPy|0T1LIg#(0-{I{Ov?kNMCvRf#N9(I zGmAl3wT*sHeTge|ZP|rO$BMDDrG^)Ky^QLysY2Cz13}?~kFw`Nf31J4QjGcqFU91s z3wtTx;rt_=%O!>y`z-PKm13|p{dle{#x)3;sQbK%jg)R))JL9N{<KMWTQDi#G<Hn` z%&qq>S@P7?Pa_0-fV{||FsfmeL&Y<3vQDhNY?fm{SQ1b*SInG6G|dVYMhKL$>S0N- zPp9)7f$$^f23_~b1orb%q8cI<w7?c8?PKfoNba0_=d;Uuvy$rbl93nd*+&l7ZU0p} z`SNk^W9syg=kQ44_E|R3CoFm^X7rTnydz($=P(n)do5}0(N%H(!OKG<aqW>FXYAYq z#0hYSgg+a&LK3Q9%`Ac<7`yJY=kCcPx*rG2E0|#&(M%*x%bT0g)5V(DwF%WQ9M1j{ zit>DSM#ipy0l%BDn)chcr)0w^!=<Zuv8w|BB(QGrUgEQ1qou=iiL!o|_E6V(K;fb} zF!xE|g>75Cq*8s=1pMfw@Pru%Z9HPs+7c6&3XMC|@v7mrC~iB7aa6N6qM&^>OdKpo zg#D!N8SoN1tJ>-`LemwO$DQDJ)SKHuJM;C&k*@`Xan{q-hYZBD(Et8C_4%xeFZNvp z5ef!GKmfl`J{KPm6-*Fbl93jVxWasPFJ)ltR6TJ4jXwayR86D^#8e*Wi`y~afWeI9 zM_3mUn967>8DbVX++zd;4L%(!6Zh98E2wzj{6af<cM(En;z~~N2zdlmBo@4u)Mr{X zwpvg>w7>upTQO+L66_F&3>^+Uq1$(|si@&wlhvZEXy+L3I{1%$Hz7Wtn0CV*N%P9( z9c*CKh4Mq?SLOnNHn8Q9indx1;8R1}{P)tglj^D6xttAE>k|63cNCWvPjj2zO9wn= zk_7`*>k5hO*7#vWJG&TQGo&zZ4R1ph4!T{0U%(R@>xx_%tHHcoOX0(<_~5WjNsV|$ zE%cIwt60vhY<jxG>vXiouJmGpAByKF7Uw7{wdmK-Rnv5)n4^(R=RecVd$ny<G;VNf z7tdISMwBPMBRdrF)U;Z}HsN2S(-)z66q)VSFNtPZIwH)t;3EWySIrnm?bN78Nk=Nc zHS0lGyl7YKEhbiqj8$DfcapkzT}{urDZV9%SxxF<IaW|*_mZY)ehv9${=+_Tr;h8e zPSP{#2aU4lcP(e#R?Cvtt60LlFFTY?4~{iF+_ps?H?pUlfWin3hNHAFVJ(p=3Dr@i zBg$fQv}4H5O4<#Xp3-+iRo`q0CXlBk2m=>TL6NeoLj2Sz?UCy?Z8voDH`y|lBW;c~ z3va%Ipw(i<w-hS6JrY*}IUU82%b)H|PR7OpVrNC%lN0bh1Gm`_HPjcO!#q~#9B(sI zdB-)>$48JKL6uKlIM1Lzg*T;?hMprk5pD5;v!YqsmmnO@0<B;xz^E<@<;Ckj(ut>w zl%H|*BcP>;BFR;VbJcV!10yLz-t{`e8mQJ_8W`q^?trGg2BOEctsL=*P26H0Ekfxn zvF`ad>fGy(&SLJ$V82#mY-Gw2%lsBkFaMFznrn=bJl&Hiq%!{m>T`L^Hb=rUFt@#U z#XQl6ERk=!<htlY>sta+q3-~<%Wa`<MA;Ic8~~hFwBLg`7L@o<WPe(>Qf)gwJ9}9L z9`LKNKjnvEB+ex;#8%tc32dCvt@KTwo=-uCqYBw2<e7?V$f!HTH<@7L9qBf@*bI)# zcMBmb+9AUMX+@(QYJSvJB5!ryltj(n4=w>dQpDtC6=c6cmq&4x#lrX#iqn{hq2;0z zaN}@Ch$f<E%ogjoq~<YTA>m`caSI#rAr~oaUAhpEb<Oj*st-3<u&L&%A8U57bE3I0 ztxu7MM(%Hbl=1ch*;wbWpv}39zHEoiRXN6rFJ@)G5H^9!WH_<}Oyo7)N1{m^P@M}L z1Cbm7Sz=;$BO`7{(+MB&nV&jkz#Ef=*w&xFn`kIW>@2yT@7-!jXa`AX&k!-p$D1(I z{D#6pHt<hruWwEUW_i82wcd~IZw1#bz24zxK7$Bsex^Tj{M$FshNP7H*Av@*miSP5 z-?0L>yBJyAdt-vQQ`Wc2!3<SbwlU7vK3ae4#aZ#|@4qF|!&B|9opJEoG0^Q?w4LhX zE8u(IuszCv5-{AJRxg(wwd4}@A0<9%jP(FdUuuo_tBa<(Vh>lcOkKa3ncnFgE~gk# z$|YfT3^F;|%Ob7TB0|GUmAd~WU;FcOvsBS(;byyTu6LC$WJ}xBe^dG5p~6HOeeC|= z$ta)*hn>UmK$QFJnhPk7d9qOs54H9rv5Z69QV;d6L8b=+_{Su%xt-7lQu?*wL-a z2E4Oz7hWQzoC_x<Q4x4VME>MHpfr()5sr7;jC{xN^Cb<dChw11DOAU#Wj}L#-fpM( zKESh^PDGl*%zVDwMZU;86-Jkv)l~i_k`0Xja~Ot?c2pEYB`MlWS#kT4gSN!d4)wg> zgvndb=5@az^&Xhi^3RHBUaCp+6-wJ<``dKYy`>=ok$#)+%K#^{j75tEkWWs_+McGx z^cMR`=Ypl5d&7)iS)+RgeB+OT72a2PQ$|ibzd(1$xEm@BHT7fp`fGNgY*vV;Ey$a; z52?$PixMBtR!BzztzA0b1=_}!Qb`vcKhCw+>M--9@Ls5+c_6&)Z=B@V=eW$Ezap3T zw3n(|G6h{g@>B^za@o)#tu>gmT97kK^K}znmH*POJ%7<^AtP@h*`x#X>zn^4{hAF( z;vfAw5bt`k3%)R*5|*woL}^K<SsgM-YG}7O-UDoKJyr2&oIO8%vU4@Z+X=BNFAD`0 zrH`V`Eb4cQaH^*7H#lH)ATlSJSE_Fe-k@UJUufhXC^$;sl~(RMGi=YhIHYUU^9Uza z68Kz?E?4IYIa{(Ro7TioyuroUT@BrB(1qN?`4E~hb$4<LMqkP05b_T6!VE)M`{K5# ze+XSqD*O?zGxUUss(OvFmQNI+St7yWny&|a`P#^WwyxZaTz;+mkb0cc3-~3E@GBLJ zJM2oNQih&p`5rF1SIQ^J&$#z8%rg+M?di9*%&Wx_ihp|i&JG7tzV0ll;K_jbXT?K@ zwBh-9v<*xGwn;uqCYY+l+4qhFHkxm+kX4+-d<If{u&FWe<WCBSc4bNof-JHHmxlp+ z?f$o1{gaGaA`&|CC$0#Q@oZ2@#I!)%^em~Ok3P~yoE+(=3kC|MG#rP%MbP7`J1oVR ze^S>9cB6aLgL=yx&m{|%$su}FgY#?m)@);kPREvcwsyA<-Xr$>v2N;_-Td$EyiMl< z+`YeK>g?rKTyKtV)sKNDJ>fsPU~WjV&(Jt}?eA1kX5Kfw8NYaiH^+VHI2F)!=G4d# zyxy>gu}L>v!*Fd>^`DiKH=Sg?G@yLFO!IvE@z4=jhRt1#EZ>65y|xX9kJ-6fhCGdu zC*=MPx2=gU02L=1gs%=B7zj!-+gFGg7mqKFivyxZ2;;>HZnP3eUgl_*`%9ioq+iOA zXM%d<IKO91k87P5V?<Y<eoU>E_-Z)SJ&Hh31_6u1bMIz?*?0!yqPy{^zLaQuR+GK# z?it!h!L<FhtXtY!DifO`tUjq#4cXK+fGN<oJ_u2Qx%0hk$s}o)k7QvCUko&jhz;oY z;cq$m1ToNo{IBJWq%V|gXq;%mbESvD@Dp%7Ilg2NKhP&lnRjrM)I>BeTAX}aV=aa6 ziBta`6p}r~i|Lw9rGr{7_0!S4m-0yNzjihOp$c>ml0{$(A<h75eh93kU}$ch32~f^ zF^sXXJWAymB8xyRvw7&ITMK=O{|!1!qLhTV229Xs5fL#@VBc8ouC;ztF?|>&rV@mV z<F0Ie*w9GP|KaQ{fa==1ZC%_gxVyUt3GVK0!QFzp2iHJwcXxMpcXtoY!sU_dz0cYI zz4yFV_f=68bIvgqt0)S3AMI<c|9@!ET^4+rdwmP2?0nE4Z%r~wgcmLLtOU&3Z{gTB z-e-~I&@vlSgO$#dC4>~3#5JzVJZv!Dgs{)l^J#7_z!FnX9P4`zrGP}RSR}-c+n`#Q zvc}U67^G0jERX)BQ*4X4_keZt{ql68;k)?tnoqV<q-*69_tIzXij!3r*+XWd-#WoY zUyCf)F*IDk^LByr8ptL|a*P_Kp(kYy%ZOhvKLSuq>ZmaY$Kl|vPQgZnHaFCu=oq!6 zc^sldzX>z9JY3zfIF4N*yP~Z3x}51<?W$aYAGh@BlX=e`s%-<W+gUB{i}Y>WkZn}U zB|{Rrl6#~uv)#SPSbzN4pAmh(n%O7cmK9@hPwWVCwcLdA?(T1|q$|>}`Hq(MDO-2N zW)EIK`&N*lbg(|?14eLng4L@8Pbb9t*%|n1*x_^*$}85B=)BU|QQKx>XxV{-ssXVp zW2uN#l4R2@{rO1qyylC*ouYITKRK=J0b4Vp&ZjW@>!NW?)4?u9opvH!Xo0f9OCJQT zbccc<UJC%%B0<d4C4r_ug<8N!Mc|Hoq)1DA>?#EfPC?Rr1rP&@>m6^4MG!}q%7nVx zf{u_KM7aHDkau#7iv{N#6n&DQI#K{k>^Jh%3_}L5;}E5nOP)&UsVGD-LZj+6icOk) zxN0mOOpX_O(OsB>B0BBEZ^QbFypgxS4~V?T7(X9_95+oX3l<><isnVo)+{{^gPTGi zsDgXBtM3@s2~VtC@gcOK{dg#e+La4?9qHha`%XS-pCT>T#?(NPE%6Gz1m{dRs;Ucf zrAxhgKjt2E0(<MlhlUWYlO`$2JMAxrI8Vuy;*>V{=`2MeTZ!TVC@lHp(en+L%I=^x zOe68=`%O@9hnUp6m^Df4`UO*dJnBj&_slr_%BT9}YL^gqpXtRMO{rxnm;->|G=r}q z#3j-}&83bRO)cnVU%=qqBJ%cmAfZpGN7NrnfOmY42P}x+-!`cglR1~x2Mt6@@lc7B zPFNu2OBQ!>*Z8-DTpTIgxL84m^qlUPBQJX0D;%qYG`50}ON!w4JTdD=nm>KxEjN=% z%E*w{e|(zL?7~15?bFjmxB`sGarbNGTmEqGb3U^1#912YdurTe6S*iWjc4O3El@0* z1|bN=hM?429^}!)D(KZ1WtBFyT06d*(RDAlZ4HAovr$zwF*ep6Bp1P$-Nwlc)CpoY z_xU9|(v%h>j+K~T&&iq2Oh1@|O1X!?PlQtlC;$n{1BO9mzFr1-XBtnmEsL^x8N6|C zUys=0TfjM#33{j8t^M?7*fT_PB&IPH4V|8e0brVJqUst<1bs*{<$bVLRgb>P<Gi{- zUC8ZmACn30ahJ}L)#sru8~iwf>2X(9kA^u__<b!F1SqP)S2|Yt`_4g@ygrY~R8|!} z+V8C&3u(+0{(g3zA^B(Z%}n<1$A+=2RDbUe&yvvRv6=CLIc0)AWm5RGDU>wGxr!IJ zp;|8LCv9ci4HScS7f4i1|5O*Z%}=j=(t#fLLwPoxkrpn|CJbhPsg1Ip{cL7}(?__R zZQ2ZgeId#_x6nJ=(2;kT7v++h&I2>K4ksJxUZGQUk2+>|iGwqHfB01k$@L%t;)mEO zDeCK?FQ-AL)V{boov2Q8dXEvkRS@}|>XCk|)qCSL@p$fnVUBg8nVx6}C>pTOC>vMv z7;8DFei*6}T~aZ`SiE!Hq;Y6`z$TL@-XW#4CLDL9?62~q5`&CWrpW~)syH6HCeo!< z{0T6OP>a}MR;83~N`<kSuO^|-DokQnW7C=4HEUgz5H0wifXZBqF=6mSBxWpgQ3t_u zYE&UQ^(RzM(>|hO)X#L^Q-AKLOWDuWbDVIZkT8<#057@MenA{Xf!Rn49>8Ig;yK;j z&2Bnix5<+kO`@-AC7LBp`%!u>Nr+a1-Y00fZCF^oWLhz6-!JMmr)gC;izaLMf|4R| zxbc}WYU8`e7roH8=n&M9W=vBHU83`dX7E>PtLJ8e71^P6hEmsHn<z4ujRT%6_81)w z-T|?NSUe%%N`I$@h)8XSi*rIc$SAFB_CtXFUY?fI0);(+C(<EdEvr3gzfR4!5ZcXX zi!M=w&Crtq7j9K_pFVHL+_9HS)9$C>X&PAGovVA7*<ON&c}PndSgsvEUX$Qu``q^t z#VFUjS1g~0+_tFLZ^p4BEbd4x1kUUh56y!G87=4>=FN)@qJ4e)HJZ*)5zWrwf<{!~ z%6{m@pQj8xd=Vp%YsAhlI)3(a(Sn02se3DCGdA9-)bl~aS=+JRgK*w(Fct1{E3_B4 zlHMf}4fJ&tQUUy!W?+}Jg}|lOb=BCY1(R3w!@t~Amzy5B<|sxIFrN5cXmydV%d*;b zoDA#cIDf4Nt;OT0<Ig|ucEpEc_XhvvGQewH!G1c30VR@dch!Z|02)@PP3m7a$BkMn z^XW*Tb(P+Rwal|?(k`8(Rre0xbQynaWBbj<!|!WE;@wh)>{(?2psy>bc^9Y$w7gVJ z1833lYt0Qq3yGW~#+dYCe}4A(auuE_(|s4q0gKK2=E0q1uqx)<cA2q({Hn&Y)02qb zyob$*3=nu)n{6<RCj{<WvLF~&a|r@sSVJbIx(awH_E;DOT&X)_Cf%jpkFzCcC!^iY z4D<1y=>0w-RA_Id5tE`1mDRCoN0l{GdWJfg7|%|CB&xl|#DJF;clHN5)uzg;Jest~ zZ{fi`UMfwM&ByXhmC$okYidEynnS{hO_ebBD%%~@zpqQ|^w7>NsoVd)vxtjIy|xI4 zje1`CXDiIT6FA*J&(@WS|E$*K`tz7Bj{KkfpIE8Z7G+xGwmZl_K9a<u5ddu2k!~9? zR=$rZ@+cldMp#d4I?_&vEkFv8$IYHwNWkDxLk@JF;aAE;o!=)NCk^qQmwNE#kIh6Y zgVgRAR(Ei>cAW28SWH3N_B=k7aRG81NMb;*`!d~vm3$!t7jiJ|_U|-Y6f@yxINO6< zw(HNesj5Kn>*=}sFSd5>zc%cbG$}W0v(@8q2r@1DCtFHKDU_+;TjsO4%Pg#*FjLVt zlPC7^ayGSz?llUe%_AWw!;QgKY{OtQ3JsEgv$9B*?$or}N%o+LYzBRB3<nKC1P0Vi zX!3-M>!^|WxDubiuMHtvg9LwxOOdRjK&D#+Uj+Bw6N#_X^6_#=Vkx)qBl^hyaPm(` zPH;iv`$gG4yD`sjj=sy}h~K0qKQ~T5f5_2+p|Dc_c872A>hE%#?wl(M9Z#juOsSwD z(JAt13Mf2u@6b?l*Hifk$z-83D)d<ZoR9Fm0H<DplPh88h!rrG(#(n0w$C{y(&NW< zL(Z#Eodhqvc<*b$y~a>-%`#H^(_BJh`@5r>3EaMo@^NqLbZ|oL^x9*5t-`*QGA9n* zVQtX+<U@FDJXg)DPXmrA(|e}oYg_S)&&Y$--a8BH^~il8?Pg}S&BtLYi$_`f<YeOR z4T}f)L%GTu@1nO+&p7(XX5saHaw@|91&bfo{)N)xGp!LZl~3lM`^7I_)PH}OELnMd z|JOAqrScmui<$fzZ$hWspDo$~;r~2rEmVAb{&@cJ&*;x)k(s=|U&Qp|x6CIq)iLwq z`|Vw@)Kn9sS5AsQ!`$D5re1^7clQL5Y%K$|v;-eHQS7Co7PrE1ebrC?;H@)P9L>L1 zpSAh7Fae{#oKUDu@RC5bWHWh|HJaEN(VO_pcJiFef;+DMsRDPe9y>pK03M3C$rti1 zx4*gE-`b}`1m(_^4*I{&(_N~FF!mL`Z}rth9QUwgZbz^26?N*0jpWX>c&-AF9*ezy z6)+~7?oxP7b9Nr=^0v6oY~*c{ijI*dXq{<gdd{Uf;@3l{Evz^=t3k9f;;+}1vS@L` zr9134u{x(s$GLsa&xnrM=}o=VU#Y#Na}K=ENFv#ROD7W$;G;It&O=Hcj|k%I45Dd` zJTnc$x+!u>x_V5*w?M{se)D@@%D{Ox&A(o<7u7n@5Nq^|M-|!#A)2iq!{r!@LA%ij zf2`Q5=z*j6ZLerr%Sxh()(l8?Zs`!*U=#!G3q03ay1g%Ao3?N*McZ9j#?|r4Chynb z(pf1oXL>@dT@Sh-qrV`3a8RXn!TZ@-+-YL9w>&TxvkADy@OG648kK7|Em~tW%?C1e zW$a=3b@_@R5|KmWfL9%E;zLC6R<!deJ-2~W;+ZB~exlfaisy&MWXO9+PMd#R&q%C% zFZ`!sh3g~wJq1tFagA5C*;J$o{`6R*mghRFXjnh0osCUvhD+f0ZqePyMwbx1@2zSb zvodutNsgwpX{JMMi1LRS<hu$T5}44V;m1%}E!{{GFnRDxbX2<80s=o@6&gkFe%Tyv zb5r^u$`jlCc$WDJR(J`0&o94|#`_M6Fbr2jAgFk)>-HrduPE*3bs6^}#-%2us<Hfp z*uAP_VSv}eH+*xbj$+|t()|+;vSAt~hRP(DiQ8ydu>ji!zIFY436%4lJs*j7mEl1_ zXvfsF1K|Yj#I;s63NC{MHd)6SevbT=JA_@rLk{2wgGG*0Fv|TzB4?Ed^%Px#2pG<9 z_pk{rBy9Cmf=vc9A{OfnfQawhj#tpbW?Wk#Xk8}h73xm<Wn8Sui$;r%!0-!hYFo3F z6Z4_wlb2Yd0>BviR^NN5<J@%d4da7hB=V3#@4A{ALB0*q+l|UYbh$>gvjSZU@Oi?1 zB`(xXR$G31VGQESy9`Day&bv?Zs>mh<kF%kiidfB_=^_)J$Pq7@X`nSFmmA0WlLHV zvd!)#6XY^;=*n}9AyQt9{7p&6k{t&C^`?~T<Xmu>Y2?|^;}aIy*5e-+366&2?_{5? z8lBA=L79Uh2^Pjh9#6UAA|fPGo`LIqgJz}t<rqd!WUVgmYc8slvJKbAClDtXc4|>b zXa6@Syd6twyYLA?RJ#O_iWQ`gV`hPKv$|upUee(ChZVKo3eAz!3t_olv&>|McT<C5 zS8<**d6pxfuGQwIVsWm;1p}{q^=#qd>F{h|Uu3spx;)dI0XCnede%T*C-qhXs-(0s ztEIvJ<fM8Lkt#;#OAFjl8I(CR)Ad&J-3W^hcAr{aZybq~-%FSRdbA?aSAFl$=kH6p zoo>UL9Why7l4_2+3i@f5n8CFQzK)_=EqC<%gl1dlDY?#kzv<+UDk&qJLk&#vmzT=s z7bv2Fs>h8dH8<?Q{DG@MZVaFuIf2=d0d6bLQ3P(I@@;H$r1WisO9|nRT@n)f;5G7l z+xmC)n1RwkTt^GU|17Zziw4=EyOMwE&uJt3g(MdK@N;TmXL_>;w55t0jbL5Ir5iVr z-uwPIpxciq)`U_Smp7+S-k$hvl?E6o=<r^cg1*R8)o?2@T1I_ZkFS|apSx0CWi24R zgZ~p{wt(nuKgl>5b8zh(bYOZO<d&7z6M#{ypGRS{2G3+hL`1dJJ-Z{em&_qgn=aop zAwavXp3h}}!Vt$Kl!){at+O$Rqktw_<NNBBh(0{kg=6(jbda$(6-+SYsi$nU8h$;z zNBiv<)&il41NBI~mR7AsXWw;_^|#U&{(g5@llCUlZnZp=C+q{Yyn5#M<FK2N-L@Xo zO@0&WMpUJJ1uZ6(M7`edPL`#gtsnH-kWOvt;UG1;7Go;FV?k^YI);XLfv4YbpGil* zr*hcQ0}NESS{u6_el+r{{F8wmAvE(o&gr&&16oyGj~&Nr7}L&vf}VFQuZYxnUILv8 zPM7SLpX3?npWgEe4q;p~s{@kdLoHA^IJzct@}8ZLME9}2eN$2y^DYIFnVq5JSNdtj z6I_%W>_julVdFY$h`HHRlRv;I{(V4gDFeZ$PA!#H4c)O%h|a1zm~ZYhMMV|8G))^a z``Mh1k!!{5C6HC8Tqc?0$wNNk<N^jQq2!lo9h0AYeyP;L{P4PDUa4Gc9)Uy_stciz zJq89pk;VB6gL*uDOJbZ1qwpZn+ONW>Z$Q_hvHY?XKC&_A()JA9^Dwqq{yMAGU*kzX zHBT`CiXXXQ2A7OsJm_kB^&(swckH||rmS*r9sJ7?Fi`PVJ3>7i^P>63U|kD^@P=s= zF3hA=09<!lAuG*xTVG#p8@xsRfQvRlL87I(v^s|+b!h~2mCTy!Qses?I?b9vFh03S z2PRWi)A0=IhFQais)bsAab)OkV8@$~#g{Nyr68&+x!$X1TOC=fK%NalnYB8_k^#TE z78L$^^Q)<;Ko)C}SxChu)2UGVQMmon@^^~HstAJ5FAPj?)973*^ng5JC(crhc=mov zmp;o~={xZW#`uZRTJ$4(o3^T%Xh!BJT-od6>}~bdZyrytKkjGo+jz!uyS)R=GHbhX zd3CzbdOQ8PwRF&yk{P(6tZ(#}juE(YD&IG?tn)s9rU)n%Nd9@KZpk5G0ZI2Eii|t; zskK)+*EH<-SDyhrtb)+l$*q6S(|~pI3e#-t<~800uRf<6J?_)dqR~9|WV_cA5EDEb zUcDKCf0$?}glqwxHNPM3mKe^gy!s?r0_X;3`Gw?m@%bpQB+j2hicRcuLbbKWr-sO< zLyz7J1|Jaka&Mwva!RvLJ&lE-hvVy|nrFke<l*}BRi<o)J4qF$lN2a@VpF^a#}g>G zHq-$`2K1D<poO2&9^h4i8|wb??6nE02$*t#BbdO`OGXLj{TqwTq}TaWB3u7tzPmFx z6hb(%$q&2xoKubS0mh#5dvTR|E%>~9HOJY+!Mr>U^1Z+8>TPM1>MExu-7WG@79pyL zofM_qjll5k1U8BPs^qXyijJg|l=L!Xfe-%;#j<(V0@YE*s5(8La04_BQGRxnkgVEe ztDP!N?%AA?IGzO=628`(;)G*Cj{@7ERtU}3IhTT8-n+HRbksw<mYX}>9zJ3fea4}S zmn>~O<+ogzOg-ELmJx-dow7OoZQC1V`k!rkqlX{1JzDx~HYt(n58K|d#5~)lP{o*1 zpmfYF5?mojO^6jwvu`PAH*h1ce{-;vg3@^6Z2Z5nO`2@Ts#3G`;tf^)l0DpLwP)bm zLo#I?A!Qy?3D7qlZg(Kj_pzfm?|n}(^I|4L;x^HzG*nFsR9+)SFt^Ef4v9$h-RT8= zG$DF=T{m?hDcrD9FweH*6B5f4vlWNU)|9_RWh7xJLBH0DD^!_aLKN!Z30s;K_J0fc z3dvIb>E$P!MMNqDk`Iw9@>X7jxeqwWfXx<V8!QAfSN`#weq2L_%VCrO{qBl_x5M2Y zBHmN$9c%GKd7<Rl-E^QHFfzqP(#C3kjONKf_rcyMr6a8y!~QYJ96D_--1Gt`b6UR@ zWsXtVtV>TA%I((~Qf)uK`FzPDC(;nsm`cc(VNRBphDj2wZxbe39|-KJ#s>mxjZ7%q zb3~NdmBdIx8>~~%IpWK(eXtch<$K_O>BoTDV2FynNjn~EdlajRsu=Zsq+q{W3aoCE z=c^|_v;q@}7jfXnIrbWXKnyLlDxOYRo<7Eq@cn|p00!%0Ys9`ZHTu>%6PE(qDjwvy zYY`<LW<4jI5nZ5owyzA_XcwiSYYH|BX7@^%=tv%{oVtDpady7U{#y?*HACja+XZuh zV^WeMw^u5cmP8y@RccQMds1QN&Z(NsY;EBOJNV6D&&sqN0LJ6jWa2P2d)_kMs;hLm zq2pL*)2P*Xn%Rhxh!NQ;+UQ--?n7YfTIka~oeF`72w)co@<;WvvJyP(F0(9vEY?{i z!$bXVVdPAvknPje#TmuyRH51FM%5&~Bi!(G!S{`hyN3eKhIBu%R&vT$u%H902YPe{ zTMoUpkGG0msplpG)aY?(1$noH$_s8Fta%%CD929#+8{?rM<j}^BJqn7v_cDC#}5_v zqH0e(w2mp1HMGVx{!0s3+bkj~HUn+v_gvE1{Tr#Z&wU$D<5H?uL12pJdxI9CpsDD3 z*f=Jt=CTB@DiE*-2Uq-Wh`XBuJ!ISCcU!gQTcLX?6_9j>p$efNqRI0ALca3YT{xQm zOElT&iz6XZK&L2F#<uuxwB(?!ts9Gy`ztFHQJh&91W30kVX^A>rZH+=NFTT77Cu6A zXc_;Q_e%LBTCSsmWZ#$!B$7z-8!YP`!9V)R&^HnKY;Op7S?SCFQ9L1)M2;@0gHw@7 zd5N>9BMz!*p&bdypv>TaCb~99T4xCJQ=}3A5G4;ejBSJ9Wb{OE(1co1D^bz}r1)M0 z7D4;xD+rary1+V67u{v^H^&DWHOqf!ZgHNek_py=P8)P()2QSMLWZQX!eC*2_{at$ zSybx`)-x)m$+!FWNi+fE#27B3B#^O4HA&Ts#g1P=p+9t#I81hWn1AaiI^X}%QKtT- zqg+Du{?Sn+`%Slh>nN~FA36&8Jf*;K@C<xG1k|9`QeD=wrX*>OFE6@brDc)M8=|vq z`e(QAeXB~&RI+WCKQFzBH*2d-C3sY_`4y&}_r0wXp10@RD>Jlfpk^`wd38pxgBM!q zr~4kyKOTC>j?Ir>8bAjG;JY$B4#pg}q4=Z-1h)*BFDs!n(d1BoO663t0^VPsT8iF| za9aD+K2y~~fXQjdDUr|UcX(Kn$|Zk*Iu-+Gj&&YqS7}&IK5iSAkEglkNlkIsG|qz; zdY{ea9ZHr{rn7XrD_&vH`3x`?X+B^b#difBSDj2iVW-(Rgza6SGw=fe&17brMKw+1 ze4d^5@JEvRgW+0TNFNAYXSEaOq-=CgraX3|m0UJpPbOttpw@oT+UcAt(FGvexN2Ef z&vKTte0+b-m40)s@&5V@>2O-^x1c&RQRS^=4pFa%+NL*U(~s}zXn!I9+~4xtpN7wE zvqwba!MDxggBQi~VZH~(tuq+GVKF|lvcP$|)eYYStS=0cQ>hn~ld7hz_fW=$0bj^} zrNHmS;-&n6fflEw6~<iYOw!I&Sa`D=fs7R*oE!#LoVUjAw&*!%=-d$1EuC=;ji?W( zLz`zZ)YjOBG?83nl4io%XIQ^2TO#9UGaUbB`q<FGu29z1Dh-tM4{b1EPs7*X72!NE zhWOE6QjQh_Hk}{=0rvhc8OP@%;NK`uE9{$K(XMYizSBD1jP4^V5<&LQh>IbF$u;y2 zB8^xksB5I*s%I+>@aQ)aTyzbx79{Lb@l)~ra(!(o+;|~8cgueMz%}YVeaubJ68tbA z$~s?+d9{;6J5m{c6~kW#&p^G~%_s&}579F|1@dX+Il8IoP>04+IrmMe=AD4IrWqrX zNt_8_=m*!z8{)RU%_KQ+gLkw9yUexxCMH(-l+w*x%DRgv{r;4C%zUvbSq^QibJ)g# z(h_8!z&0%lc`R>$?>41$*FG1ioDy*7_r4QP#6F9lhZMzRJ+=woL9@&NuEI7+$^dnw zkGtw81@U#oWw^ydn%PNBVpcLmb*3(^;I&MQT&5DBE*(1X;ZejcEKtm;Mvh#}(O9l) zY*I9IOmPC%!Gl&2B886<))>4;*Bwg7K2dHf(_;C<&q!RfHer&~X#eJCa;-o;Fo9;z zYS&7qy2E4LKeu29fElw|&wy(&2QU1zQe%X6$|mC(^oA+<jm_j?|Hft*c`Tky|G{Qh zkTsPw81fb^C^9!CPpG9&!ZyAO(z%Jw`nz|ALhGKO4QrCO{!$}tO%OuZRT-9=tNLJ^ z$$4S1KM-dhAxI2qzm8^3EbRoB8Z=9oLb0nOymU*z>_mM@*yl=*w7C5;;?p|t=iDX@ zDU$wZHga=n1A$;FECzPxKe&vn#ed>53<vY3#s`MpHTJlm;SIX0*k`9h_#3gQ7`V;( znN4S}ep-Sm5(3&0EPq#y3ZI-t?!WWsy@6qCz6v6R6czx2Mte~vQ(M*QSAHDJp!b&O zPg)H0G3iWZ$dQYO3Ha9*a?4G%7Q=lPuM@z+<7h7?1c&Dm|6cKrp-Ryn&9Ojf>uYzP z$gs}QmtF<5w6?`h7+PauTr=&JP%4F*uXXlUhDO34ma42Ed*j$BUhM;lb-$<oJ5SZu z^QG=s*^`i*yg5@A?#k`jofc6HqD~l<UQ^b_$`0-qId%BbD68He-EygR<<|P>sd|hk z;C0POc61ixfpv2jbP!-aR70*GV3cj5r&FwFFTdboJ`#vMEhEuiO$g*atW=t<e<eSp znw~xVIjf+JaXtTCK}wPST|w45|HfvP4PIt(e+{1SzfRlK&kVf(`Xy~CI?%b%wOcuS z<cq=kw&-*GI`euPjd<@{Q)l@CUIh~QK&diONg;2lIL4+B_X7wOC>`zZ0uve7Ofv<M z#eO7B=P#pGrJ!t$Ej8v+!|wu<16{212wjnEyMA2iYW~JfLL5{GXH3{-%Bu5Ge>+l+ z!TYO1#deYdVpEg=%wq)Qqcw24v6G4B{A5wYCmUk#@BihqN`<*tI_2*ht?Hk~m(_G$ zHsMqz#R^N6%&<pcF?h;i$OuD6hcNu@vr_&Zh))X%gMllpyx1tLZRpDZBk<!Nt_A{B zOkabvYF7T6ES`z=^v#IeZ<kf~T1Xh9soYykcBiG>kCQd`k~td!nFln&=JUwob{)85 z@CY|TvWFgGJfRISH+LvDNZ4>8(%uL-Qzo1+Ml4PbS#=}-*B^BdiPm2OG|1){k%d<V z5`o_Kk`cXA4?iVSnmW*}%LR;EeN>nl$W=l;RYa*<iB(c;xVFh})S!)lo9B;E@MgTh z+4q9_+}|^=Y_YClMH5yhD8tCagp6keg$Fp|Ue9B9KqaB#RsJIpq9oOf#(W8!bo$?E z5a8M_a8jtCPJ@2j_|%e+IOwBYTe_}sm?)TjO@Eb^7}){8OUt~E(h{35Q~IM`BUets z{6@b5V+#N*pxg%5#(q?gCu}RG>$3N4i&kmrdaM&GXV2bJv*+$--lcBNk8fUU0(yl$ z`pjFU-MvEXXUM5U{XN*JQ*Ml>DaQit69?`OfUiv(C>gKRDFEuBL|1&RJ+RSfJsIJ9 zkLO|5TdEaN_Fol{UdzX3)-bKEl{_8hQP!qg)4I@-d;-~=t8L-MzdSx&R<|sF)V<%f zX88HlKZ?m<7GJZ=s6t78xj=+t01K;&9~hA^Hk!W?8WJ)>yg2L+3t>rrLN`aKtt86Z zWmNe<l$^YoegPGsbX0hTNB|=WVPW_ib-<aOmJy*(ke`_0cAPJ-2NGZQ`9IkYOt@vo z`p@5^6*H3yXt{dV6VY|hos2Ygegv`pw^@qZ<5D6jUU*ruiUpeWqfQjeIuZ;a#ol;Z zJFOkL`lt+yFKhh9VsWgTKPts69Xxm^s0waW@^FL}1+p#yir*e7ASr0PUC5yvUrIC( z;Frd{CoBYJCT<92VZr^Go&unfMfe{i!bAB-xz--l6Z(ENSv`yQa1;U5IZPqWRz$+Q z@ZFd}p!tgaCqmrqhe^HQ>_mYYI;zOa$_4VO5NzEe2nr}*Qn}xc(tnqSls<pT!@T_8 z<)Pq=5M>!0*E#xv8O)EOY$oF=;m_x!DP|Gc|C=*PjC69sY>!Y-5S;*>JOQEXE>}d> zN=E<Y2NF?Y4w&Yi(x>GL$tm<1n<kYw8~)+{%6bq&{{NBnK+gOhSr4L~9fLt1Sr6B& zqTAD=``#^y&uAMdu2WVn;%<V6arLopL$t*SZW{q)yj0@uoL@T6fFLKXcsxc)yo3b0 z<c40r-VwAFIiC!LX@By8*fM4I9BGa8-NRGmLi<yU6jFh<-Crb=oXVZfrDiL*f1x1l z#Nqj3b?WVpro0Av05CK4DZL*7e~!;O9lf<B@kMdbm-ao6a}je@eJR4Ht?aj^X;exY zlccl9uY8`s7$#eo)#r>{!l7R(Xca5Wb(%=_uc_z8*US@kPMU$jE_pEM_KcOU#66xW z1Ha<sRcQqB)))oKZX%1;4A*jQK}6KP!wy`6Hx&2~wv9C4)#}EGb#_tbdxV+M3fIww znA5vLTgdgg!Z0xM0k&br+7T})t7NhoTB2dQxchIS9f_zu19%;U@ogh_BRf$`R0w)k z!F($@FxAYX-Q2wj8RUyUYVKEC_n!7>qT{&lD4Qj}RQStrDl$QK)ARRt<Sd!Y4aOgb z;GhgJ8j8_3dB@4SRe*uRYz1#GF~4rvHtNzjES73(;^#>FDAUt9Rq&oir>Tu(;U{vB z^5D+*Iv77vosYx;XdH9>`&U?LA`N*Wcfa}9fiSxx9yAnYdMhBSL_xj2G348$7TG%j zovU3&aQ`&KttETL)?z)9VLF+a(-|`<00hpq5jU$paY(L~JZFKY`#Puw)MH48z~#)? zP}!H4iQ}HiwaGZTN@HY!0L{4I;>kdSfwKs6W1^ur^;YX(M2s<A2_LjGmz%C;Wr(^~ zHZ2)0uT{s=a+dmM$iSo-Qks!2xo)4RyV0`Qq5srU5qJAysbHbcjvm={yP#aWp^<?b zBxXH&YCQ^gf>Ip(`5-d5aL*dlLwY`bB?{F!5214eArq~LQXz%%T{hBLZ!1n3&A1ly zI?2Ioq|^5~9R{2*5M=7ZhK&XT1n<g838eMxLjYwft8_AS`>tDQ32>f!=Yz4P`t9Y= zdhjtNsr=G83V4}l@#4w6FgL6hvb`9VT?DVZI0U3~dGT3AUr@EHl^x#KX>2!YK6*w| zsPJw!7K%K2BF<)ec2LOQn^+(Ms9fjpP;detSE3*itA|h|dJ76fNs{dsCm|hPJen{O z4_dCk&*aAsvb<gN7F+HC&v!bti?*L9Qtr!j+n38ebGP4kzwf+y7=(uzuV2+s7C9ZZ zJC|-)r8~7~K3A;T0B{b=WnU{c&vZ5x8QkxK*IV91I(^)hzg(oH>uh}1N?g&oDXU~- zE#F*tGQD3>EmuN<QOts=5}Fe8)HJ%m(}YqWM1bkjXOZ_;7Da}1Fms{DK6`R&cXQFb z*sQOgST|O)+{n~()^x!*^L`ic<IKC$f}7L-VFT;O)uxbz05hi_{)AQ(0OBP7`$E8v zi&7pE{3MGX&snz-#Azr;;`g241XL>dVAc}U-wP>yvHvVs$P)77D*JoE4y9ri!ZYj% zf2AQAX0#|{@gTF(NIs`PT%^cQK4n=!Fz81l&cT|2I+i0N9U$QRGWO}l=M4kQFMo=) zi`|yhd{~9luT0(*D?Y!rG!N_>6`Y<HO7BRPA;BPHG;$-Cu>`B>tOmWcgp%C3@eJ#T zpbO=Xosm46<qkiLKLZD`4K+Ra^F3vF17vZ7g(FD00*Vxm*Q7d*U>etZ{PN`$QO2X1 z9P+U7dh<xrtC2nx2Ri(OGJobsm;uj27Re?3A@QZ)OUj)T6rw_dnnRggeD9e#_JdsZ zd-So)(KtS;a0TUe+fRq$&8DoTI-PUa<M9UWhh-7kwpjQ$0Rtqdijh2)@1wZ2^9-zW zNoT7`<=!qeZ%OUyU`ut`uEpY29Zt+)z#crEuk$eYmYsH6GjnL3E)(vT)f?o9ok?&J z(a8At8J``0OlFqM=ZK&m5Lt#phzKP#mVvYz8<#iB&*XNyj549rvjgns7rEA3(2HcX z3=Jk8%XyMdsY}^zA}j+v^X76C!>O4p#zlhGQGC9#T<NR(2J9o|mlde92usc}Q`=!F z_?*!5V<Yu#Oslz3qRaJ$A4IM>Fk@RW22O!ouHyEmY&b$|A5nddBR$3DXrf7bfT6LF z5sST!k&22DTRatqpTnEj{5krj+N33@|FG>~|DcuHKqeWpvnb+kzdeyJAKBsY!n3uk za#@Aha@hzTHwfe$d*EMfIO%)rS4r-yE2+;dJ=wo;d)q&kyGN6Ou&{Sr3w~Gs%i~xF zv<f!&?E9h#wtFIJ-ZIJF*`dReS$So@j+#~Z($mFuUd;oVOp0my%&uX<Lz|*4O6~$$ zIxB6%^`m-(zt%*Fq?tqrW_{AfD07`~8EP4|ngW{J4n-$(Y^s+Q0dUz4*05=(*Y5c8 zU*z@VqH#NGkVWS<J?#k-9^zaVC3yT)?E-TtiKHnXt+%mH{S$dw)Y`lMs^ot5PToe8 zxS0f{@Rf7^4*872ngMcTd1^VycNXM$5+~@O<H<JU$w48ybR9aps%{U1&U7QG40^fs zWZv{0(J%Z^Cc_<cuP3@QnrDuQ14~Pi*-Uh^KT7-Ua?HmqR7&9KVxvIvh4PBQZ0LS& zdh-<mPjo%IwWM<rDqlm>+)18%(_C&t#h&k>`L^ARx`dnxEskhtra87H?Pc+XfQRu) z7;ALP%SemJ$QB%RPOGN`<Zx|b$feVvxiuqN5P;3Dqq?j}_-iHzfzCb<9@G^{V$G6i z+;p+w!;{z<lGkN+$xhsT1?`DOEbqd2Y&iFtD{W8;bkW0+B15HpO>=kO`L35fJw$r` z@Xp7`&O{ql!!}gQCXDV8m)%{l=FJE2mJI6|IM{fKY2P80D6US?#M>7&59B3735z6? z*hcl@sPDTq`KsTi>so9reVRZp8+Jn;^*XO|hl^jo5#{B_an7<MVZ`FWt}|N;yHx6y zO;IM?yy_^Lx)WI3?k48JQn$46g~Xv}-}Nfhc67~Nz}1vD^nC0~aua7}Ap4=3qr=^( zy(jkKMzUVe$(~rdIuMiyR4SWXZo@A^%X2!9{-0xs_YkdDxohhWvDcX(F1v@f$e%YO zXWd241`MR_Td%tEqqx7d-(EPLj>i;6Bf$K!@gVG#h-opzn6=RjTbYfXokH`9%uITu z%*cU#$miJHynXcPF5k=<9ErE!ma<f&RWIMz)o%BwYwKARtB@&dUEU!<3w(7Pu2;96 zn^Ae|eIP6as2}Lt_}_na%1BLxtb>3ZeX#~6Scv;l|Fm_cLFj1X*3TyGzgD}w!$r6P z)6X~uks&UoAKqw>B_1ia_P)~Pc;TaUG%I)a;fm%VVdn)wZyyI4FF6QQCR%K0*By0; zt^9dvPrrz}^6htL-<CQ4cTx(iLhXOYIQD>Le#AKPcK(ksjtze3{{J-gN_eLK1f@** z7yZ-M&o;ntJ)HAonEuNJ^C!k}8`|e@6U-<9$xk!k=8KL`nOb|~|JN-&5Z(QxSy@T8 z$$;pG3FaKy+?S80!cyqtr|Z=ZQeml{*X9LCfBH2~(I%k$snecFk+s-GqVeui%Uuss zmewhg?B3H8D8!cN5B=>fzv$a2LwSBW<=_JILsL^<&p)1+x}(p}z8{8|nH9S7jSA56 zWwQmGO+OYayehkCfBw9eumulQu6V026CtK&mz{`vwfzr+-SA3(b@qxMExk?M#A@u- zA~xXW!k0W3RQKUQ?>+zi!{Wimy9PS)A<|)V1=pD=Wz9?iz)na8)`tbGFnf@v9)Wm! zm>jc=yH2rXL>#u-L(ZB0Hq8XHXYb=mjNtDOvVr1Md+vfgiMaGoLsweshWR|;(3?Z> z)XB*@LXO}3AN3>TywHEAsF3bW2Oc*=y_#bUZ49;Err5;gWhGoN3$ACBQ)KlF5w0oM z3`&mqn+wied+EfeCf9DyRwCrkl2#HWi?Pxr|4vcqrvH<oLO8%@r?^<x>CayUAFj|n z%tv-Or+;|wt~*`%v+OSGk7q{ufA!3edj0XtJjpxYLveJZNexE+9r*a|9EtCm^|yHR zR6DWk(9?tLNHc@2-QZXGRr&A0$CX{VJLyX;?r5lQoH!Q8-q@bThDE^z68;_+Ri+m* z+7T$du@|~&uhhNu9HrQQ5>k5QS3W#59=V5(d09>pLC0a!$UTQ~&|_%wf(JhTZt21G zneU?vgJYQ`#LbI<|E(QWDDZ|R;6~tfB}-G<4GM`If9*BE!Ysp(LpB5<iK(9!Pj=is zCU%r3t*Z;2(^K!0?xy(h-WmaoMh<~vdRl%-u4l_5Ajdyu%???vo9nf3<~ZpwKCt{K zvRk&^anZ<nR<U^Am|~iEu{nq*>-dC04qAZu<;&cvxH*<AQGW?$Dkf%SMKXS#3%kz6 zq4z%fzfw`^uF?NT>r97X`=3x0_IjsaNj|K?wX>fr32v#6%6C401w4X)!0?vs{-<pQ zP5pne%`EZ2c!_?Yr@aZx{pjqc?*;$v?3D=q?(9<ye|Pp2ADz8j=YQm&EZ3W|%=Z3_ z6pNhx`JcUgK;XZ6`~N)%CBP0rz8OuBbo%n{P&ZR0>OEeWCcp>QC~EDi-RfdGn3^_( zGSg}i@|G`(LEdy<dc$L$(Zk?6H29hd7X=|`pa}+mC9MZ)$CLD<a{~5k`_JeTV<J49 z7Gtst8VQA(B4X?Svq5yhy;(wEw_uR}Xzzt%CRyT!3Yddxn2VrQokLOx)v?)xFWR({ zlms4O!AJ5*N$G-qXX?b^3+fwB**8{+DkTZSM^Xilx7brm3mfjukgh-wv!fAxl#p@m zH24hRyu@zKAM#I&&CpJ7Pu`5*ym#GDXgSsYF#?4t!agKLK7uyoXDya+9N1lDs0AQv zcXG=$LeOne&@CDtzn$OlzRLHLhzq18hwt#&s4<TitwRGt-pBZjk3f_A3}l<ll{d{H zuSMI96<w_b-q4Zl9J1AMiJc#jq=Vo$t8yq%msTKV<eXCc_{F{-1VRh8uTMAJ%qi#+ z75N*)k_#lyu`zy-xPE~YG=w+}xDZr`8rdX7Od4wHIoMHG{;sbc-x%I%S7#XoYE)ql zMiZD2aesRcek3E&lOxO;5HwLb!sYxed0$Z6`IV%>Mig>pOJ3P0Bn}4-84Y$$9zNk8 z`rnfurKy?@hrOtps1Vy~YyuTif{4HI;oKbl>I?-VrQ4EVnX$C`d|68*J0o307^+1+ zzA}?$(r1ejh&i;2<^1ZuS>-%&G0}Q|cz+nF+rDYJIe$?vS~}lyq-O>g4cEPSeYRb7 zA0kpgyF04f`q@lX7#)EC$g@48@JgbRvj(l+j6Em%9?FgBpwK4+E#-KH#{X6G=mP7e ztiZFSoJvw&$tOjrnzoC9eRDA$gm@<4TB!k|wEQz3M=j3~>a}*7#Hr=`<8y=OXXSF% zw^kVkAx<<U`Xs8;I=yB?g_Y&6QFXQX2HnUSc1AyK2g7c-rXrMGFmc=DA)U2~m@b+= zyR$cco;N1mx5}9kme3F@g+Am_oiCWx@%FfhECCL1V83|3aVeKs)X}?v0WKig*9%(s z=2syDV`0RVZ{b3R9E!rnMi>nb3K}awKx7a}(R&hr{G?G*xuMbJEJ}%?lz4j?KCmcw zRU34wkCU*?e;z4RC)N(LnhV4(;+JPB?f(eNtOLJVkx_7mWNrtsZl$e>mm;{dbQhrx zRd1uuWMC1MZ8|}SLZchBN)Z1sr*R6zkd<g18n+$7Fj&Azo>YE^57+$rPhfkcm^+UC zv#&w$X8NFM$9rP?V7RDe9s`tFNit=pe62_#%yAb0-BD>O-gXySDdV#wQuJ~0t0Y<n z|2Pb}Hh8(H4&0T^8q*?-FPn05yG9gU5~8JXM(6L@Ms@=f1W%Su*K@D5{|d|>v40$f zK6r?D-a!c{3WZBrfbs51jm>?Uw-%vNg)@gX#McK7=DU*yKD6NEd`zCUUe2dn78){! zbVo8q38cNl*)><YH&@Miurl#O{`yu+LjDjd7{+ISd4*<W=e^nu62hHKf8|~aPb?@x z`k6l3$ngqR(eJptpp(6h$)~xc8C!Z3L_i{yvPS}}JQq$Zltb0&A<aHUR_t{CwCA~c z@WFCBv+?F_*n$g7Tsd&jI)gt~(GOPHFF61r&v-(3oLL!Z!5(PV5$YVChFJvusjtc& z^O+1EBLslG>1!}*NYY8*>DhcJnlFj&5=n(;WATfjqh5J@<cv^-CM`ce!sH|%3CAjE z4lIXjuh_1W>KS=n^ujZtWO!Cwjr)bu`2l9ovm~_-smF~Klb+|O1A_gkEFc!F8@HH5 zd3mZDfEeCI`Dk#GY&NQP0uipGw%*k)Hy<W{9~{qZ0Vh%{ZRYmQOMKDo*O(+HwZMNT z5@noX>o1j+bkvxSJ8BU}Ggz_w#ZQ!M5S?=HZcFo9+3yhgu-DczaM*`{$N}7o@EE9C zwGODTpG$O*k`#wDp8}PCY%DXDKlXqYNNwpIb4quqmN)_+L?V%H7^|%fMfAP3is3DC za<i!J4x7P*py<XDssaWT%0NU<C+!|924UaBCfyhnLGm1HT7AV0usr>w>Xxbq1T{ZB zjryIhHHgxi`o1ik=tS=hL-fX|y40C;vK4t-2mpqzkc*>$_C!ZD)x{|t6sX^*iB(Bm zuth@*G0e2DO&}I`4x<ySmaUS5pEoXW-z}QI`s7epJ}`6Xiimn@Ys?nkH&4YFxOAs| z$;P;}vd6e-K0`_Z*G`#nBR&2Sp^#W{gIW+UB%dS<e#TfqjprXfSAYS;b*LRPl~SZ6 z^U7D}rxr8B8m-5)gh6DXa>|mLWkgG6NQGrtX;ijDJGz=0x2&y%Zk*xNnO_Qqo=I&B zZrO<xYiX@!Fi7Q0rR2bhl@?U6vaOYha=^0Tw-lyQV1(WpO2yd(wwHRF5b2um!T|MV zorrqVz|lUqE*44A-cMyjLnmg=Ia8nJR$ZW|tiAmNOi>Ml=GPu9ZvnF8!`4kFBrvqk zBuxb_NhLm7yC~_W2)S1Ts`2{he+zs^ifl;ebP7K`NnQWOhn59W#kJH7Os7)-5z`tu z97vtq$)B9bp((0Z1>On4Tw*xM=<M~;r!4U?CQ{=4B0=G;ZRFpxueurAT%&$&LiT)R z>x}hElWRh4cA*rtrMju;1ZjxzNkFC13)}y(Uq!Yg+c#c#0j3Y8Gg)_}r1Oq&acTw8 zUeghP;T(MqPYQTco+1&~TxzH!{2?xRayDlgqre;mz{^`mS$Qfd-Tx*YY<$cfG<Htk zIEQFg9}$n@X3_0D4nJMS8VJG`cwc0?JdR$1Up30*Nde6bzQiYizc~t>p=XeYCN66d zI#)U(ztFP=U4eWZG@n9#bn&8*%NI?F7oQv$<ci&(H;J{_P#=_7UQ+{YI@R2e(idRi zb7QX0>4wDBVso-kRHWpt{e(tc83_7>=OWt{WU)v;<5f|Mia=AP*D=KjF<=AKu+P^{ zl#%wLWRa*>JHF&~V=oie39}I?!WR%i;m{(8;lQ&QJcTO*qvdKGmSV}<%Q(^}i_7LZ zq9D{`#RV2?Pz&lX=Ebc2Fdf<!)NV&YM53q^7TrBUx07<LdxK&FQe^0DOsI3EG1`ik z-WY66__}xTEp}gA&Myhbm!}nmx~f&~U`i2!uSXZb2jQU+$Sc`AbKn8$+=a5g7IXdN z7jUbliu>VruiQD=W((5+vN+FcQjc$;0F^w!iERBS8N+%5NfSY^>m`yAk*uHR?bweg z;pBo(W8Bweo5N)I>uEg-D&{#~PKhjYDlp`gLWon^zr<sg%uNM;1U7uH$+v&N78i## z4v%Gau>y1Y`J5L`na;u)JHzP^SL`UuH(ud1A-W6g-pQc@(%PpwIcb-Sc!*4;a7f@Z znM4S<Oed$-Fb%vSraO&$$`=#i{fJM8VoUc>zJTL;LM6MOXhC7ce$VHzFok#>wSIq^ zxK4>2bO1fJGb>$DHJ7p3geJPAmYzn-1{Tq)ZXu&?f@DTo1r*E_z|Ix$)vPu>AYas) zGprrQWzJo<@4{l^MAQf>%vT|E<f^$;f9Tg@JQZ7<@ir+nO=?9YyvH8pi3LhnCYt>m zB0FV2TLpJI8;Rp<X9dNLT165QhM^(@ZN%t}pDdN6T+(Z{;nd}zMhVwMvH{g{pMes> zGGjd}(RiccAUkBG4T&`^Da7l7PP91(N)Ua<j<v+6g-9K!cIB@khz>g*ViE5;dI=m1 zw>hS+mw<fyMw}1BVZ<1l>Zq6s0jgQw&SvchQm~>a>t3v5FSvA<ukcS3{jUf1?{log zG*c}YDY-1Tsi(LGi)Go#him&1RuUecg_dWW^`&l_S!0J83#XI6R%qoG*?o_re8!s0 z{$(l=?o#f7?_t8Ss-=}|MI-M`lU(yo`79SBzU&kKN<p{Yz2bwQX{?>^+esKy9h#R= zaS`FP>j40SKZFkDI!`#>=+z4xp5^=O7XVo^5k4BB&$;fa5h*Fqmcu##0u+&8m60yW z>)SRHb02~}((71F<{U;cWfWDDE%aRylmN;>b`96W1EP@cr}$Qfs-J>R6D$>JbQ9Fn zZj@&6!#B`VmVz0EQJ7FdPv!s`T^{!mjts_W;NR^YawEV#<DD8=dET4bA<8fq>OhHP z;pZpo*Mn?=y?3dN)7OW!pgVd2mn6$Mh?78<#1y9_ECx4o2_Bn(pO{z@|DalrIFxVE zFssLJwP*mZNt_vvxA~cDUYYNlpGroi)RH_iZcu!$@_E!RIrjHd42-XTAEyY5i}GCl zckrxZOtHDwHuX^7&B3`!`JIvbkNzr)rP>rGd+Ej6!ynKFY2s>Ej*!FXpA$apB2s@L zwsVnF0yFym#ENW8{uL`S%0(|JTcskZVt1|U!c&!$dkio3@39!dk2oQFE@=pGiH{O4 zS-k(RqcMJsQPuM*;}z#xtkBRrgrMvYSEp`HPKEHl_kSFzIDMJjvK;)AE3(58VFw?s z_#2dXki$4OpX%8m{)5(%<^4fxcXReA=CX@&(GhST5<BeRV2Zqa7l!IGC?U{d84aDx zQWk9Lf!=s+8;3tDCLTAc+Olemv;1Zz{*IshV)=Qp12iQ9LA}WghUf#Cp!o-x_%ka5 zK@0USs+aK$+_U0+<~jfQn1J9MIDLBY0rqPG934r?xsF`cgmal?j`RBW0o<wPKPM<i zrD7f+zfVx+rPT8O8JiJu?XJ{~BQS2aE}7My<wNOP6HOgjVyzNWc^L#Nbln(LY0F_I zZ{w}*x;q<ApdN3@L9Y0&Gq|<yDSG?T;5$*n#ZrD^syqhOh*m01YHcDq6I1sku=eu2 z9f2J{8%R2{x^0|j4J8y53*2066rGv`J`3hWBs{kOKf);6$@PGp+_b7sXvf0}RKVuH zDfk_(13zQ~0jZFvg@VIe@8x51#-?BHr7mjGTYQO9Fx92|#%t|QdCn2riHyE!LB9Xs zBeJ|+|L_sT{$CKCq4m_WdIwvn<-|U6NA&eW{5Ii#;}J>9md;sK2Vk&-=9m?|T@6W+ zb&;g;tUnk&0Ne~5@7}}MNG8+NKX}CF4?MyiU1_r_i%-d{hEYE8tHiw$V@O36D#kgl ziK-#qkavGXzQlZ{!EG&vx;il)hdDE|CJ3EbX8z~vAum0f*iXI4-F?WyOJ@>p{6YwL ztZSdtuCk|)hoJSCF+h!xfAofSC@a=fY)BCsB{;d0VJWoJq!{!%z5UV9X2kJOPTM`Z z#R8->A4BJ24GTxXGIaR}#;z{54Zb9u4q(*zu%!mvw7R!CY?!ZSZUWA+*Eb%$F3u~~ zOYhIM$`_XV*PrhZ5hoK?)fd*~qKGwJ7Ax*2Cvi+=&N@7nPqejfweH7jN8fZho$NQ; zF7TXB&o3rd4$Dm{H+U>RYbLI|>J%0_JtqQcZ_e|b?Hg21o$GSW%lji3NUmKZEQ9BC zatEu_VP6CLygJf@L0tIID5-vDvl3(rW%*I!35L)TW3B?|CJ`aL`;ZQXW5tK_w($fo zOU2ESSz0HvwXw`!fmZ6{vG5Bh66#r3=1x}vvbE4nM7&7LgiOzqel8xHRaL?tTyaCr zaq~2b$7G~G70R^;%U{9`FVDH3Lc4=_g#_LGpY27U*53gvbXOfB?;z&b=!#y60l~rU zt7Pm~E~IAvfW^n=^`i`0A+J5PdLp&D;E#93o0p*e_jf<ckCdJUJb&1DOeJ==UjG+X z>_PDtR{R`=&TRYqKDn_--x#Uob786newuvlzFIFV(NJcDH#t<3ZWPy$OnGXP$v`b4 zfQ%A07Z;DbuXM5fZf=|1UfLc9$>0er9+N`{lZETbH4X#hw+U=F0gT}5Kr9;NBW1AH z^m=e=x3Q%Ye(Hzwf$-G0PL6K83riBlS@R;|QHYT;X84B1Ls3Xk))~>HoUwZssJm`w z#6Z%glA&UwtAf@M+UuWS!>Bq#4x5AqqmL@g2|bAKNp*d0RR9<61^eMyF+QG1mEF6W z3q|}$Ccz~prZHUM2Y(tPvH5-^8e`M7!aSXKO~(fm)r{2?9)w1y^w5sqLqkjQiF!5E zZ5bKZ;7$ZG!3}8_1VljdZHArQlWuSl6_P$&oIQfPb@OeP@4XOu)mF?-H^(+4A|xVQ zB8&rbXn{W&ua6CGeuTR>%nZ>d)RNa@cq@q~5FIM$NL|*5P&P_j{b7Z9p2yywA4z1x zrH`NT%utLnttPQ5$lv{<MW7(ON7(+WYio<^a_?k3T!ji)1sM|V#<!WnA>}Ys%wa17 z6p;WwnI2>1Esb3?W~+RVCN$JoAXdmUQvT2{20&!P#K8Kw{r?YhZy6g`x2D^gnPZ5V znVC6eW@ct)W{jC3rkG-8X6BfgneCYQR`Pwld+&X^Zy%j29o>H=Rh3F>NwqY`JDz9G zyU|)oC*VX19Jo3V<C$P#g9Rb!3=)b(YBNJnJc0ybJak<j`<IB(c(5q8rK|4gr(VK? zphPg(s?wLl2uKA6*A@mD7F1)OfUMYxlybtvQ6z*&P%)S|T3{s+p@_TV&98I7oQcFp z3#K&!8vzr0X!>B(nZyX_E`9j2+cn_nS(@{rNKHvU;MWeImb<r|``8yL+K?0J!0CqK zxPfW<l4xkb`CMEhXaugA<7jT%6BPA@k(%_zTY!tjZS~B?!~?MKYRo38LrlI4kd6U4 z;x_7&*+)r$jVmb*gnaj3U#W6Annn%9g55w#2}mg1@7+XbL1$>1+-Og5G}y(yGm)<Y zKLyLMixZZn7^6_bavFS2%1to{p!$kU30o57(VSSWxm{V8Ws3j##yyT!0X9u$1tHc` zu^O$j|C5bnfYkQ5=>iOkQE>iMB%2_bU<D&H8okRty`zQK&ONEHuYtpsSdCh=pJq?i z+Rq?~M+i1Ag~Bf*&pneJI+ab_oGx&5y)cp;N^N$rD-VQz^`~MVO`O)N_*<n0W!u#@ zej1Ng2CK6=`nP9e)wIMOF>;0Ct)H?6lRh4Q;BLf7V6uLFT#=?K2>e#$M4uT~|0s5p zN0ILdyqI2`w+p^f3Noam%IQ{?dZYU6h%0RnMN{SLfZ~U{L<=S?@ifTFqPktZzm<n0 zO%hV~iST>|mK?^RXFQu316*qGMK$br`$ZL_>m5GT@JQT}L;Is^s6{>okD7f}MfH&0 z!w;-jDcNclMh6??nnvmN*j;SXr|2ZR5K^~EZ}V|oPnTP;*r&@EM^6Y&Y6~2D&l6qs z^|?s)b-0iT<VTu3BOykZ09lqWp5ToW$42s-zRacNNB~>}s^oz0{NRDEM@&_Z15gI* zKF6+KeSl&TMNA-2H)Z};V0)G;6AP^(v?c5b$h@f8Fe$WiY?o(0?*_JZZT1H^e7>Jk zZw;p_hOd);L0H>37Xk2yu;UY^P3FwaMdnFzRMFIRkW5PI$+ji(>~Qj%&m8raSRU+R z2C4{Z{4Dj`mS;hms`jO&gmwj;p*(Nqs<}Rmad!4QL+dc!dzlOB%fNY>$B5?v&qg&c z1m0%%&AE(lVuvDMpA?ScDas6aXYQ_Rh*GNGJy^NDbGS;&m+6SZw9#v3s4V-Y1_)zl zb9zD^7}9?vTfc<enMmQaVD?AScF_t8SZGwxfEdz(STriT0xK3FL>A2V!dgnEsT$(x zhqarE2I6G2bSI-c-P1rIs*sF2+Y1y0DUOO`A|;eZqD?L@UG-S;o=SQw;==xTm}oqb z&5C>|wTKLdzor5&h=$b0*-`%mQaN39{iUMc)?P<gR60H_SNZJ01`}FR(%6Iu$%-hv zMPV62Je}((#LT@%y5E#kHNZZ}$`oNZZp2UpYiG3%h(}tg<n06a{3D9>>&hd!23pth zae0<p%*%31oj>ojA9&jZOWMiFcX{_DCQ8YI5?X$YFb31JP22I(mf65b$MRfV*p_gL zKxxKwLnb<e04zkh2^7SnOnN<f@j!N%jiol5;<OC8Udx=tNZh7`9N{3tH7d+S$WJ!y zJ=k<>efHigBm}g5jh%ppSshMR1mvU6XC;lgiW)Qb%p8^>_<GFya{blJ0<<4Ch8}SY zUb9dd&{10W?%xNYSIF`N`#t!lP57QGZ^pvfbbkbIOS51IT^ag|!3p#U|12K1vLRG& zh6M#O3sZub_eOnx(EFIlk*2{xzujD!6RIhlKag5GpdL7DpGfuczU#n!9Ul`4?F`ey zHYAgfjrzKF5Y93R%C!qBf-SDg#pEda%W9k)l-6`jB~Hpnx9T-bO^4xOZK`u+S5#x( z@)a*>*ovaAx>if86RjET=(%Jjv3k(6^a&)Rt~=RwGtm}OwqzB<ee!X*vNcmPc5SOB z<Bg<ZxxldAk>4Qc1zF+3fmb*Bx+mi;+=7{_Ko}N^EJ*QQ0kiN|qMTIOD=ihT;iZ`Q zjaSXe>$l+?n1&~=uE8Ozn|57=m8?l*cNH5{K3v-U8+u<ouB>y*6}<VG!wI@|WTo$_ zK%+E61B6$ttKqGiI<|B<YJ<zHzNf85UD34<yJ!V=Z$gY*$tn#~iO4O33YK(cm!8Vq z=PvDux*}E4bNhGX6MGhBZELYz&~kMc1t!hMIC-8QrZj%w+-(^Xa~kBp@luXt8V(<` zd+&V)Q}=boijzc;SHxpoZ#E`N_-otEeqJ#Xu?70<*xm-r<joPD>HGK#%!R{BXYVY_ z9l^DSECW)J&&wI@9N$`P<FKT}?;ncV)?UjS?o?w9fmR*)L~i`>z@$Dr>Nx8HpDfoH z)<tHsyi)L+$DY>G2t}dc>>vU$h6-wIauIp;yEsDIfq90Rhtz^fn(twf#bz7x?xuOI zS*E<z*C02rq_I{;wE7V1=N$vdUY(*(l<l$`z4(iwkB~fY^gwW1l0q+l`*d0OvGlrZ z8+Qf^>-l{@F7dlQ<g`w|>J|i5e|*OTKkqrP$A%wUU+MNzMp7vibp3!D`q2}Yj;WxY z1SUrSeO=yc9kV`ia6%#7Y@J{BpeDA-`^K+I!%hJELST*{&H>%^g!gzc${euS4xPU0 zr_aK&6k2(@UdIgo<~4o3<9EmQRB>7%Tjt|X)WCJltS)KiqLs11Y2~)EY0(;vp#EeZ zBS_IDfKEjP86{H;{*?AvC+dSYu4{~c{nhAdTkq1Am1&=Tnjed+Hpp8Pb#x!+b7Gvq zRm~b2p3c|k#(O;J07#rq+H4YZlo3lA)n)kB)>~7+Pz3yTDfS8|-RZL|J|Afw1fZY7 zwJo;F4`k5>AOoyTV37oRnAv$a#`IpRVTy`7@Ox=CZ_7<`pT1$v-yrWi*?_mp7y*;t zh^bG2O~as(Q))dDl960u(>Uhac97IUE+%(b6L-jbE_2s_pzZ;^-bv$^byf%l&X4LR zF1+mvXDZI&4G&iE0_=VHjZI?`%sZlY$!yUBD+%{8!ryh~{7pkD1-e{OGR7bJhY~%{ zFzYDQ3|X<mBOr}ET>$FGW_B|;la9+?bwPWj5d`yIh}N$8b>vftNj}|<3Mgh}N!h3~ zDhXr-*5J`o(s2d45tr*UD0kcrqvb#(w6IOuk@P!<46*EhvFI%R+x6iW=_{r}OsScZ z&kmT*-u!H7(0vgH{Sc0x#`2}W&m;&GXzvNA(p1*CmeQZpPZ`E-!=oiu{ZMP6B&qrx zS-O^#q3!KyR#>pIC{W;ZYrcDiN`68JIZq~$AV8w=u;rb)`>YYHWDF7OWzlBTw?JfN z)PHqsERi)Ol4^CE`!!yw?-lG$wX`|CZ#$#WGC1eL&rw-${az_uxX9KEbr82?^^@2- zSD8q^=wlb@HG*v$XLX9xR^A&4%*f|bCo+c*r2qksyMu!mcpAyVa1i83ouOMcDdW!1 z8BWze<<hbyFrlF=AgrpT%IVB6w)^^tax87Tn+c{IQRJKG8?4)+gh0Zx_BbSw7c^!N z?S*EXf?ZWX+&=Z=cse<RRd5Ac@Q&B<FHg`^{j9EPJi?L*D_ofY{=JYQM_+w;kF+<P zZ+l#-st_T97Vg$Xn%>G6Lr1G!DsN)WU)*@9qg%PK5VUmo1)LKF%9UW<h06-HfC-wC zeb&UR+sLO6r)G2b<T}fgx?Bj}n=Zzg;IZk_@Rx0bjX)2T9@Z_bwGOg<KWdp>M&hBB z0P*%immmhw81vZAobR*|@w@k#%GH|&Tb^4GOZq7^8#lEN{P8H^d*jhzF^R+|pXCHZ zB!dBGuxr+$O}Jw7E77#u%MF93PN2ZR!<GSS#x*mzz=Kn_1sT`%3rFo!oDh09Uz2WS zu9kr08;G*Yv=C>d(klstK?)*&`6ZR$9D`7ppd)-6L*0=XzNvZc<xDKju5XiWuK1LK z4>Ys}w>HoV69@gOi@1%J5)YMp-rsH=0mS%{PdvmE?f@J>K<j6Ljoq2DYZeKbDnf!S znz(NFah>xq8+_hG%t1fR{zdf5-~fpT4xF)7?l{5@R;cBEwt+}}SXV!5&Yc$&#t-KV z0g5j}J1W4`ZycON1{zi+7o`^wpTGjUGeu#9Z?$lOA4K&h1^wk_PzXwux9xk6fimwk zz9@&<%U|lS4?8QQQ6RwCsbSE2J*Fr0G(>hcfCctx$v)$xOU8o`r^{I9n=@2PG)Kem zShWj<(yB^hp#9&&jwH#%Izpm}!ROmc(G&ly5o9Q<I(4AtGloq}JZlahU7ox;&K-RP zx4UgrJYq<dxgTtS&4tP~TWn&(5D3NCoh_ovU(=i^?Kwl&mL!ZDQ==rM0_3uFh+ySk zbBSSjtG=TyA@!eQIN5enCaf+lGb!eVik)dNTN_|f%8xMlYlqRMK?A~lz&A<C4uq8Y zP4`x~o-84GgMm%KCb`BIEmuv#mEhwQb?jB&wU-`6eK6;&d$<A)u=kKYjWUfU4`$Wy zk(QXK=SuF1j)I&R;$4uGsWzX|6fYO|^57Xu&4HLEHue>KL$wZ}M`n%D+*0JIOK$*~ z_?$=4o-ZRWB5yS=Js_p?6s5iLt=VTJPEQ@@QQ-`IH%FC$oc&fGr88hcSD8|w*0<Wp zF7@<WRu(rXsya~da_(Za;NE8#|NMFS!v<mX9@5=%$&$l*RS%udd+FX8<1_CIll7SR zw_PR5gbT1@#(n-y%djRRMNt{zPPW9+lHB6swJ|ah+IQquipUb(ZkGd#BliH;AKebg zDwDKJ`|U1hmAc!0H5vo9?al8kj#%?3kQv3C9N%)ACY;u49xCX3&#)`oe?rgMH`m2Z zI43h@-`M0aXaB%C=amujg6t0GYm5sv#EG=C1-s4mHZ0aE0oO|*;?@zbDK%80i|MF4 zu4~ywRH}0TkOVVl@<IToQ^fvv>Xh<0(oIkf1OQ4P181<pAKu9h>RUK+MS?;eMzcY5 zPj{yl+N7)M+p*w-Q8D4X-vamOFNO}q!ln+TAx1yAp0_r_SfiV$<g=~NHp{WK-~O~_ zYikibRP`j9$Ml2_bdskASIh&!%;mdx(4J~A5GLK>gC?E%8Cq6@=&RK;@FVm!`5EgM z=68*N`(+{9!J3U=exJRG-w;8lM~QhJAZZ#FzB`M9J_URGRG`SFpvpR0lz5PP1%2^O z3u7ScA}@e=5}Z{lNlM8KiZQgI(LAOx9G2)vzYvPWc)>PvQ-{{ZXY%Qb35pIT$sQKT zPM*9gw4!MKw_^vjlWnN;0UqQ99YpE@*I!W<@>qwZt293rxJCmVy3wNzCko*(B~(dQ zO3gy)gP)t8&l)=G8i;;WLS%#qXQY4NP+<udDkV(^WU4^79pg5u`z@EA2=(Rit)=8g zgA}KoQ)a?7iffoaAz49*r^%kbN?=CxzT;Hc*T|O}=itNJ(z4xSo+u(EFZrFk+&kv$ zoev_Kvv-R4l$^UIs7&Y_E)Y4ue9dQEZ@le)8F(Ahd4N(rXO+h!Eh&Vd0MBPT*2eKN z8=V||+H20q=7wGR^r2QwjlncOAAraS#zYx;hkEMZaON`>-1O-oc9&gIt4>z5CLG5E zHgQ;er9g*gz$v1cF+5^u%-+lCgdT2HGzlK~Cpz6Ct4y?D%>!@U+G@l|qNio|0c9=B z`l3id@lr?V*|&R%lFz<kp_hM%C2@ZiKrHAGQ{m_!;x&z$L{1K8er{aAraPFvH~XjH z5?7)<*j`Oa5Jd-x)hmZC`kfWZhXQKWnxvV}`uShkA3uXURPT?okRbd)mZ>m)donyV zp5fhj<$p#NS7+0IK^9C%ShYXM(s~;PfqeM(CH3j3ZIT}U!m|`5lzCbkswWB<j}ZtS zQ7|W;03}2p8*Ao@f;&sG<e=cH>*G1~-Pka1`|6`Yh8Fwrq*~~cn|i#V>xM?iKbR$K zogI-6&+Olz<&d`B*?ES4q>3>IuHM-}O_1)ZN5?NCU6-CUC;pccaf;C&2cl%C{Z<q| zs$>3w7W4Z*(4t9k2clT#o=moxNCtqG5e)Yqk4LsWwvs%*1Sd|e6YKF}Bd3471}p4~ zeMug=b7vfcJiR6^nmE$L(xhX+OtOp}r2x<I*3|5=Q`kcG;umt;jGAA6`0}n?(zf`- z%BSmgco#Xd?mW5S@-R%U03_M6e6iWcCB5YTKGtLh*@nj^hIEp<S#}&#g5Ch)o<Y`B zZ)bfmB)2ShJ7A7!S&aPS!fx=FT6JC6k#sgI5>!i)X#!dmzl?4bKXWZtNzwrpPmGEK zsI@>I*VWN3m%i3(fw?5bMa6atJ9$Ym*Yk!-T-I0Bn7dUNIQ)8u1+9X`!;xQZLuSG> z!J0S)YK!z1J4tg2RuF*aP}`$NO1Yky0zq;7{^oll(;4E0{aP3AP|CPMH8D2^t5aZR zNr=IR0j^>s)xeruVvCgZJEzQbLcVV!8GTG~CHD70l!UjAV>)(zE1Qn_f`bkl&YXM; ze#F4SkM`v(jUI1S+q8>(i%H%w#I=2Igk-qA*zPM+0(S=<tW}8TpP=_qM#CuGLFIwA zo?!zGY9%}wjqnw*8=Uzb2YowyR}1<xKV>(td~+*OKCx`)7%3Nfp4P9wFq(vh4ewsr zAN?$1aYp=npZ_%d`0P@L#!grGcKzb_@%ZMqqG@-Fg&X`vK0#rQ$QHJ0u70rqu~86M zA_-snBF3Q#A38oB-kVQyk0}vuHelj(Cd;NKX3%T$iB_#Drc=p}`=e&36WAmeaf>ZE zIP)g+GT^e3=hNdvro87P;*wFY%~7kbgKy=wUz^Tr)dnB&N2s4>*(~2|o0(_X>dY;| zEBA{mH^wwDHNLDN)IP>=fylmo&2c>e|99f|2Z482yyL8`S!e8O{#G+H&fU${=ATn5 zrPr6P(~qY_T>5&uQzqq+HELIGPsN#jaD1<)>lLELC#26}!o{QVafxVSznMp#Xg6`U z>@3a7Sjhac2i3isvBxA4l{ANtR46IvZ|KRrU!vI_W%o}kvmoOBY%}Z+{UwUkUe&2M zawo{Du@)REHzN}p4<{XizdZ2R;xde3jGfmC)4bD6^v*ljeQR=dl?6Rz_7SQqoj`M& z>1z`0E7GTg2Y6L`1$;denXuE9XCg9ggaK?|bz;0^j3H9dxOarSpk`uL8Ct%+?(e^u zCtkz1hg5o$!-VtG6=^iW*s`g){FOd){@=_~cD6&&GA<yW?YW%{R&W+rIbwn1Ye#E( z+uV~gvD{wcY&tYi<^}7$uqAZ!2YMpPqD*S7Bh;#l2?{EyW)<Q9ySC#Jvtt%DX+|F- zH6xx0M81?{e<FixFvwpe9kRf3pdw>7gu7KU4D6qyR~l<b2<8^mhFF)x#2!D}{sLth z1j^4O&)7&lAQ;)FmjHqqRw2A@1!4u?-Y*5K$*pAZ5^IesNZ84_UEO!DV}~Nc#-;+2 zWdPJ9WWmCrK=Qf$Ug8cenG6SJm0BV}fIuB?-4n1IZXk5=Fr4`NjO$Qng^1ZMa$j*G zsRJK|P9<;*pRgX*0lA@2SF^3l3&vaBYSd}w>HXHh&i%o2tJiF63okb}_oYsk4>wMw zg_73e@jJN~+MEqP0f+I4t=&``hFNyz!dCk#pI6bQ?t|TJ&wAa$)4*2x2KQz}E3d;` zMV;ms>);P9l*_HgOi(LMNW7JFU;nZX@oeUZmmC<d(K2>+w})=w8TNj`e}X3^?EeOy zxQ+h-PaoPvR=qmHK%qt39O9_!J!srlDc|<N-Z~L3Zl{?}<v!qAcCf+i;$8;VrsU)a zFQBCdn7@;hR@7laQFzM-Zvggnn7oq_!`FUze%5C&*V)u@UY+u^DS^{Ed|qwRSOMTu z^Q`?AnLG2}1l2Vt@ehJZz4{*rYS>Oo@3K?ttIb&Z?4_P-5gq4{ktKin0nZBZ;4tzz zGVxFsDWl_>?~MzG-BsnlT{nDn4~<6qp~<Bm5h>E92La^&p`b|v2%4sje-$*ug?|g0 zA+3>0LeFn$8#4WJP!GJV$ltN68>LxFy~hy!jcg$<3=P1C@qDYou3*N*gGXHrbsN9< zr}<28o8a{~`wPUSbk%=_*BiTL9tapCN`NmIxoG-$ocgfny<bJnN<G3RA|~23Odvvl zsAZKmg>--~7}g0zo5p)bS@d=n61ml?moJ<J6C&h7uYyrO9vVT0h8<EVXeF0Lf&#I_ zqJ*2ab3p19cPclUDpUSp&k?aJm?QGV1PbzQ!zD->BP3#{`^wejx;89_5>vYjN?VG6 zqkaGTRD3BaB}2k;KUpLMXlC$ONq5~KwegbSfU^QJw188$1W3|-oM*BuIy4kEZKYa@ zOge1Zmu>wtG=fCH|D+DxaE3&%MVIpv_7zY(&UN+GNzkgCatw)jeNQN4%p?W^BYqZ% zy1UGJjx^8K&;be8f9Y)gH{q%2{Wm;yS^Wc^e&MwnwN10pL%f8IG42h1ldbE}R@Q{^ zJ~>0t@ZTvW)Hw1WE$l9;WIMbEZ1;>>vW@Ju0H>uc3Zq;LN3duBYYNho_NAMLR7G1H zW~t&$GYn70prmGt)&P@2LzC|HJkAQ(>GW)Zni7MpQ$Y`cRjXPy_X&ctKe#s9v5?WM zTn^e26TM`nIlh(vv4rVAjScR<8Jl<HsYd8YYtsq=W>E^5D)Udu$a7fCO4o{N??kDM z<hFWDdl=}DzNjyjPsM2CBk;Uw!FKv}7%GxU<@jf7tNWg9iAqCTMCG}2+zl`HB|iAS z#M*ps{WAL+-+;eiHDUq4DK!KUzmazxTy&}vZj~wF@KHJPJ9m$T^iyor%Jz9$lEQ3w z)x>uusv`@ohgxWfD8FFeI-(yK_Sqg-T)Mg0RQ9h;$u}x)oOTZFo!V>$Oj?yo(|~i% zv=KmP9iDtMKu@5b!|d*A*S$AScHFwR^Wku1;lsGOqvX^mXT$b_N@R<v*yH79W%dFX zEv6v5D&q8Tx?aYt$dBqT-QZ7ARMfdA_Y$xQDP5J%h6f1M%^D9v`QZ-t?Axj76_e*< zaO=J+cA;^r4#!*q<A4t>Zn*<ZWQ01ka@~~46XJq%2PcYPgKn8`jm<PlQ&+QRAcCO1 zBl$i1KMq>;?LzWPJMDo6Vd}P3R^;D{XuSMH!)<nBYd802;}+f0r%J^3FJNh*9GA3G zE@6czvGc*HcC}fOcWRascKYpIq-Q|kpXl#c_t?biK+fwz);5i7p#7eQFDq(lL4~?z zXjVX3#|+T~9w(!#h+sf3WtG~qF<S4%3JvnhdCfn+rJrYn`q(^fC4Y0Nu0OpXsl;j2 z;C89YcE#$P;TiSr9w1CJ(6VVZ_RExBlaz+CvzjQ@PEaaA^YSe?2o95SFwsM@($im7 zUj8he{!Ed?+>TJZXGQ7?;W=kzZZ%At8KhI1Vz+c~Wqy|*jRa{NOp%wLL`XEUQb)K$ zbPL(2=k;Yt{EbCv`P&v!fpRjFqP@c~tKyg0W=Aa%8;|A^&_@=E1r>;Bu@Ntm$vCsg z@GwCQR=_Wr=ic7)8CHyb#Wv`GG}zVWBFsT4j7l0XQuFzKh7W1^L9t*l3YTDfZgv>F zOy&KfsfioY;Ek2{f_565k}7FXF%*#wVfxGq?;L68SSx$FU_m-l*d4viaNchI=e2rI zB@GS=4bCkR#VG`(5<aU_Jk6?+>yOFW_-G&63apm?8%lYYL#;;Bvl8bd%-x^kpS93Z znG8rYK%_r=bxy>?xqU?p8gqlnAuH@n@(79&ZuKa5F2fD${yDH7Clz66Wb(Wu0!|?u zt}GnhdLB=ugx}H62(9e5P0aiWVSp>a={!g{c1C_wRWUwAF(t9DA*+O&Ksv_UW}#;s z?a5+el@w_d*%|&$y;N3wHt#l-Daqa;+;rQv-bb9w-i0i|li3#U80R)pr%NMfxL}}- zDNvjtkijT-9RIttPrVGiMn5@@O7?aT)|+Mq&##fGJi+5^yOr^pvI~WxufohW){A<h zCGo})43=k4noziVKN^RI5swpaek748K>+UD6GZGuRVWUalHGB*w<anzwb8I`q(Hjp zUWVu#c)W7@a|!vkh}>svqU9EQhWmspZX%w@q<qDN#L=YW+CrRaT9Nfn2996EAhkGi za31QM%z(XiK44teO&RCsWo@p9O%#(f6^oGQ5NfQKyVlc`oQlB<_tgdAF=CKSz`hx> z57=ts<Tns#_w}HEKuGl^FC2_5!X|8e4P?K!#peEtEbolQD}3UF!wt8oG?xCzFm6tO z42xqSq54aP4gHp3Vwi|e?yU3HR%e(S2jmkDpf(T$`=K^=F{&kv5&MF@XEMabR5b2B zTk%-r=7}Ny16uZ8<e&zIc(DQ5yK)rDPl#>%ecaK%jr0rkZGUKGYO-C;tIB+8Qjuch zwzE3G)AO-|<iDwnWBql|b1!9@uvfn{Y!f41z>~|&Ctu&OS4cc|M$$Ft&GfT&PzSt) z<=}2K)?*&rY3l8)4A(xX0djpa$j}2G9Am-VYOD#Q38VsF#S>*gT{uKfz#Y9~=9kyZ zuWsmuR}eWI{B&D4rK`N3w$)tkBo(^=AC|#yF!zeAaPyZB<9h$?!wkPjK?8i)3&4lH z0(=<t2kq!@A9i%-Rpa^g+lSpf|Mp?0cK{#enLUYIwwUwvm4V8;n7Q?$@q&(S<q-GH z_3EsA^K?CX-E}f&U1u}<&X&80-EQ;wZ?(-2&}Ja9*p=C%o27C)cJrD7nCHzLUp9w+ ziYaSPC^B<-b!r2*%`(zh4*f#AM-eVT0g;3PJQPqtrdbm_hXbE==_^~O+>NP$^T5C` z!mikbi5EQTjJM@afpAprRWh_mk&*<qcH(G|ENjg<z)~B$j#_YblB?x=1EYl9p_UX* zvb&5K73`X1lJ8YR^+{2a<N=?iMYXIA<_IsIcsXk0`IX%5o&mC3+fuvCGC9N&60q&Z zmF;n1nVxseq=P2QL*g;l`kA)x<_`JC>mNjZ_lx~R`4DP`X@t$f?6M%6vNw}0q3XD0 zF&Y4BGzV~XrU_Eo)v#hIelM$|)%?wU4j=b8n=M%2ZR>nA)(2qh3VpB<h^OBaS*Qm6 zGNSbifdS|Fq@v!{v3fZ0xU3Vfro^3H%DA;WX;__B;0=H`?t4e3>Hqh(&h~$?b#Nd& z!yNx=>&9IE2U}N(D6~gUJSdPVBPIOcZ$O`c|FuewUCUutaRs329%45?iYx9!tEL5) z{AQv9@AaLUzlQGH+HCPsh5wi%X!8p;n%5s5kEWnG0Z*|AE61IR96MObwyuon4IU$N zw6J%%&3^Xk^#i4_%&Y(PPh=bTRH$tb9U5>d7>bh{5#6D0yz<kf!^^cO&yT+KH|COc zxpWlf9AjYoM%|#oTh*q*<Ln#Trkm`ds3ZSm#AR5aCveHwe8=h~XU(|Si0Ot$J=IP2 zT+J&%dB%H~ce)Sfo7kQ(zmB$fs3yI9KNe>>?8wjgQuK%2X~DH1n**JOgWAL&9{_<T zR>_wjv<FJE6yE(S=qvmyClGLwc_yiLCb+#OtIQ_9>1$Ot7?B1xM_G%K$Tg|`ACx`H z2B2)>e~q%fTEKR*>guw)#O0=e<{?s$ij7yo(&8KJ>PMm-UJ~EwE2;hNBDph7T6aXK z%3)(6mGMOiMEwGg1k2-FbI}FK;?aM@Y?KCsfJ(-%0wVy-g2M*yQcv!v1sOuLCH$0a z?clc>sf|#X88HG1Jeh;7y2UoZK$nr-z4EeREEs}$x1K!sTFA_8tGlkXRR@8=Ltn8q zZz-L1MDytmvnqdhOGHPdsDOae9F0{J!Cl&};q!|#K3_Q~WlVwURT{%wXoRjAPO(LQ zY1()==1;xtx$tA%B6K)X3D@XmIKcT>Y-t{KwY$ZTgBeRX-mV_$)_S`r#o@e))Yr<F z21Ne&_j-@ib&K1qevvc=z6(%;eF2e<u3+9Y@<SQjnxJ+JVQra6n2CeSQ4Xp1ZNiwn z9i&%V3n-13o{8oeHKiz9aG=ef<qCQth<dhIWq+8Jux!gO=}IJkf%JeJE!=3wB1>=- zqDJ5Pvgqu@d;bl-Y|G)>vm*%{IZ<?r1YfkQQbV7hCHG{_oE_Fr?&+V+nlKjG7tebp z2F@q$Tpo&CoV;9JT{qf%UtBq~X9vGs&A!RSP?fCu=DG~et#5pDqo3qrujuh;^0}Ap z>bTfE3TiW}xQXgv?r`h;<l?ncqGi?)z6ABrM6%Ii!w$LNh`>`1`UbT49M5Hj^1zP< zm8528dvOsE_T4T#ND>*G2(>Nd*d}H82Q$l|KCpUv)+j0*yakwLxne1k+5P%xPfE49 zD*zfN?9t`kIRzJkUqXQ3WcnQ9C|c{XF#j2Sy-xf>*Sul^*@q{rFAm8|kRIT2cQ6$b z<`$OWz)<-pgzRol1rMK#3J@#3e0&%_*H>QBwVs=GuqlUDIAy!-=J_qw^=2XzY*)|U zfqr3cd1YwuXRp_6MFaZfy*}jA-{^(n^Um{je6!cab*BZn<99kqGh4kK_!Pg+#=>UL z=dxKb*l4nG{6NpGl$u4t*pMUbw59`Pv=@FK9uF{|pE+&2By_3;y)5lPtr?`yFFlrD za>Swg-SCD5e?wt3c`gxY?+6ME?Q*1P+t(aQblqn1y?`-O=#bEmc_3PG?X=d=z~pto zT8*8&0Y}t3BtC>El&cC`W#DOs9+Dg@ryCQ=qpKr|KyhD*gvn_})mp1?oR{xzpK5Nh zePV6Fjv>lvKgm#S{sP@f%M55!R|l>Q-aI92?`1;CtIbYJr9~z%)pHh4hh(H9K>EH< zZ)4QA==dt_uvHsw+-F|<a?byL<CjtW<_dO5`W!kOKHQx4Jv=DD8a`=RP`mG_viWao zh`$j?{7kD^GGhUfhlCrY23~%<yB8iDV)sjF{S!G9SOEK1)X<|Q4ybKd3GajyAc;bl zuurm(OZ8Jk`Aoq<|0h|+8pGC-aIjp?EfQeKJ!DV{iT__<@5^uOjotqT_B!H`ApJ*F z5qk)6<la%ig7V5@6F78#Ku)0c=Z&OffDCWW`1z?dzz+5i-<M-HRs-<Y7*n9K4}BcW zmNCNLL-I#+9BQ@JO9KLLMz6e4k5(^}d~Ln<<0|1I$ic#LrkWz1wRb@$oMoeaw!jU% zV>q-4=DwuSq<Rj@921Rvp#!mrU>1w9J-J3huZ|h#1RveOHGx(>IzwhXF5caDeQIyy z`f@~M7&Epy)m%(s)DX3L=o5pfO{>2DLKM>O{ofOXp0@uY3a<%NC$&}pqA*#rwHvij zye5^o@})Lwu%Z9($O7S8@lkGl->p3*GLLz7thb^91;`KhLGeYJ`QvT8XR_qdS6n_B zzc9Jz?NzSRnoMo@<t`)VnaQ3Je@GXMsuC1fNg8{HIcb`D0$BPrAgDOl_D}>l2A-0> zW|L%d`TT&W0^R&PKu#Sr<_!u|@uBDXqfs}a7A=vQ>~N<9BeAKqpb&B)rR^7_Jy$_y zJ{lH?q6$7vo!x1+bETo@z^yh8tI_lQu-wJvE#$L&)!-S%qKA9dw?$ItT0^^mjo)uy zIt_nI!Z62wGQiH-{pj@5=wbU-`EteKqjmYc7HyWg2=GIgv;5e!%!`+~cx_PhEl>DV z)7Q&v2y#G4=ajOHq;N?LTRSD`3>;AhbS>M>?3@BW_<4}!^Zk}kBCpYQogC((u6F_D zL;X<QOoP+g(@ZKG&-Q0TS)im7a$96ls3d~lUnhXNtU8lJum^mXQ9eJ_oiqtaUdSJC z{X#&#dq51=n?a?JuTS>cz^k)pcsN}*+`$q`<rV6gQ3bB$HcKhcmGJmyr;!Nj-GsHC z5eSB(6bowQQv(Xj3;a3$r8Tudi!u10W1yeiPCp(vbYl&X*_2rE@S1L3NRmrFYcq0S zh;@8!_iJJ-KG@}Wwj)SuODx(~?-_}O92!L42kSIc8>sw!w-)c$LjVpWg&7+>nZZ_l z^#;^<OIoiQj55VHgC_f)zxyd|7L}gz#LVi~j{8Zgpd}6A@@B#EZQa6x7O&;#YRU~| z#`O(>`twxgL^|5I+HUAEUB<y$-D|hb<e|Ng@B-Aohrrf=c!o*;Wm##Xb@P+w#=rsJ z-HO4&oZJqc|EKC0^smZmoC2<St>W{ISa<Qydo>scHtm#%>!6_>=DsYQzU$TlU!^Sk zUf(wXL9m?01?&z{NP`avW|)<riETEll(vR|hZ2Gxidvo*|0zxS2f+SKns81ub3Mzx z;ofihb0A*-(~?sBY2Rm)RcQlznax?}@>{mW(Poq_#z$Gxh@Fm|OKXLymX*tjS#{FJ zNh3?gtj(#}UkR|DiXzCoR}k<o3Y_ZJT(rYO{YRRw^krSx^1ogPN<Mpm`=$D|J`HX4 zb#1I$2Iu|Gf}xT!Q;3AOwr7DFp+p9C!{nNai)s;n67)hW>IQWmlZ}kq5qCt6*n`Bz zeslr?p{Qk(YW^-{pqyEBiO=lovGt*k75@!BYjv%ml2aL&O%c@E2apJZ<_09f=;(db z!DnYT5Dil7JQtXLdQW}-@eHN#)(EmuR8yTbD5gFOh76AZ{r$1gj#0!T#{e4p?uHb( zp}F-HoZ{Fc@+J}^r<#n1i9QBaG?p&*r$AP`ZmueKUSHnq6kdP-kyi<`l5fh^2aOp> z=N0h@kq`@o-BqE@`S;bAx)hpt^$_nC>4g}mCCY`fAqg)n4CG_?u982&utHJTB9?y% zhMi`ns$N;LigHk@&*ewJ>CG9Kw8AO|qsthTjFJB~Bo>frh?k;~;H9kGWQeRrSoWk& z<9VoN`i8^{0)F6$Bt<^yn#4&YtBgBLovgq{LFs}xmwM&9RbpI(K_7iD`Ad)*k5UOA zHDCyH?Q=IF6h!#hjeeUhs2NFi7tYp92~?2C_eNP?Tj)q~IfEeS0~Ftc3r7U{?qw24 z&|%S~n!X*@5^gv|N+SXe!=blvvtH744n&a%aIWQX=mt--g0<9%PC0sTXT_z3zxk9j zU#MM;5VnWO@=_Y7p$HzZDx(Q0yXD&SjT@<%|Dx4JH7dOD%5Q9!c+ETUi|H3^wY_6z z#V6_fI8MQzx&G_rW13VV1TpeB++>mPVamarkflrJ$I{nFakaS+w8>N+`I{9u*7Q+i zUawjk!DfW}Ie5-8&9hKI^v(`{2f{X5IWs*k3{l%#xI0HbUcu0I@X(d{RU{Qxe<#8M zp+rvqyF}QJT9?W$pG?v&z|u}gPyg?w9hU<lTZ4RfY>F+o{~GhX1AEQ+w=X&Ta(>S| zPnD)Rivc9T27_B5FY&x#x)u+2bl17A#hYDc(mHmiaR`!@`~jt;Bb)e2VtZoJxF0D) zbBw`c`?^@!mw%N_mZrwgnF>&n4E9(M1Y~3Mt$E^AkcM<vT8+sw&v|@{?1Q&`6T;{- zNwILz&e4l1X{ii3$faOf)jRWjd&TJVKsqU7sR)2APz^%3=RBSgLfqWN(eg;T_Mk70 z#%Y$VstMhhj)g)wg$AIhey`z}ngMIL-d-lh=~|uiR9XyTQ*)|t1z+GAj=zFmSbJtL z1F7IDpd>P`voS)Y;cN9`;kx-#;alP3DH4(LB*WH%8VtdWxPxlYnSSE+$v=>;c4nYs zB*Y3vzM9jJMl%MDYxacz&r3K2s^hrdNc4pJ!ipe=LQ8_1$P|tWBxPMc(@;<eLsUNW z6EjC0`&4EgylrovBkY=>@GJ3ksv>u$sC!3H%bN02Unpk=k)&(n8xfgZp^B2EVuxmh zu|nqXNT;Vw@9c^&r&ZJLd73OIK?h1C1%zp^Gg&bGWUwM9lflb4O=hkEM*K7q9|%XU z(%d1kKP)V&73BVS<c&#jb3Gy)y0{CNHGw*mn3KtXU>UCj>;P$rYZOo>6M|wu#?#PH zHjvw>iD<^mUjPawBfN>k=*y-xK=xk^JDGWw*kIa_2*(bfL_|BZ{h2+j1t*JB`W!e` zb`)KNv{U_Wy!&xxufg_0bLpvQqXLx~HUq<NJxEOmi`(%I@7)`tY3jG({mbV8=e^L> z8#f5pKA=lO+cLJKc~F%%$I-NFc{P!}WdthN1!(t90v2n|FpUM3urn3RoK@eQ_Z~+C zFt@CGGPV!2UXbJ@>mQRtvl%T(yGbz{C56R2gZuS{1>|Z^AUY0yW%}4o7)dmK(TQWT zsN+A8yB7T*a=v8B6QU?t9&g<?h0{VchBmDrs=qs^*eP_NMIWfIaeS#I>Z+E1Em*P} z<*(3}wf)>n;@y(fA+MBgOdEf=k-fN@oy7%#VE|tE?RdRO?EEE8ZKdHX(9ZR$kzY_b zNNu%e^}YSqc2HAS*~C#trh%5|PQAZmyxRaLJoU$j26uaVVr??kb;UPjQSdjJLtQpP zm+RP{H7Z{oLFmNfgvrtBL1AKo8XPD0=ngBWJ;NaUYM%!1wwf!~9W@tzs)zKYfQJ6+ zk4K%94X(%L$Wm9bi!~UZO8IvCtHU=&PpFGaI83*1dom{3!N%aNL^2%@S866RwA`DG zPbTMU*g)FhlAZ!ihS}m4L~~;+qfv@zR_<qcMgoj5d5E(K_z%{Mn7-@Eag2Fo_ID$R zXkUu^vbeVm(508Z+amCXR|x3a^=0ymI~+Kk@RP_kaQ+1W^ir!#72O-=d{EgteA>0u zyj;Ln{NYkz`LfwLI_o5)+kD&QxeO}2j-xGs-_hqP6l_u8_p~ojU%YubdwDY)?X%wI zqS(c1rldLYhQnW^h`*)TXEw8KnZg(9SV*VzF%Z#p@Ac6RJ6(k3=qoK&T8ZJu0|&+N z#&I*P4vLn7r3h+rt$kqO;bl!6*pd%DNXR(uswU+pLX^!3hnyJrbD>*?asFHgg;xpo zI-<(YgI6=ce{Bq;mW6LI1qhM#zk~?Rs8I-%-?QfDig5W#<?wp}v|4p=q)z7DvY?Uc zdFTB!Z&Kz$4KA?>0$H^m!N%u37YnS{*!hc|3wN`XtMH0-djz4e1YCm^%F#?ffGNAl zw3$629~8MYsi?o84JNZN)mPP;U3N<(_waUAbdVZ!kVx+2WdEens15Ums~xU{;$(H0 zo$bn;27f6#toj+k&Fc9rWX~_@$OyyH)iM~AN<s+@kUp~-pAY!XpsH86E>vKKNyC#X z6%Ih@5PH!0nk7H5Gkzp5A-t=~nHon#J5Zs&s>(nVey?Lf4`)UHB3()Y{#{x}`3oX_ zPR(n1zofumODI_&OCFqNAx)>rYPT?IXe|s*oJy|zF-4+4f=Y*>h1TiG1n@$uttDx! zv{i+2Boi>;%6$5QY=2djdGO0~9~6Z5eH5x+V6XqekTPhP$9Q$ruV{QyNY5w<fOTAS z)tN{PaCvKdfD2%hEJW(uw(+4X%x%1Ztk0fOp|PaSF+Sg(&@kKgc3hj9%mzP;_@G{L zVeU~@W0&bINRd#G6tOvL;Rt3j`Pd)K%HXCwpc#TWX-bHKB0fT`qcq*!LGq4=sGQRe zs=A#>t-{#r>QJ~E+^}I6p@LcEgf8>Z<&L4r=L-WHXjG}KKqOmn4|3CO4%?>E6yBL; zvOcBu_X2DYobK*@tskqVG|@QtZQI6o28aEp=~7kxzmE1vXsrJl?Ux1r52O8jd5#eM zZC5y;EL>Si<r{^^O}{rOKc<?W_KzP6MJe#!4Y0HQ=e>&KldF*}Lu#9=JyY#8#`|p^ z)jDzMB%HKtj+w+W6o^OBh^RK?9>>GYoPUMJlKwq3W;ujya^7=|o-}Gj(FCOU_h{ec zuhBlgjGllSdi%_^*UWV{w96~V6gEDlrkm1be3-XtU(R<{Z{=v!U*ypV{6vy`l|xaC zeCmDpj5eZX&gO(Y#`2Q<R0Ya@zbq`~yF?nq&fcIZeCbuoHa|Tn<*Di&E<U<fd|RZJ zESu#NYVdRm<`qeX0YZ97#hP?&aE-M*e!RcVW>my;Og5+_qp8q~&UafcG<CceXa;$& ztg0)s^fde4Zb(_QXxV>jM*ONTj5oA+tKkX$#-w<;h*q!|GR;kFMH@SE`mkiY`2M+6 zjZ!YTW)`qO#rLB|F4P3HUd(l{@>>6Dy$mIf&S|h;$4R-8X-EVVQ-UKz$*fK#L~us! z@Ws%4+&3i~_}Pc;zK=P1Z!o~Pa=TOi8KigBHHY2FQlg-(^2;>R=e_>F#l+IO8?)q) z5yyk{kNNG`%v2flzG4@(nP)gn{Q`C4%;_6}PbXz)$Ar?wi5+YV;JfvI+xh$p@`_*+ zM-M)KXN6iBPi8fAL9B}LzaXBBt0~4GN*yjM7jJ1?oI%68KWmS&8veh=#0;tajd*xF zTK*8v)}}vL_uW4c57QH(dw9qPzh`K&t?=UA#d3P+d&iOMb(d%6>%yICnahTSRfX&e zT*{2rdP<SoBw&Df$)fWGvfO)^4QZ5Ko(eTNXrO2|&|5mXa^R!ZvK@G!12OR5vtWQ- zJ>ClP${^*Pk#IdYAqPp4fFC`3R9IH9(jiv77{KxDrR|qVz{L$n%EOWVF+f)Y4A5=C z?InK?&}I4GgDk%2v)S7^Ew=7t!vDdYJT3t4Q2lS=&La3fa3>Gz?iXo%B>;B@D371g zE+ZFns_}T}=wqD3V(7lc2}H+Z<)X72G@t#(oxT#c5~4ap&T9?3&n;PX<@34Udl2*M z6KyZ2G;4_r@9Z20LV&pMdZVaBmsy1qXE|OsG{+T*!Id)VJdBRVV=~nq&>zct_Q$2D z-5anH&2q-Ra1L6LFgYuPB_Gp?BWn_WolaDk)uJ7A4!#d_BOdUbL%~f9%V3<IC@?}O z<N*DIT?76+mQBRCKQ<SbOEMjUoGPf6JP5(;$I)}T+<do|b{Eb&6F<fL#x9^2QggEX z9QQhEZRQRo8=p5ewbJY^FRw6}&yRsH*GyKu(A|fN7icuY!A*Ao(uu+%3}lAMRTP4x z4Ty=cv#B8D8vtQ!SO{<^FyOV{O57nPlYzpovP&eW)2LJYiHRA)6ekHKYy=lc@qByI zTe(=OZWu<w{!bo)$)BkIU6uhLJag;+PF{>#?(uI_lB+<->Rw&FxfswmEMn!jY@GUb z+_d<H?PLE??&8bnUi2{OMr7}|=5kt&jx4nefC;hYCo<@Lf3|Y`tqp?zz^HalCnq;V z9+G5X3gt)voIDO!X}h{FWZ&{QAz`~mPn3(?oy9fegHj}ud8RK_5!hlx5_#Wg?Rx9t zejy^ZlC7D6>6>H41ntdc?~nU8-O`XBJ-FBx$EGY3e=zS2o1(T0BE&oL^9zPFlY`F7 zB`3@^PMQ+r5(rIu7U&^zEwbbK*sq_S2KD5+__$5m@Sis1{jknHZO2A@Yr|X1=dfRF z$Ak~7sKh6j(cArA3f`VKKT`n|M~=&PLDsmQcyx1kESE#RIbVLt6&L(>+ol?S*$L3L zF;n@MwhiT{KW!VdH1VRC;n*~;ciPxeBdCeRZLnT1+(l6KZiqVLnw(TxV^LCy-&rvN zaxn(BZ^MyEu;fzz6=0?4gVvk>Df4T)K8%=32x5$>&B;BM>;uaDdkWwr1mKC@e3KKY zH0^zTrBI|#q;mFRW+o%L#GXi*8$tcCs^D-=!6$#l<_!NdHfL)3Uy#e0BqNN8jsU&* z&)8fo=v6xJu{PJz|NDsT%Ac$l5&JoEe(Di35eHG7NdgfnG?SJ*I$WNOaL3JLbv_=H zAGF97LgnDr9sw7F=EjVL;WUy;^de%p{@xyxsA<J^um8z+4nZ1(_NVXqU%Eo_-R-~* zaKOgr({=%&F}N=yyb3wsA|}J#e?ntoArV5?SFT~#Oc6Ph_<ChfdQvoe?Ougb4W+0W z;tA;kWRl&WS|QX`e?ns%Mj`GB$eij<S0jB%jxTryk_q5Oy^V3F$tFr<P-F@ac&6*a z-vJYZ^6WGg5A#a3$$khPX%aCQrgr7+d-P;tL`)m_o$Z1flicwkazsqs*az}Yh#&^# zeg+v}EW`Dn1Hg@OwW3M@Mx;X^(ok2llv}Bctj8%^@4_xk^db|Zshuzc-ohI2Hgm5& z2XeoDo&1Ah>Hrjr#(`BF+lJat0g%`l4&f?ymgnOnu1Tulj0xdET8xoe*K#Kv0Lnm4 zIMC8lcOGap{(xB+hizAy6X;~}8s1b&d<a`Ra9qPPI^b1GIr{MVMj&MmEg1&0TnHKl zfUm7C7ryH$F`UrGNiAVYrliRBxX!r<wz`lVCMU(<@MBVdX3?rMuX$VH??^<Tcg<8Y zi&lU&lk}-t9EryYm`ntHGoFX{oY-f78P6C>u#RXYu$eLSo6Fhx`Yv+RYoui<C@nZ) zx&Y5^w3JUE#bAY&SHW(FM*r2ShN9?e@@gvDQ%J}T{(!9Fy9KzDV;>UP_SpVeNCpb2 zRRqt&Mf=9Z-W+2y6g9=2^kpZn<z`s>Or;5icU@4^8+1Na`wGIw{b4d9e*2q_jp*e% zAVh{z46Yp6PCaR%{v<cKvb~?3R52HBclSF)X7@WpRtgA_>6R1qV%T$fVsVw`;>z2% zmnPrf077Isq*_vsK@+sD_k(vkDYKO+%{sgj0l%Dm>QCsomt-t3y8IDR&5ru5IM$Xq zty)L1+@02hY`Ii8&Ac-vF%d&(r)pyJIp(G+FJ@0sZYff^&<4aAvz?1h|A1IH0L0(` zAcp_VC?d+2BBd;D9{^&Pzq>Yo+CKc@IfAO*0{l^@h#l(mC%}1M{|aKt(Q>cHpuJvI z@Ui&Yi3Z(}p{MPxI$8sT(X~|TFvs?4R_^ZVY?<p>Yvioib3Lg(cp)s(g)mgg;GlCg zd<gCBY}O?RYr-m!@HWj@FI!D$+7gz-JwK`l=|wWo%yVe>!11VgA7{lX-M=Q|B1I;* z{=_SxLoWmBbu;yz*89xlDOu;J+rN*Wyb@mfLm4|;PCwCQwf+=hM~RjQ%a-^$5k|Iz z?c8x$?y|e^mbxQ>){D0{+!2a+3AN0}DD%$7QSE$b;9`jp@y8n%C9&SGoL$ySz{e)I ze&uNtRB%aY2g)D&+u5h;Dk7FtJOkUz-?&7ql#pvAuefnjA13blx?a%e%f0ILRB}TU zwLX_1;AKlk&JbFTO%4!-BfrqIAIz;;jF@t&$`|izenIIe{4CA*8PKMefy6M1Kn(v4 z6C^!=WboNKo0Rkfxj{n%)RIohBMuDetm;TTU&L8-qbdL-3^jy%{{o3jy5At-z8NBz z#<Gg#725P9;j|_|Tr+Fq<y0@!AVY(QVrqv)h;5*73K~1dA*e;f63%f+-a0O}>Eioj zzbKW=kQEUsTr&g|``JG<ELSdmH%+M8ei0mK5}_FN#}mctW!HNlf4Vw{`fyi6X-J?( z=|oENglgon2R7Zq<B1pdV|r@HxEnhn+aqHlN%4TFt<x8*ec<ftfP5KZdfaqc@+a1V z!~k@r3##El#ws=6@iMwJuM0E1bE|@K$*Kw=kM>X$*s|7!eXRhkfN!x>ywFzViIMcV z9I#r)cf7|gTfv?_0cO#$<;88Kw@2`tW%F_~n!Hq^)c2o6Yw(c=@D_ImKI50q$EL9r zd}6P6*Jq*-!B18=;d`pDZ{5tFB)<0zChNi|8@Y^lEtOBKy0P+ZC!0D&D;zn-5zJ`k z?rox%;*E*Dv_>#%Td5Ia^}@S<wEbM_W<2^zmi=`~G{?Sq>bx%X(}k0pZRPy@boPtk z_lq<>jZj&y+%4Z%_(%O*qNM`Ozo>xQV0cagKQB(o9?*q<pWS;EHkbh9Ya}O$s>J`P z3;*#8XBEr-%LVSZO~^#n7TJk$fR}n#5|M1p^Q`e5isZNd)q`YSINtmvLZ1JKkhlL% zgbc#fNa(vWBeiqjeYFAgIRbteVBCY-5{%*O#QO4|<&jFY|EWAeA2e)~YBk)diPZ`T z=QaIm?)}!f9EqJe^ZxkO1#lt!HWloiUlDrW6HQU;Av61ISZLg=Kra;pl?x%3--vO_ zAcRd#zZfX&NJNwL*X`7Dx{_y>6)<eqMqEtm;`+ED`GM|0P1topcDDVJ-eR{ClD);Z z592t!O1AuWA`sQU#WijG&l3Ex?osyNIKUx8kfcX|@gF!K6pj8dMpX`hYR3mfHK^OO zxu0YE&iHs$<<^9i-jI5P50AM-Sca5s|C<J~ZkECU8(cMtzJKthfgo~_HCz8q)AZ*C zU%%=bf%+i`0C76i1xLZ6o^@J0zdJl%a7hyj<p(%rwk@EoUM)YP6Zi)j+q&Bu>;8Kg zUP9##Isf@j86I#(QEYV)G!fQ`kfQf$Q(AueR5d|_=W~KMs<zI%BAgq~nCAdBojL{{ zHU&x)pcw)}7^qH+EKYg<Gi2x33~|R$8Cw}~`2lKaW~9Hu5ZwtYiR&@H>aSjiDrotI z1cD1xHJ}Th!8m#{_IDS)P!#Upl*j+W+gk?3(Xd;)xVr{-m!QGjEjYp5J-EBO1_<u% zL4v!x26uONI79M0d%t$}*<XEC=hr|_Gu>5GP2H>4TGw6j{HF_#6J(V0Ve<wUtE;Gc z$N@7CsvNOz|Hc2k3%_Ww*WDbeFJ$f-HYhZjykB;bEJQWd(Ia~7`wCMiA^pOXk0gb1 z`rd`-XZw`Q(eu@O=#km8#a&ri>{y-knQXk=916%>7gg2blQn%jc@Lva06BUoDc*Bp z-jF~5C`TUfhH$6LxdP=ZpVD_Y7RxnK3H@r_PKP7civAGlG~$JZOQ|J1oO+BDJQAvy z&)+Bz8iDL134fT`nI>RnhO5dI172PEqHIM74P^APofLxa_`5c;C+W*Iyft=G5qj zzjeLQMMv9S$)H?dTj|E$U5f88hYIe330xhHj^Z6fXG$W6kf8NPh3X#>qw9?cP?uP8 zDspq?(H03v<x6JlJJUeo1m_ImzkOrdP!oSJzN&z}!v_BFJ!p&YLAZC}_^+Y7_JsMG z$sI71M?cyB9?HL692QDSm}{6YBgr9Uo3>6?LZ%<3M)5YD-rRKRPBgVO@7HJEEXpa@ zk2$VRdc9Sc1QNlDcI%ZML54V>^y->tGnmk=zySRm*x$0&U*ZYn_0D*`cD>XZZK?p3 zfHJ6V>r5iXpZ+tCCkY3)|JB?u(tB@iEPG-M&LBS^EB3eVFgn6zO9YPaH{1P*uspdg z2pTK-F~QLe0}l)$M?_N85bppYERpmJgT`FZnN+xXjhWjU!^WYa!DPRH=+xgMEFeiM zo;7L;6TO${H>kXBfCx*Zs}eA@c&@44a`xEp?_s>;?_u0zP}@I}Jy`-1+v(`v=kTBZ zHiuK|8vMUmAAUW9P~YxQJVn984C|#80*D2SVTb&Pew;8EYyNr`A|6l<^udhyqD{Ce zhi;#<XlDmTQafj>$M2|+Mu-8q>Y>1pvnD7Xkd3IgaiCbtghaNn<B5R=@E7LY=i!;~ z(8*zXyO;3#hDp5&JUq&YJ?N_M&rcJ1=L-}Ji6o3MQYnEEEzv7lK*q5vV>TktH$_CY zbw@iX5EY3FKS)c|=t}>>uxqWc90Kbk9qQ;V!%1PmGEJ^SjVDJOy%|dR<r5sbEiMq0 zM7_M4W4BF|TQ0!u;m`(`@NmCP)O~dEYPbo^_vy=|8Oj9VGy)prFTo*fnPNDsM)nXx zJ&9r-vu5fkyD}&FdlLxMe>OjyfLdI<OzZ=QbF~>duy{mI9g22r1MH-VIf-^#8VQ}K z$h9!^qYl`e%#%)za;9o1v!WDZU8%gz;zTmPC}7xyY~6-)u&rwjo?KXBshM`;0I8MQ z=mCBjH1}OTrAtOx*0*E4Qd0d&q~_9aYc2E03ZA<P@-rYk+tBO)%~DJYGf%_BPFvz& z;3D3asbj&9wR^PTmM9~^^nwPS%V0**M~cZZF(~R9N@<RJUqWRiYhKf<cD%xscJNyf z>=e1xt=J3I>b_0@J$HRRMi1JIrSXa_a}XU&4Op!T@}k?7%EeS8M!5c>>Q7I#SRGZ$ zSNUVoKe-h+J(M=hG3_Ei!TsBS{n^-m7u?6M{}kM5PSl+`*|=PmG6_pMOHbCVytN<B zJD1jGjjvZn0er2m>iqcw&6{aKiErCwc-pHH3zCudDzX5+*6VM+Ruh1))k{U}0i2Xu zm>mzZ2n^nzs>(5LmUK0zY_12Y_=~s~f4s3`#14BNg&?<(!zH6aXbQm5+E-9;ooM>- z;DY#Jtd*@rw+{WD^)s6Ss7;9bX{9vB4#|btqqxU+ziiKMDIFVuMnsoHmPc~EJ^t<= zD;rU;B~1b86$MjnoRkel!8esm&xz6)IQht6YM6UZ6bfpHFK}bM@=_2sbz<S$cyM+m zUzeuhQ5&C<xN5nSU$X5yQa<NMQ6gsv17V8sh;%%FNdrdW7N_S9Tj>e!I{U_WrAWx( z`{xP?GHRzU$L}BIbk@H39#uc5WRG#j+sr(k0S<uaZ3%Pz$$mK4a`FX}vLtM0L{xyx z5_e7|+*TCb5n3uq|GaQ;ojNWy%&-S<a=7rrp!f^V?%BpgCcf<jmt`))t0I83Z(65# zkxAb~{TiR#F4pTUiC8bXE8xhOMGXt2tbAQ47VNbswoEa#g!PRE=gI77Uzy<TpvsSL zmf=!yM=$fzfY&M=pYa3|{SNvp$sFaH%CZ#!Ig^-@75Xm0mxOsv5k%B2s}K#%RX#(X z&=DRG)V%*J%hfnN9d&$N9^_aeC0&RO?ocAaQivUF#~H)^*%5a08eYU!VI%c+$!1OE zxS$E#n$xF9rVf5VY0E{16>&~!OI(H(VcLO^@jC)HzhZh0^DG0)G;ps`iKkqFf5?E+ zk*zdqXs=Q&Kj5W{lnyL@`(BC_rcG&jK&lR^S;;?HiWRm|Y1mY%4yI1&h+V1<p++el z3h-N{14DJ9Ii_l{lYF8%x<aw&MS?k+ba6p!f;qP60gyiBEQ^mqWDdnFlY@fQCSZHF zse%j%`7Dd(ly9#jXBEE$BtF>zzYr;&oJStOlyk6+jYXiQof7B~=1lVuhs1|J;1?vq zGsVsGhx2m?L5@LSeV)wj<K=AW5Q9XyDe5DNMqpZ<1P15g%n}!?L$r68V2naw85wH8 zUlE6266j-9=)UbC#-3$Niw!eMz!|1&c9q|VU{YJc#djL3KkGSlv_*EhO7{YEk;FPS z!r;=S0bL|_yw6{L>LdltBBy^=riaZe81CxUpFBlb8z10JTV^E%DsHeIQ4^*gRIn`m z6&Ef<sll6y<K<#+-a<psr#u^pr6}Cjjs~kT;CBXm>;kADA-z|St{OK<KsHb~)1a}_ zm=`|)iGk{TV;F`xj@<R1a6Rr0gkS1J1$y&m7o|MhdRUm1Q9!Y#8-sySoFzd_q-p#> zTcnYT3xPc_y-elg<Khv>#kK>*{#1;4R-z9XXX_OUz5X%MC8KL}XVIsbJHaWRQ4L`@ zxe-he$XX-AzWo_&smV!;>oFwaL(j4Aa`wU}c1fAMTWq>U`%m0VoT;NLpEEX#OK$P* zvSB2#8YPXCikKjZOtSluL9GA<C#yzTX{-MN%juO6t>w1`r9l9e2>`%y%uZ#@8?rjE zxj?Z|a^@oLS?X$K>&czSn-(E|d3wFfMylLmH-uwf4g(F9E4AsrxlY<R*CT{Lp=mO9 zN}(@(!Gb#M`c8*eJ~S9n)+a0{8#OYK@~jkb51$G>Bx!C$iDXF`(xj~hBc9T<AO1;A zI)0<LPl^AqB)gnYiUwBIEXrnC{ha?K`xrdf@FV36|B!Bs;fcVogUT31|I6{RT1Uox zyPp;txwK>5G&8Pw3R=ENLa`6vU#EC$gGh{VzXh$x*oIy^8@Qm3*QhDgqHfvd(Mkxt zO6g*7R)3^#&I?_-;w*i};~;>57v@`PsGBM5FS^78Xs}qakW&6>u;~59xjkroD3$m} zHiB2R-aoMs)L_E3{@~nr|37hVIG+JHH?Dujxmj<&<J=f4X9}d33upm2H<^_GLL&rq zrb4Eoq)5a~>ytEa5Jz76jNS83_QfSdMdZXkV_yyOhhsaVZ%-x9)9~#oV~+6L)mGlN z$*bIaZ->mk#2%t6JD>Yz18xn@$yahsT2}3K*yeLe>yp29m$&7MdUy|>!NyzDby~2R zYjRr_#3x~KU-Y4TTlNE)w{U`oW;CXOM^zA?{$j+~?S!D;U{->cl4$Yk_ViSVcer`< zuP0>n7ws~Yc8beF!Sc4T%8Ltip2{x?Duwnv+P*lkOS$<iFt%NY0FTQj`tTv9BFqb` z7}I&k_6w%yS!9>JPH39;IE_o<^@#XNhUe5s#_en8%YEvFJ8+#rqXORFeic_6K$)@$ z#QwWq)uI^r4}R4NN4?g%%Ldnn3z$@nP8q;sqPwb9Dv=!hr^3NovIM?DDs6?C@wx5Z ziy24%8CAiWcD9wBU6b<i1~)X+Ux0|-rmrg!?aSWi?g-3o>DO)tOd0!AHLrF0J$r+o z<o}Idg~>Dd?+Lws^s8#R1h%U|xeaUS;Qx;kdj7|+$WhAvM9j=NRg@Q}q9~hcUl(wj z<40%ZlWi9Oi;@9Y1NRv~J}>+qU<NVF&v<x|{Q#K3Di7E6L_6jR{p%N-__d~0^SUwm zrhlw?ggX^Jr5Er;<psZ#d$3yqtSVa-jDNPO@_>6I|J|xGo_xm^7(1{#hDNl#r}M@H zEU9Hh9A*Y+CszHb&V3BJtf;9(c?D>NR67wreLCL*0*m?bNvh}?l)d`<dpgf~MGs_S z0b<PjR7u`4--JfP2Z-rr`Fy>o<z5e6TGpK}K&|aSZJ7Uxhq+{rq~~f0#wE3{%MP1B zj}=vzMoBWyaw9l7rp1PVOYFs6;vO47YNI7?P1kSSyg@93j~)o$q9YOW_LmcAiDk%9 zvfS6bysm|;W|V}0Ih<(*hpoR0gs$%`D`TOwJeSe=lggtsQUNEW_yjgvjG58=!Dv?H zFQaPz!jCWYAB`#j$Hyrc?ee~Dk!~jBvFa#t&<~EvDN%mggm^rnl|=6?kLe0&f?vL9 z^YTYR(jUybg~d$&W)?tQHyGLVBz#naDgNVA^;-i1c^tSOE6e=n#W+*(vSjteYBxSg zd^YZ$%dTMctux-bVKRHV`;03f5vVN@oIwWYZLIHzV8ee#gNER`ll>=90oZQ`N)P}l zaG-wq11f-M|L?xWD*qD5dtZaPO5yc7xSQ2V8j5e_ZM(>?=_HsWSbD|j?3hcgfg<X6 z3NP~9TWS+;*(p9?PLxZ2yM#w!PkQsU5XATLU7q6D`ux?l2<>_#<^k}!sLQN46&YCa zkc+A%^M}$F0P<8rJ!b(BX=CYD<9^771UN^Gf1D#>Wc2IWwfW9;UUg&HnDGgVBl&X( zp6&6M_b}dKGED{%nS@pPC_n#(Kk>C_JHA7O4d>%})BHT7zrfMsY0i?@oQ06lFV1<_ z!o8Q~40KV04}T1!CJCRQ;z0bt1_v6T?Qhx9Pa#%!q>s<8kJEdD&W?u-2t5Qr0fDf) zVopmFzd9af$i}u#ub-0Ai={qOCojqta5TgPGTI5d_Y7RvNJQW^tmXOnWDV&2Gnh@! zRs(?(fJfHl21chs{`^hObWnw5$?93U`n-#W2vPHs6eSC78HB08X4ecWTG=r|8~`y& z_bs<5_`G@`$;ZYy7bYYKE3joN%2vBg8X6CuNCau{qr?;k=a{4uyd_JIbW<at-oG>1 z=>Cn#rl3c91q%gc_8_(N>%0z^PZ76~mUw~T`>_{JZxt&3z}bK3Rp@aySDge4H<aeN zY9r}N0Q(5x4MP_Vzf%O(PzwKrBETL|Ty*!&V2dld;SCP~u$2#6k04U$VNiR0H%<;W zjS%@1nHp7)8^7_}4#x7-LZjn;&9HwuVt14hXZi4pR8tf@gH@ZT8-u1GJWL$uJLqSW zEMa^`pE$!<pQ_2t_iWxz9|<&sAT?knv#x9g3nFqEl!QOoJfuNnMA%B+#uwooaX%3p zOPBS1j}4@&P6@xj`58bq&!6%`vt}|mHcU+$|5(3@)Le`N0CLdlO9Cz~nLoII6l-kY z83rQ8?30Y^TlFa%+-Df!Dt)6f2z0#{mGd_NdKf@}X0)RfDmNzy(U6>lu(l7dT(@o7 zNVP~<36V$wNirCSOm8uA|5@|{?S5u~tOlsp=C4`>yuh*-;~qpB@lVfmIudYmm!1sP zZh#>Kl1K|W;P}fgrGt(fnL$<pU<iRYS+vh(iz$9Er*)B1g#Z{ru-;tT>K)6R?pKmS zfun7fwEUwOWvHfY0tk%Rw7HsQBUnd@e(FKsht(HOrppp4<+k%`pM#wfVg7~x45jX( zAW3ISm9{XV?rR(&ho(JAUPN5PYFx0HU-2wLZza3jW;pPX7U7xlR`f!aCOIC*jRAVC z!}w!K0;L+?ub&OWH%=6VQJo^H0>#eecPH{syxY-EFZ*wwf~}rFxmhh)aqCY$!V>UW zx;Mc_WO!oL8<CD*6r)Kv`%Ncb66n-*FELW(79i`SN*F0kOgo$!p~hjnLGgf!D1BV# zykc=^;pb9bcPXOYi#)Ph9a>)Vk+4kBXH(aFQ{^bP2o)Nh#^sk?c-rAOHQWZP2`2yw zE@gC}X2m@{eq_=zqVw3XBI8IeSzhCjxpNNg$rz7g%lw<_T)KAH*yr|@EOUxoo-tQn zlpZ0rsfLH`d44hiH_CZOxT)TaktA4wQ-IMRaO56eEccF;9f7~LU?Za9nou+^CW@H7 z^Wk4u&c0y>06H2!dw<==1qr87@})1)_X@3fmFke3vZ2IYtYtbJZEo(=QR~lx3ybC` zE6vG^EQa}?sFiR)XMXY`bTt4RA<pH(98T;-Th`l78=6Mm*_dtx9icWq7MclOje$}& zmE`lnXxwFN8ZJVfET!;U{@EI#ymhnhtyjdCFGWhy3CeY099O`}hMrU>O>_cvb5hOQ zs9{VA>hcA^09<jI3-FgsA$Cj}Mi@AYejhm34R4zIC(%ftrTpp|;E+0CBqyaMZ-oL3 zm<=p#yj<U6!>wrQlBEnj5#m6_;vgHBTpe|uBF|UglPg%Ih{a8S8>A8YFK*BhY(bOT z0V;mEbeIB-c`g7M9YgfgfMaid`Xj3rm!@b*ot`*cS23dCLu9y6(XKzukDjxhf9Q;B zQ2*|Xe-Ch=Ujyb)qTDTybM-`d!#ruTMeJ7o5fqST^lR=5(4EmYf94CMc31-{vwGHB zIGd~Z-9}$gV#}r5UDH7GR8@S^kyRE!r!L}oNc`fjexIaFk-o0VI;2Fm9X(%eR3uUB zv7^F69!LF+A|tk8{g0ut^MjLjH%MQhSSz_vOZD9iV*D>RsLYcMu^y4>U)-QkQh*!8 z@s}IK@^5aCb8cBlofqQJHfw^q>Pk7?8q6}xwWrd7gsQ=ck|*%2+P-A_nM6A%#mpHj zw}pqH>55F9nC!aRiC5g*sXU{4XC?#8YY63iBmT#}d)*VSo*!80Gua|w@d8xOMG*>5 zgN6CCuNZas)psN;kFBbaUb5S=f!LnuI$K+;ZrYWUk)QWMmiv!#@8e90+1@U0CN?a; z7~B;V*sM4m$H%&%7s5HJYkhe32pDsek}>$aJig-E;x(`Ad=?wqH2>(3!gb>7|8&8& z>FEcf6>a{STK$ZEeC$Q6XwupvL_e8gNCuoy0LD&=VZ|p^utR$Z&sy`mw5AgD(uo)K z)Ufx9(>K@gOgHaONQ|v{rTeh}%{Oc(lYBTy?lG;vMM9oWBObF~aUNd50DACs)gdW0 zv#x&iP@Yy-W2`U)bXTD2I+HDxnI^fi4}MyUW%Q@XgKu-%cqEp7;=iH9@H+f8?LAmS z!YnG~Tv@De)CpD=g|9|}dp+07JM*&BTUej@HRvczyZHKxKHtolHQyNw4MD{AkL|_C z)c;>*#CmG6|0N@)HPy=bc)I=u(PNgj=7H$pypz&lvl^gzcy`>vW%;jG(0e#+cGj_c z)-1DA;WtEVtk?DKnM>vmMU3d3B1ZHVMT`J7*W#kROwfXVa?d|Y{}}yQ>-Aulz#s9= z&ABud%QN(KGG-9J26+-Q$zE4l(5u7vL7JaGas>3`zw98tZIYgj0LGWU?I7pc0N5Cy z&*cRNPyHi1uF3qQ;-Dt1&Lxz*sJibHcUbbzjn1#G7v0p!8Mj_gwI0*8-+Xu7jg`j5 zLiQTa&p$;5?y&H7nUja86cI}-bRjYlxvuGMpxm63#WFQkJd<G`oWKpESN7?8x=3r| z+Tig#(geWiN4>+5g`DHxyVcRZ;mG(xs#U!orT6KK^9u!H{m)P>C{|W8>kLymsPnfY zLb5n-y5jM3%ZRP)u!Gk$!m)Ua&rR$<+0dphe7!nc1<7PBTGvtUES*i}PF5v9B-Un) z5r}9ikrorMn<&wXz}HA#HD@fqOXaNsr5ejsDf?ZlMmUL@X4zDdHts>&w>i2FG1DnX zFqEjlBcb<?dIUtnoY}Q?)PgIc9eBC;Gkc;;0GP0}v7mCHbO0u7wC~Jl>h`Rh-7gNN zHx5BWN`b7Sb2#D;8rkVK^AL+#h8?Z`OB|^$e-%>G4fni356b7*1H;GslPGwN@R8{M zW`ltT)XUHVdM{`L`Oim)!4``h$X-ovgYw{xOR{DNDNQG<i_Tfrvbet^TR4EoRu5O> z2|09Kq*LC2qkG<1O3#ZdILOXyYAV+!AmBt|7-32$Jk-Dk5x0&sf2HIlhXP$waS}O$ zM9D;sT0mH<{#Ce^>y^$dsMh6D2pLd)F@frsV8Mk9C8mZl{hNqvl$pJ^{7ythi1|%K zu5<rCAtGP=CL)h9{7ppmfmehTF|{}d732O7IAjK4T1^JP*0P{Jh_OQYP*Lwc-4{Ez zt{E?;(Vx(C5wRqTB!4ejAxB3869M^?%(}=(YJCe$;D_^Hv77j6Ck(O$T_hfATN5BC zRiCq94FC`aVxB^~uGgpuX6xy(^24HF7F1;G8ac;UeseLc#uecSh!$%D^BBfa=4Tn9 z1jBa@xVn6=G*eRjRcWpURGM{jNsOm@!Qq>MErx~ThZ>%N*msTB=`mD%$~NxYpem~( zgo`XGc8#RKLKc!>Xi{|e3B`wX7W;xKckWX*JB*MAgC-5{mM9C-&pW*S1O6CcYbnr* zk91LsZ1l<xL<$B9_fYk-kJkHol{xGZ_Y(I_Fkiy+g4iyk7Ys<Eh~WYDx$s<8@~`mV z-4dTwJTZ_HiEwA$9U(0=@-WcurP<zLe6IpS+j3%CI^T5^%(xM9C0j7JD2m}NX<Yeg zUEO$FEOeJSmq0j;vSfN{VqjAQb_pMaq=zWx`8HvYF46G!9M&!fxjg#^WAK4I=-{rh zz+@H)xj#89eo`@R+Lp)lThv4nXbh{W4d2|WK%o&x3TO;%#rGUmj_$FY-gi^VfkzMy z0u4GfA#%VCqCrNX5mF_Rn+OSikG!FRp%?|yw*%{1q{RTD=NfSig2X}a!Ia&%jAB=v zvGQgQ>>o&huPccpw5C$VX&gna@$EhcvZ;`FA|cm;(TpNubD~Z<*~ytwSXVSj8UR6S z2Okt1r=bG>1ori*Hx0)&Z2SM3<Mq^44fIbOuV_z6$=v_2cLm{$8vXoV3(e<w3I9v< zG132z=wmmUe{M8?R~{1rppSbwZi7QDi}m-kH7m6^PAo#*N2hVcWfw5_M1GArKLT1Y z1i<aQLct1vR*V-rpcQjdG^EacMpM8Bul94x{rl-XLO5e4*+*UyvGeAp(TXIK=kg!a z(RX1)b&m{&rN4*nwD+M~v<Xm{Aq`dm4Bdu-a1Z#wEr6jL<$dTbtGL${Dyxdh5$oj0 z{pSTLzF`!Bd@pautt;Oa*)cvX_dB9zs9Q9ZnlyDlz!W*;&w;?iX&<;!=!nl>dr(9G z1AmT?u~dZSa68-JI@C!1S=tsS8}~-4@u`3zt~7^ppCyi#?{UH1VtA?+5sKs?i|g1_ zfvS_6fm>;<UIq)2YJ}5w(o~>b%{d2n@g#~wy3nFjT=>HCM8@yiZm#eZBY*nQCZP{v z6SPdoOPaK}43<qH{r!)?BV};;<R+L+1O+(R2TQ`;ua?{!vY3;rhZ@sY?gHOG?C_)7 z3+HW$DD>3kfV@)5$RsPb6`N(>%bPjn8>}P@1uRm}C}9anSz{^*;d0q(@dnjaCq(*v z1rLld*FAqzxNh5s^nFoRJB2-8!8{jHu!g=jqSpUVaiNX{FGH0IT$FQo0!oT4L6}Is ziR1hVn+kpK#7DHo*FPiPz&FO(iC}MU;rZiud~N_}cliYm_sCjqR(Z6dN?j^n{E9f; zn;fA+Z~^DkIDA1qoU5Cu<*@vyE9hZAuS!DCU~}C)pbmcC{5-I|sQIG~*XtV>>RF^~ zn)A*Vw3c1sqI%-VBG`J~TxbQ$VKj~TXw3)@2Eem(ymG=D)BOU#4(hX!Dgan`twErN zte2%A>h#!4fp$sp`PX{EPp+k$#oZuK9OF}SUqU^jBar^euTjfnzmr`xBarj;UhaH{ z<dXYynw{BwBt9l+{3`+zm?6{Tn6wT9KphL634*Md;BRkt?Kivjpx)Cj(SY4=+tdfa z7gyaVU1N5=$5%^dGG`_#7>jq!TrPz%-$}7-%8c5^=0(-`lPt3a(hc)-;m2K_A{R#a zrLf$OjOrOn0m-hCF%6DelP_*9dMXdMZLoEhpfegkSS^s<tlZ6D_5><!$TO-uQkm1I zEG}kSvW8o}=)dk+GuY@C?Rdsof|GX4V7+61oa-@84d}>;zK*b6%JX~<xX^|57HwsI zwhqQXQG(FB?q-_0?vKX!^x`h<PPrOgb$I7d{@7aSE&1aRae<Y0wZ!Bm?8l)Y!kVY0 zBMKf6T@NA>9v<Gu=#|S1rCa0W*jA=k=lyM!bOk)3_U~CXErH}rB%k*$?6iBk%lhvI zg)`hd+dwk5k9B#U%d3=QHcsVN-X_@E{c|~J6dYA#L<~Q1CDPV)T+M*UN=f6)U-W1O zr756x<9RI}?z+2kpTJk1YlBB!diE4(om$YJ)08wsJFA|dndhKA?NQx=NAPVam*rJu zMm`K*1zNd>RtJo}dKud|@zKC5AE5~9V$b!<L8xRjeASsblIqs5Dy&Ostr%B{+Hkuy zuJg0UfeA0<l3H)&&XktH<Jkwg+Tln*T<8DE(T*3;n>hbY24>9<9<u|4ySg^%ZSgx= z3N)WfnloxvMkWKiedV=E7L9VB4D{#WiK9)ACh)EF_7NsV9bf!kZ;q@#T5C!^Tt&aV zKJ>pOK-SHbvm)PSqVeo`o;%*-v39RM`8mJ0+<iA+fuoco&5g|g>8{N9QP~jVUKvmG zapwjTfi4+5ywz5or_bkW9TegAM`u13HtATlN6x+xKl@|F`_JT*>sHLE_SZf)N4_cJ zyxJtpnrhaemoJ!hDwNF4q17!+elI^mOB92&)M5uFOjuig9;1N_r^DcQ@G?l)*I6W- z&Dyl{{lavM@@oBRcQ@Yo<lT-({p!&o@J4A0iVx#kd19l&p9xuuWmB`J;9q|K<_U?> z0Xzq{Jo6&>3Mzi>5o_0)4!w*HgrD$p1%e)*o4x#yd7h^bp{E;6=hlL~)JsWZ@|0I= z0oz56qs##^YH*mKes#0vNhoG#4A)?bs)8Bz=mF@$V-dvUiw2I$322#d)FMn|s?Mi7 zf#sMolPYy6_q)D%#Kwx_9rRO6^~K9C@>TTQ_;Q^)k=PGlf?(A_Fp&(?z;)X@CXkys zaOg_6q2cflN@zMo3>q_s(!S;pnb0cqi!1Ha)p~`a;?IfwVvYx3Yv$KE1(jni93HEx z9|x=b_>P8^tqkbKj~ebE?#uY&pNG!1Z3<s|gJsIrNx04swSOs#aKe0oTzH^rVqvte zKcbS*chiMLK@lrs{MtRiWxQXz<XRKSj?Tu6263Il#hT+}gF;@e8&AhW?aw<S<7mFh z@Jq`~e_kwZWK&cathV!`z;;dNQg&oI@Ro1Xv{Zh2Mk0Ga9MsP^IF6%27$5&6bO{#r zSc(tQhnf3W#F1QRO<y)iqxh>pusNen<fx$wLrCMjj20DFl)C7;<<{c|{YW!I>FxXd zmSvXrYop~zFgGU&q6r30Le?jzWuutX8{U?N6s=dhRBlPsory!S)t4M8MepCh2NArS zR}hOMx#ff>@xR+sUtBA8246mou7n`4@aLU_AQx#_1a&<Sb1`W63bQX6lAD+g5F;5R zilcMXifO=}%?8wRJ<^#5O}o?xA^b3z&^hmLDbT=B5D~5#*Omn*ajcQ>_OZ^USwKC5 zZ`#g$xCf{1S<a_-4MMXlnNtUe?toO@PhTWpd2*I<oH)Ck>D0}-5leU4YFhH?lWSH` zBUp3Ktw0vmOOEJQU%HWNe(8XN1r^bso=HAHxI=zf4L`rY92C>(8CNb|`;O#|1cUK= zvx$Kx<euVEG$)_JnGP#v{ad+z$%}sM*Qk_K!eA>zaE?bh@tEAZ`OtNOfkFu94zOXD zi;P6i$51pOIKM@v2}U~?5Cf{Bi4caGM!|5cNr#4N=7%m=4?&DZ2aGSKs%r2Pemz0O zh;r3a_@wE*1nPNW@`xMbL^|BJ6*%%fY$FUac=iFcmm=o->(la3lW%0=T)~;u`jx&> ze#w%1n7GFX+#i@(iZ#1$d{~#@k8c*wCqCb|Vs{MFkswj8gsLro0PA0nb%_~cu0u`P zvK6!$XmB`@^VymS=jhFtdE@j}Y~gpDp}Y0XBX8{Lr*$DhELsrO<K4Hi1D3G2JjE0_ z<+o&@KYx*1U+d^&0y$u^bLnEj&-zKxL?O8j1;P~x7Ie<W2PN>_EBxb0nA(}0Q72Q1 zgqW$(-_2x6yCmFC*h^PcTkFTMo(T*@;g0V#yI(gw#RFc7I5G%HhKvKT4a0e&E!GZ4 zpF{YkdQ;Z)FTy|*aJGIxWFaEsSiU+Bz+I^rFXehDOW;bx&I~g!F_K#df$FgGW`0@M z4Rgz2wESKO-l{G)oyQc!Vo0=h-9g|{BYOypIBA6M7~a%zymiqf2}5ifO4B=VN#51E zJT|6KxYMi;wgEsA$t;Wrv2Tk5895V^XoS?kBxNgZ@ar`Ow<^x-;XLcYsGRBDh!|g+ z0ME~<a&m}N>WF%H@~J_SzM^)nvE@t!b{JW1i~g`Z&>o|q1LM6oK{){uaps$vsFj5A zg%^NpA5q~<BTn&5rzZh3KM&<;g-_KGg;MgyS|<n|O@SWK2LY~)Q1T)o(!IO2KzC#D z&F%_o=osVgoYLPo3)X~Ab~mw6k*KaZz=`B2I`C5l8C{JL5~MU&JgwHV5}zS<%7WPv z?E_iV$2es#RcI_NEA+3G<X{p{Dgqnf{D~Ot7I#JOf&XJ&imJMU%(j4;2K@VC0P*?d zs^5^mx}M&U&S99&cHC3wQxe=l;Dc|bum{E)Q%j<^AR_q&>aS~oL=du4NUke~pNpo( zGmQIS=x9xaPHV|5r=Sm}N|i5byHzLcJ`};_e%<wN#v2>mPC2z5`-@4|*lr$pnc~O} z<m{nTPnXIh?0E6NW@d5?m_s8_+`f;r7Iznj@PSxoSIt^9j<vvrV2Ue%L-Z>%@>ZrM zI;E-tutZJbyoi|bx-?rmk|QCmDZYCTQzqszCAqL>o4$)Fjg4*cTS?7KuJtQOJ0G3V zb$4i*Z3cEFMBDZT2kxZ7wJpHnF>R<LW>)#Zmtxg3MuOe_WL1vs-6<!<sh$<?Q`o7g zpUZV$Av6XlkltM49}lQ~p0y=em8gM>!IIgji@|<aGx&x+5r-5JC2v+rPJs%a$SNbF z?H4-$7sKT->24MkFg1Sn4{T#?)uElAF2~xBj6$f1ExH(#<ZHG-2~}9mZ)E<eq_FIs zyJE@6MU4cBz^5H3jw9yivj#)eqTrIkUP9FpDGw=f>hpQ8hejmAe~}uQy)chHdx;GE z*%hWS;u}fs4ujbBu9?WNtC#l(1M7{TyzjG^KNmCb+pq?ETIfC>0Do$FnCLVs(eq|z zn!bw~{dOh%ijV$Afp5{93CHw^n7PmAWrJFy!g4D+7Lxwya=fySh3{TgEWXp*ubQ(8 zQ7Ymso|z{nXn3D5n%n$Ci<aoy0-~7cTkNEFTi`xlB!os`t^a`OOLhT5&|=k!&1&Rg zWa(~|V<Bs*dad(3R%8=8T&%q+D3|lew>e9#8wm4eKGO!#$j_yPH)8(HN7-|&IJ^%K zQBAp%H;%Q_%}q`CpETyp+g(`|a7sAMOLI%Jsk?zrI*Gc01{wJCM~@GKfrn=356;<7 zv>PVpIMr*{CPiQB7msuhXLhUXS1fLtPbT*@V58#~9E+hiq7OKz1;=QxhzbLsIIv>B zx`_S~=SK$ig<6Y6=<8-nfWsOI!rBP>n8xk_Pm%-wX3LluX($xvGYA7uBGfgJ<Y*+G ztdKnv!@xuu5z%SqhdKO#mI*=%7>NlYJfc%UFc~#lfXyf*-c#2w1Qly@n-uUGUx>B| z*1pVkL96N&6+sZ^#Zfvw^}y5<3ip**D2*FNB~~00T+%LhR28HU@Fkd|<;@w(^+CNd z9`JodI-U+G+$o<!sfxY@UeIAw%2*A|00MVC$i*asln{nsjBH}-E%CMLDjO!a|9jA~ z?0~UvZd5?cC74jDHencdGI}^qEM%Sj2Kg_!(vpu_n<Mz?lrRzd6Ufjk=&&s@{D2f| zV(WL5<|zG>o;>@2u9D@$bdWD~4=SVQ*=s;D-g7BamIbd|e#HR7EIgKO_IHwoH|;Ro zpXO1^udr-PoPEH_mk`@aurUG^vW5;3N*JAuiBvr=pQ~nFDvQ55uUc4nfYPfn=E`Dj zT}(cI8>E&Z8K*9F98?<gyWv)=qNa9$H^3K>;`k=Lm<$_VA<PUncWTN0Ng*Qd17mFz zQf_JD>8l-E20o2oBetG`@DGr;Otc)7z<s>)`luc12|SRnYAEAP177>20z!X1rFC5z zMIc&mkA)6MxbbBwdZ_&;ge1o%=Ut%JXm1+!N`IB|rRGLbO^pUS7}Qyk`WiY-uAP~3 zBuxd*O`@ir9@V{u#(or~hy$_of$R{<-u3NsvGJAtNmBocS$_mP+ytjmIW-kpdG@5C z0E=79kwV_CyKAc@H~?)NcGHo6x9S)t*+xakIm@7kt9|*zDL1###ot`gaF(}(3>mk$ zRBC1xbf#2Jxzgt{D^*TsNqK6X)u<)CX?+@legLh9VvicOUz;YV(Bl&lB3(Vpd0{CS zFw(P%xMu}!(fGUuVpqdA%NuUKb}h?tERC&?#0w)658{UT+IO{46Gx-bx=96x>`r*E z)jc7m`E~ob5!&P{>J?r2pEgPy^S*7)f5S37Pj<SO%Om8$nRm);OVFm*`G_f%<Y528 zw9I;ouI(5#qwuWRV@y6anZJYr8rSrs_Ol86rs3KxGiE;33N&vC#{|z_HRop?ullWt zg&~mr=_^8%R<`17C>L3$DMli(W4nV-3j1dg<5s;{eOumoaHfy~Gy-51n2OX*u9tTS z?d8XOv6|e^L8&x~DNsiy+E3eBj^&dt{*5ZGf`A|SCo`ZK#iSxoGCm=*MdK3{rMDr? zonYf10vl!~jkmJ!lBZf<NP7WnKfRo8C2wWl?F-NBT*oh7MeOLiHP0?K27@h}c899A z>u;ga-b&zzO6Fiu@e9ch6_`60=n%oL&1Z#g931wA2mnuJ0Kk(?I^W)2Y+4_dJGS@V z<S`&%w24*-y{zQ~f2mc(czQjx9=wbU3F7DnXQE}3OZ4Gbq*Pwj$zx2A;ZWM`sUDb; z*k))MI5AH!^{%?5SdAPe64aJlsYJajB;uPSI|k653En&bp`+DXA_iHwI6<p$mt7MV z$!7tNo9SZb|5&7`S?qu*yTz78!aNbfH>v7gTKF;ACcb!F^}($EBW11UZt6)9K1G*H z)hKW7DwbEapcE*zKf{(Dmf6Ub7%a{ePah}Rnb@xb_co`;)p<U$#e?8uYyz9YS~rnJ zGp0RZ$Q<&%mWi7kKtjO9^?3I}czrfgtlpXU3~F$cp~7$ByGKuU|LwSv=zjH<h|+d! zUv4UItO-G8c_X>a6ElIASHnuEYIRYZ_kQYH=j8l~qGQ++!nnB(wc60lRl-pijP@31 zhVO8Ul(Bwex2(pBhfQ>0>jt{h^;g4jlKOf(9eZCLBHM<eDr?Fa461=~#TeKRrhTQV z5_)_%S4n%YOSdQn(5WvkBdf<=D%d4+WX8>Ass!DGZI>;PPdVB;*sJDT<)g=rp7nNc z^R;ZHiEY9P8wX=3E+5A!6cxn~IXgUD5!yQD1rFH%Njyg({ZHa~>#@IQ6-^lbLLobS zq-z2%EA{9R^5tlLMSHn1;c}1Q?FAs9sSwS}H7tma`Ka8+p4N}fxy*xF@4(OG0M#gv z-WO2ZQta808Ngm0-mSPyq|va{$C->X>v6w;R8CH8H}~80=h8U>D|&OejmC~rM2|k& zhF65f+qo3r1~1Ga;s%Bd&uau_<)!j(ey=A#mhN@xHUN8dzR2vuQ>)ib`sFK?ms6S7 zPFk0)QBg-D{A!XT2I%Oljy*sO4I@0wqn%Om`V94<`C)j45Ay8o#i{5X#LfRzexi+M z2Bz(ySq<0|KZI>HwLQO2{o?Hjfz}7K46CvDDexIGhW^qq;^;(ry#nYw3uV!2y=Ktg zypY#^#r`mcL;5^X58h-px`gtPlK)FR1pdr7nib#pmmNe6o39HmL<4pvQPme{^C^Kh z9zHI-R=%~R<?yAqz$(mQR)KS?A5)(Qt;Oe<Rb_)(-M46@HNV_;p*Vk{vwS!b19YPh zi!QE2BR$@`Q9|&tWf~ylt;6F8JtAt>rY|T-;BXcQZD0{W$BxAyjxfBVrJ4>u+Nm$} zgFlsD+z}D{%18CsnGC0gJd8-{-iy46!==BkZPT3nG<VtJ<!<9M4x?Gn!qhUqRO}6@ zhl<l`da@O*^GieI5ul&TJqz|<yG9l&3Q6s^Hax`#@T#x-tb{64vTdC928}nBmZ#)M zCv;B1Lch03s6P6Y*IyUGJr1$W7B6(`*5yId5lB>o;vgeiK(vF!nnTzGe{zI~faLr^ zmgwXrIEN%DS_Qi*Pp@EGbdHg>rQV~<aO9C=62fvSx33)<&koWFW4h1&2`?H3pq?i^ z|EOn~iT_g1HvK`%94qhYnF^B_<y}2Teg~-M@#r}0#<!&jRGW1#^+OVD7vjm^>RA?` zo}rQ7)w9?WKK(tin4{@@anJNP1i{b|n={FG%XIM#aN>#fIk><sVF<l?kWjgpLFuuH z7&F2?>R4(!<LG*f)nOPD=WC4#xWbEV^Q1Wx7hyTcBK5^q>)dk3AI9yuk&jk&^X>RW zqk4Ny^M}q$xyVP&ZZ<QlAlA2oE@gFEh*WHu6`p!oAqwBkT{`$~_S|el_ZqI<KX&!& zkP>(z^YuSd%UworWgUI5f^J`wGAKy3IS&o!zg|{dyKysLdP}~PZ1tYi{Pk*rQgRzE z(kGy2ZO?7#&fcH9=C|u|{mO}q4)l<o?Ilj0>2=x@gCZx)4+Ub2LK%XV!4K6y(<exA z8Hjq%MVibWN`ppx%OdUR!x?iMv`@P_(RHq@^o49%q$F?sNdRgTAc64$*O)fZN%02g z630HOB9JiMx>>oH248E#ukU<AhDto`DYNtis?KuLpg`4E@*xrLUP*pLD9@ep9au<t z?#M@m_Pv1N*@87{>_sg+_xHu+>Dt@6)93uaeMfm-cAw>^?{6H;go)k#TyDU<kH5ep z4<d&2i;jpPp#4DrO3<4Ogr7p;XLo2WM>7jCu|HRlbNxwv6Q%g}2Q3G{GmE9$sv35X zaL^z{ZKyNx!7`uSF29suuMe6SE>VmtIq9LoP@8GQAU?)Es9==n=UTc|fHiC<Ht_N1 zB*ns~x<%j^iG6r5cx~UMQNi-t>vqX?fiLaBIxl6oVZUW|<6+P|x^Rk7(yC<UU%B=Z zo{jDygltACnzdwSt$<NJxNwE9ZoCU{{SIUhQoX63dz@Db68EsKU<IEd+|?@bh?n9J z<WRp9jW{mLJ{0!EPCT@e$LY}J&Iz}4z!k{`1y96o$w^qleG_>x2zqcSronxORSe2N zmIbCL&IVWn<fu85MbbK7$a*`+f~j%wEwJtQh*H6$I8la%P~jq5t^5o{f6YlCjLg*Y z!zm5S@gpcDKw^^67JdC@TBJOiME}(|`ZF4M!RJ#Ozy{#fW{F%q&%MqgD#kT8lznQ> z@|rJ-`t$MtXo5qOoNA&*tKxder!}V|R-a+E8Rm)NJ0DaljC}k1&hNqvYi~v_G;h)< z(p|yy2L@B%k}8N!^qr!)De|LQ6h*lcH<3?$d0z=e%0+LQ)>H9*zT7En4=CGj-|94S zcx-=mphZ~;nvfBSt}I2N@{1B9XWW4o&qc=7BK&Nd+bY4sIUO@VnO!@$oXTmbbxop6 z2947eRC+MHZq4L+mfRVo7y-R+oWDYT%qN{4zRi5kQ0&U2UD4y=oP_0)0m`8re>f=^ z=A7k3j??lPx40Ep#6}rJZ<m~#y*DxU2y6wZL72&bM>eRUkiKtau#b<5LqWF7vpIB3 zPete3-5vNOF4crWRtkF$%nv8@fc2MNJD!#AzN`DD=1anniJ03FyyB#iz~4YddWckf z+;a;*++8Ps8@ex2z%8YT0;o&mE$lhF%|zm40jo4X^wErK1&FF<T+xv1=!aptaa56E zI{nd^%j;gt+5Ib*-9u(wK|%2-*c<aBCG|t5>oZT-8wb7-KuX5Fq#!=kt}O*5pznB% zVKELq)23wF7l_T+4n92(MDKSlk)2(6vB%x1UGhq;nhZYCx@MA{)oy!^ffBi9)@Dim z*Rd<$7}EDQ=z&BodH49gwTzPq#I=l5fKk5x#T7Ec?{@)*U6Dx7?Dgd0?l=gNw>{s_ z0|lHHclQu02Y7=~_4l<hAriJdKMTaRjOTX&PI>AOU)}SoD(S<b_<eoTOu4`A#{*aC z_f5$Li~c^6QAOS0mIU}bf0aw#;n?_=aas3m(z7dhP;%GIE0@f{n^02E&qnCP-Gbb5 zJ?cjpIka<&_r#i2wxT)=eOtMMB=O32x~*<XB=N;@%ZILU8p;}AIDN}jZ@1w)tT=c5 zb{}!<Cu_c$Ms_a#gcp;9NkpSIp1TlqteaZVIqjP^0EhWPqFxZvxBeDStehj>3c5O1 ztqIQgnV%7(v&G}NPko_@`GX>OR0|V$heAgZyhq3RNcyIqPurO-E5GwBZpYijN7TKW zxe`Zr%%lLROO?-hIc~ys^?~7KX-(*Uev)F>B1y@zN6#3}ntox7FGZ*iM98REX;iOr zO*lN?zfO?2Ph{%^Oj)B-4~O-_?kS|$7QgvD%!u7*v{|KY2)&vLv>*)Ne)9yqDyKO^ zaG-JAOKM)Rc0jwcmV?LCKHh{6lapZ8&cP<g(hgMj08fBi2`E{vD5I{V+B%s5&#bq_ zDkKcz{G!HwtIo*1Q|n7<UM=Fsr$rW`v(6?_;<m%D+`j6D)K+I`ar*FZqHi(!t4|jh z+B}GZ|B^<zEz_}O$i@q-nFVs7y7VquQxJ)#LXW_Ro9F;L9Er6K`peJC83hjmUdA>U zwtg|v-b2@>{wJm4>x2ilA=R0@(&HrL{E^CY>YGIMu*!)0nE<X~hj@KWg>pU}=bu^T zNf}qDmua=5{toF|Wm_^GbvP(yiD&#`%Hf}2+_3@FZxSLcbMmO^j2!ch9ort0FJUG; z6=B<qi=yP>zU~=gw?r^sI9EOJYy|J~o=yPQy4P?i#(@{7(sofwb<s&%Xd@Lj1Ief~ zc!gpnOuwes&O2i!n^KOhm9(AZF@V>U)v<Z*COVm$#CKE5HC61i)<~d?3~(3$NUgKv zcEmkhs;Gyj5-8kUD?>lDMw7$jv-#R7g1w_?R3?g-uk8`4-rU$R3eOis^+Wet4o`7} z`MchIuP%BgA6L#Pwu8=U38&xz7pp=UEx(zp;nN@iO}4*twk^}(SEg7NWl$H(7k?tu z`br)Z52Iz%m`Z0XR^A6UeBM*p*%fqen#Ular@zTw4ek$HmfYrjw`0*SYfHY0bH$z+ zT=GC%bQ@?}y|lCqx2(WFj3$RUl6Zj7ECi5wHD3h6CjQ90xObVC<Kj}d6sV7_DCX?M zNA>N5N=ll_<a={1U5S-7dzId91x5&*N-4eVGxpxT6v_Wi=TZEd&fA!H%cX@wZJe@F zxc?~wt!Kg^bNg^|S8&Hn18dcS_xX}vCN6?)j!9?FB9}Hx>XY2|ef892{T6p~-?4F) zNO<cF(^B#*4WF^{UODblEsf_i!;#DIYM}Z(@FA7uIzHU|`7w&6o9cmxT&|0K#`GAA zs#&+JVK=}hJ!j3J09ZoYV;;fB$3MW^#nsONI<My=C5hKA&cz>{2hR7d^YDaV!2vq& z5TNrG0Xi@BmZyLVpz~Bu+}l*1-gTb($#0!k2he%yR!n<8uE|ghv_pEiiNUb}E~!IC z2*s0!VJ$@*x{`HjDAM%YHpwsa?^OrWV`Na4;QJv_r@o=vba7oY#^W04!t?MwgSJN2 z!b!7uU+EOe@>Q9?rm2_ZZb?Cwku8-o<^5y=R3DB5Lt9KPMgrNf@`E4FYa<n=Q!M>> z(x6L@2p)HxZ5@)oE2VcO@~bc_4k`>~7AAbrfCCt-!kR(88{|P;&p&2I?`~ZdakMwI zo<g0M_ez%MHP^p{y!kn*+Mt=op&ji}&4EX-{ZGDX{3=UX^hTPF>uR5;eC0=Yo4WKl z<J%@)4UV9rh16L|9pa612NUR)q`mm!;#^2P-8ODWo%N%vn6x#7uFWBfca+}uDWN2o z32uA6ubAwJy4s5LUb9-V3)Z`)UF{u3^vWkSUtbJ1-BE?{d%p|oP{0Z~`&d^T5nNa5 zIJ*OO(hOyKKi`e>y%us8)mfK^R=wrzbDa5CcApht-L7J`2!YEd!l2zD+LoCsF)Nb5 zgg?roy#$!5EYB3)dN{jdkS@<m*2ON>o^7v9zvR+M!&6gWy4?5@Fiw}ZgI2UU8h4bh zftwHWFc^OF2rel(QIQgOb6T`|u3S9#?rx{qm;dw+9xL>ll}BL_H>WNvo)V<s13Yzb z3t$(Ger)_1n`r2(C$Tr1_s^%j^_TWF1azHbn+ZOcM{7jZ5F6^>&T0veH$WSTs{N}r zT)n)B{aYJ$0komyus?OlZ*4e)Eq#t|@<$tTqW#f^W&e9^NCVn#dFtOtq&BXbj(vL? zS*iI|Yr#T(dErO$&PNVCEf;RU-V+?wOXvV7efV<V>ON@V18pxSLi(X0A*qx`H&XyL zi!8)+M0<!@u5jI*Z%9P!sTAd7gefy_CgO#!7H20FV(b1?_TS#>#=m&09b}_4-R`aF zk8B^<s(mBoBwp_WTb1)Fb?qlO&BCnt#?nsQBt@-xTM(gtl6*U8wAyE7b}-)KUXV@; z)4&b`17P$B<)_&~l?6IgG~ARR(l1jEXO8uR>k2^C`Is6%Sqr17a@~_r7CD_enJSue zxB!jmf@>uMVI?{}`WzD_F#4bZp7?g(Esb#l#fzf@nH+bbJEOpV-iGcI>D)%;5z6}- zEO;lG)`JYC!Y|ZcosJ}yrXZ+!CpP>*Go5i*fO47>1d=I@LHZ!=;F`+4opB_Z=@|gn zx19DrJ#KG*<;3TUN#*R!EzBe!W3_#QETCBJkauQjYO{87`|@SJ+xSTRgsoE4Tu52W z%F%&UDcXEJRM^7QYCfBL;|-Hk_<rTaw^|K&k4N*oJy_~(qCzpWFcY3PVczCc^sYm| zoV`Qf-K^c$vDiKSWQu6Qt>Md>m1s{K&&*<o9a1fs7nZh=TON4V+O>f9g2B>l#{F|K zzYc75pz2%40(;Po!0gniBaT&hF6$GX)r?JP>+21_6$00Mt4jM4ex$0Hm0K>oW|+nV z-?B`fLHUWB_|F%=cnk>JzMukZ{Bzlt=GD~62fBZ-V;S2C6S%h!_M6BpyDD#|k`H!q zJPywpdD!NhTQe4K`C3~3a%Lq0e>=1CAxpT3OZa0K`wdwf_^s`)QVfpgL#s}LFEP@* zFUz4sWLY6T>u0%f|5<vLDM1VrEHc~xAM!8a<kY$d!QO2aS4b9wD@k<T`6GRQlZxSl zX*cSj88}DKwKKw6ndZ7N4T?GK@Mi=CHJyf=2c5HItD3jy7UIggGY9(E5W!#MKw)eI z3-*CA!bD&Mmdu_yCa9V522WiKS*i?)kU5^9k%gFuK|9;TBO9*4WfRSdAtqPs-s4#t z?&eNo#dZ@M=CSwe#wPnExcd|*&el_~;A_Ap4zs1LnPd0B2K2DY1W%274p<anm4=`$ zl=qeY`R6-hn)Qt{EXJ63N4C?!r_#wxSQx@t?#yyY%27UM0CD8qTmPd|yLllWsw3X* zSbSQ}Shf%Ml8v<IxCTukT&O=VMreqEOd;3>eDuE-0`(4Z1M7XPZ)cV6iq1p%>7R|E zs)X%KIiuh&`JaXA&z+cGRYZ0HUHUg_oS7uTErurmv1+SjE=DE31rL5g&Og|{q;`#f z84J*$pixMK(DCGbYv(#R3)6486uhtU94&e>AD$GE`G~=p8%UjhMUdH2`*Tq)-V~w& zE`P(BLJlR#^u71tB=ha=O>t9LzG@0`)6-C?iO_bzJVM!rOZ;&g@BJhZ$l4I*#`Zk+ zUk`GD-3Bs3rxb>@9r9v=YOa3S)eSN+BT!46gT5(?7$Lqe3)lm`VVCRr0pP4-D1i9p z;}qH0@nmRD$IRf1%#28jGn*Mp*%`MB581AUEQpp!q4KS{<S}O$fH^XT3{z@XddHKb z-aFRt?j>Ks-@rK>0<7dzkpo<>D)LF02XCy^A-;I9`15S3$7BcJxLN=7;lW8$V<r1} z=tD{e&#g8_vt>y8Qu$W;dt)){w^lR`yII_yFPPQ{1V2&n!i5`%9Hu9>j!J~XvbJI+ zq+LO$Ou@u3Lr|AZZ4{!%SV);9_br+33J^3fU!XoncLh~$m_IT#rb@4J88aN98NfHG znKeK^Au8?@KUnffV`oMr(J<Pq8bM^32-nQ#an{GY;uWR;KeWANRNQI0y&c>gf;$9v zcXxN!;O-tAf_rdxcM0z91PksYxVyYXx@V@lXQt18y=R>dp(LcLNV3*%-}k=ueuh7M zjhM!kk5DH?bg=2UR3chzmz~144<Kn;xZJt%_#n8NVfC~fUo{(lW@4M$n<6J#d+Q1{ zO-Zq)*aq-d3D=h9aHy{;em)yEXWESO+d46SvdJANBAUn4i4{-SqV7)#%|qT=!RFai zKNw_IAJ9(f(Qx0iir@?hSg1}!sX}Fdvp^AY*O5h^I*tK;;s#T{(3Z-y+zXM+JUs27 z>br`#L(pHh#-+zxJfsM-mrf6K`CdMGuE+c8sAbLE0Q&0KI%mdf|6=-~#$|X>>Ms6i zGVb;M>S^+RXY#m`#0Nh3AO=2RZ1O5smXS|tZ$GX}e9v_FNn7&P_yXK=p<g5RQL}a7 zXG3tti%uuQ*F)IThv%CN7dEQ~O|?~TFpXFQGo8+gNY0D_6(wBwO09Mq*I6vqs!FkE zg)%NH_|r_6!{FXBm!i40Z{TXjqKBHeH=eEs`c4%(&fp6cx01-br`?25S)`ke=1i>* zfs@j6GiH<7of|;!5tOQm{9`%4=TG|AzmICq)SuZq8l;maWB?tvqDlSG*rD_oVDeg7 z0{^g@$%z45|5E(TM%xv83d2I}ph?tf{G<uB?D}I%q+tV|gz6!(dc~<PRO0y-50w^T zzY{Pn@n<Se`#JI-wTsm#s{<3L{ZSdfNfU8a-$CoeqjT|kvV=O^j&#^^edQHTcOXr7 zrQ&QKmSRcnY0*ka?h{GYi-Hx3o~@mvq93hAhB*M|RFm%C=_1BCYCA+Fb#dU)crK>+ zcbmI!FiV8dN=zdFQA$jcQnZkW@Ig_(4sexah2RKO*Op9wyN_$qiOWR?B9)j{k}nkt z)0Nq3<SBX-V$6L~{Nks@(#Q*J1H}5|Ul7zKH^p{Oy0tn7Od8Y`Oc1PRLWL_EJJuna zgapiT*O$2#JWfLlTG|PF7Tvoy25Q3K=c^$~*%^aa?fKXM&6C<CZ_ux$Z<?)dUUPOU zR0%rP4sagw)fexCKOxOJbyNCP;;nicjG=9>(M7Zx3O|9_scFbTn0|3EilJ42O3odA zyvzpElMDs3Nu9_VDo6cM8i+si?*K*Fpw@HX&&HIZ(YoeF2okA>HBXB;()Kqv0yq<= z5gLB^B`qlK`^!7&?@3i86`yiL@*Bv^9+MplOOEfwyNRloEqNeThXd$dY#y8RsH?t{ z2LN*w*D@n_LOY2kQ$jswlI5&3p;}ikF<3v;$yOCjv~KQa)@TNolj)t41a+9H6-Y`r z6U+gjh=I)sppTp`-E^5>3mo9eDG{O`mpd_(Am>X0(1mPCH^FX3$|*WVhhS8v(oi|k zsWNm?A>l(~X*h~TIVr0weqXqnXTm&dFPL1KJZq9XYbWD+I6eW<<>EDbCTWp&d1b`c z=?x4wUD%kXJAAeAM2{~auhV9(nsVGPgDCg$=X^#_(ccDN^#`4a1$~{EF@Z@iDnK6P zMS*hA(-@&cB7hZ<F)+b|MS&;^9vO)xj6}GNA>yYVgk*4G8w^_4+prt3)y54DWi447 zOinAAu$-wdD7UM@PY|{q`mos#qC^)K#$`_r4m=jEbjqIh=ESXw4~i?IDuYX5A!;E$ z!$J`C`X#W|mEpsaD7EJI8r6HQifSF2jeCn>UoTr!`S8f6^-eff&7C%i<=N6mi<&GH z5E*k9?iY(=RvG0-AQKrI2@h=y*Jt?>0RszcXTgsU(r$q<%>)%gqDKt9XUqlTQWjPX zfyBh}@2Dpe5=wwp2@a0QAvB^6Mrl(YFpR0efc6D^0X#<T!G(nDAQQqp0wET{9g>G2 z0|MM~7sx~0?RJEkc3(Ie;rLyRYJ5tZNXmgXDh9zk*ifhrqhCWOAI4?<2$epv0Uze_ z{1dPkHfxtHgz`teYqNDG!(o)hz#<LvS7Gp$ht_VyLXirT)1l6`Kj(B;yNVJ*1OJ=r zol0~JFM>%w`;W_P)d-i&KVIQN3S;E5OE7>u|I=m76<T|4Pm84&(i_BSRl`)W4zu+X za^U27fsJI^gXK?GDiW!eH<mycc~>g;$>@D|{}+lu07uY1u$8h@<_57eXVmD7v)J$F zIdxc~WPS0PAQ&UHppAu)l-(h2Bne)*KiqXa3x>6t4u%li?i>($@X%E8uxbaf@iI3Z zm*FLHZQQEglrJg4kYqT~N4R9ehs$d@@rj_htl*uJOnLr0wdkUUS(-2Dv%glMa=t#P zdds8>S4{-9ah9CJET3qa3!g!US#*x75Wg`Y5fC7G@<iWoJS_LVuFP{<_`lwlI?s7; zJxxj*9>>)rosr#Vk-lF3ywAEE&RW)yc)@|4Bg7?7$@*E4W#pYWHc9FiJ2n}2-<)tV zx&vntyfvaPvW9I{=1@KaQD3<}FPb5{U0MPUu~4Dg#AN}OrnZpxQap#t`q@>k)wy?5 zrS+S|nt4E(OP+HD{9`+pGkwc^C1-$TgC{9e*6l`2;AGrcbA5`=rykQn3-e!W<h$_C zB@0U3;u%&msQnc|AFIfc>p33JVU)#T1(>wL3qvbTXJ4|vcUqPPcsCWngM(D?9n@nl ztb#KKFMWBaK+>vvr0KVKPPWNYuMmryYXMa~<kI&yZgZO)c`wY6!9O^(Iijo00^LH* zdL#^B7DZ}47IhWW0n!IRG&64j|NR&`JkNzla)N|eE{-0J`?#I74i^%M4yhnYi4M}? z+mc^&;p)t`x0ZrKl+=X%Fh>V^;0{hw`ZlRul-MYqOQF7<CLX&?T&|Sjm5{HbqSLSI zg&go`QIz2|N-Qy?Dl3Zzr`|;);P;8LNhmy^C9lP&%OqAr(@#DtxmoZNlBqTzVJdi+ zjC56CY2gDky~FnIo)O$2`;nH*MPU9z<A1nXh_8T4<{7_7flM~ezkq=PYHiXho638v z@>dZ#f4_)HuC7V_^c+J4<al~CPD$~el~+LzltrgnGP_KyNe{!Z|LZNxb|nUq573Ir z{I_n60vybIDP`b7vx^sQv+g8CL%+1bOEN|(uolWqh>L7h_2i4BmM!$=9q+9dQX!Yk zgL73rgBI((pBGk@$3Vkz9k-dOMiNyUe`M-%j2ijgDc$T+Nmyo)6PX`Fadt+)cz$0t zf(>qc#!4PO;$8S~Qar+Zi}n*+!t+%o28fr*Z!*_2OU&u?hrfxl`x(`OTpWfTrN1yr zRv?j^AosmttMJU8)Olg*9co{z2lYcbHm$^UK{YR?!6#sx$DS5J#S<SGU>b_s_=HCt ziRM!>@sVe;yTSaDD)cbu7?E!=9%8(&K9>iQG8eCw<B1P__pez)>v?yt0n@68$9W_# z`$A9A51goVxe>2N_Q(>~RVAf64+!8Ahzoq4io$S-B(Krj3W#kwaZjh8i6vf0hdc90 z=s>~%UqEFP<D?`n23b|!ZXF~fyu(6CD27Q%oAXIb`QsCI;^MRw<M@C}^GT9^e~@)| z9T(@tM=c>iOEHW9OiD3~4<Y;epPm4U`PVlBUe_?2gw!2+gpFT<mcxkTbA$`_aR}-6 zkEjRin{WGcKApOjH1bec65E`<+S6$3^kR<b?)6Kp*Ner-)@kBC{Qdo=uBA%b1M+Lt z9HvbsB)fDuW7`Q^JtN-RWxB)#tH9`c*L0f$MD*=i_{$bJ;&T(nM{lr%&l_EZ?eg4r z-{79PjRj5uCEsVx0)a+e1qvOM`?v(WD0@b3dR%>_@)APHw#B`!F8#K)Mzt7oR@CO9 zwl&x4Lo`T>+MR{ko0_6kKUtQ1Bh7|J%o(`Ndttan2+iPOIM>o1E+t5_JVK$Z96nGH z)dGpT+tHT<wc-CxroT_6=_)S>?fm{27E88}w_&JxY^Z6{R*#Wse&D`BQyM}n#8Ipe z`IaK9<YjK;TW6~LbJ_GmQo}A*o7%y8!1d`XP}av|ORc>q?Q3$!)o%rBG<v5NpAU78 zzyH*6kJefH=yP+s2(x;1V{J&34a)Tbc8J@2+sV?fYQ=(b+o_dNR^<Jf=3dibbVT~Z zbMWHou!H84J5;veRq6lOo)OoX+thO#wPsEi@@gS{c^cx%>@LEMQ3LW=-KVwXNhUGt z<!<maq}6oM^R<nhmM+3H!7V?%lkvF3hLUjGn*40oNFZ)f_;X_x7F?srAoar8ty62V z)zx<~v!T@S(0P1|1N~yS<>$TC;?=Jf@LH~#btNpGt{KzCkB3#;HF91ud>#+?3X1<5 zg3&`6gcLns$1p}4b}}rS5TG|Wp#R2rpKcmZi23eJk?KEqg(ISLCOLzez^@b|AlG%7 z>IfVL3E78xz)bAV-U9St+?U(~2)x2KA4Pxt+hj`?-RbVPeZ$>$FLye<wb4l+wOG&l z3!=6*NIJTnQ!qlhp3(3#(iIl;5w8!YDW@RBrzxYJdjPp{n!;D$x%Usbu|s<DyWF@P z+vRa|pL|mI<q31>Uu)S&oK#~<Z72g)1@(t=WDXEQht6+oV%PqsGOo=S!rTFN1ypLv z*$;jZlIWncT9Gx-b`TO-ZN%R|1xkMCzqbd!O+tm>!Y{RRD>ol{4zxNMPlvSv<c;4q zGbb#v3NR8|9g;wpSZEP|QyN)j-?305Tcnd>S*TnWNCEarC?b9(@sDZ6;cllkGiK`R z?q?p7V@;W$En%`{M{@~_&ZvMh%`%8lRd-cSQNNasH_dRYNcypa(ni0Io~gd1kR%5p z=*$e}!z7gB9knqPSp4#Vhwv1CJPdsLIP(=@Pc_d&=WHB+J9<($?38jiJkqV;@H(us zZyV41dU@t2nY&UAd%M>)KaYo<Hu`LrN2cViEL0*_Znr~o3JgZgdR9cz^?|{dU6Fp| z_P+DM7bAVIyIDq7MjfeCer57OiF8vvH1MPQg#;Q8kC@6_e|38|yv76TZ11)(QpYC{ z99y;9Lo_;HceoWJTyV%irLas?9url}T-WxQRRYG|D|PemQe-;2P!o~P{Nyj>Ca1nl z&eUpt6X^00BJ^s}uX|krbKt!dU7<PBK-H*c#vpaSk&(sE@C#TYY@=Wg*<4nX@|q9u zB)zB0jra9G_{%C!S>QOUTDGGHZEnSvc6{F18c!YytDy6RsXhE`RCrf#LZ@(xAV1l{ z9@Q6MBlv8~C-SVPG_YI(!)v{%s35T7URi5*)L`f~VhUovW(Wh}(-PvKu%4Q^u4#^+ z0CL>x0rMF;3Q=ora?%!E%W|NR07f#3$qEwL)|~9AobgE5bX$*(+fVL9je1Rchm~O{ zo>i!2R~n~Cx3I))`e?G-0q3$*T&L9dT#mwOa+QOw)S<w0;yVvQtM0?TH>Q19=Vq1j zGZ4j~!0lma;O9&mTsVbPU)ydmzA0F7x@QXapUs8BEkEs5Dfa$?GCHFbA5iMkV;tux z=6A=ybD|7}f>p7tjK8nTdv6+S?53ig5F~ScF76ix+}~&KAO()D$-vTkGP)3zwISWc zwr6jHsB$SHe;f`SvbH8_N{}R|Ss2setuDDkwuvXI&>YLi?DXvpIvc`RogF3m=Q4qR z@E`3iFM}>-S5qzJ<rO>q-Z32-MC@`+osBz|iP*A$Uk67e-ft|;+n$Q83PY`?Qn3bZ z2)~;o_iYKtrqjQjbnF(Cg9aQNB@H+@O5^O+=T*y=myQ1Wvrj^hpMR`4L|7Kc7etpt z5aX<MZ(9$(y4oq5mDTP?*IANbw~sWJ&K;~Hz%51~BC-TjxW~d1b(Ui`;F@0-wdm?1 zHQFyesyeTY)bO>=$idZ(RG;V+e^wATv)cO2?mGHqcYQ>Y_K=nOW><jA7mEv_sz12k zR`}KI@RA(`Z>_Va;!b2H>~p`kkhcKl1=D(r*fl%S03h0hc|CEKhp9;|j~QryFe-kD z$EUg2cFM4x<HpzHuzuOFa@+AjG3~%-v~cG(nlVQ;;}FkL#0$xKE+_N8rD7t)w1L}2 z%tP^ul(z9zpYYmET$&Yd(q{a|VJW|P<%mGN;)5a4WGJttpKPr#J-+wA6Qpppf$}on z)%fX#nSY>i#?}`B6Cr?UHIr48ucm_vFs+oegRg}DoCcf#hJWwbSE%`08nAlOMcoJ0 zA_4VypJE9tg8lDYt8c$ttMb2bt<L|WYnA+G*9wAg`tMyULp4~UX!gk|Jd6Kz8gP8{ zFKNIGx3@Ili}C9;XB&9XI+*UK4W_*2YuB!ZrU}@u*RA|CUq7RGm6a~pG$fpEbY{3< zzm~B+t(TUTSXWFd)SKjiNtI}7Db1RcInO=GD!4m!%?H(?08A@rJzc=5w>3k<gOLhf zeyo#SxLzi;`oOQfJ|4@T2knAC=Vh;YlIL_#wEO}ZvDR|r0-KedpmN$kU^d=ag11|A zCci??z;^Vtu1$cRK)*vM4O|7UG~q4={gnrtXaM8^S?26ipNqqCqd}aEEjI*K8)k6X zSM^@1uiq!F;`>v(?qOid*=J~|PeO$3e|yi~y0lbnfv?ZvIIC*r`CQwKuoY~?6VRZ# z*vZ!M(Bo`eb^Ej?JEZZ_13w=uwzGSm8B3fcPz)%u-bbbi^<_K1r~|1{XhdDg>%#>D z={S|@(i_%gq?E7Qxa|7fwBj@Si0(sm@n%|~<F^<4RWj+qXR*yoISg$~J~*f>tB+nj z9Jd4UQrT^u{T2vZ4VJMA&YcV43pTJt`$@HkQ;(IB>xsl<+L{^1o$>jWkkGTw5TgmM z-6XhUJ%cPQRLNdSsD|Iivrv5YPNwJKy;W0zm@yy$TOvD-4<1e-qyHezI0xiGLZk@i z4Mn5?w+3&02#bN>M6N`6d<EJ@m=Lk?p)D^pe?xv#nthNVw0nabBs7z7=BrSSC#mcf zBxqT7&i10y6GJ*t9P|Abb2(=vs9S0wKe-Puab6!<+Ky2jd>r#8c?FqNL)g8!y$RUl z{Ke$>_#`bhUQRjX+Wa2Phoa5?YBf3YJ)L=eJrYab$<Zl7mgB?rBClFsi8OQgL==P` z!vCttg!+Jr8TcKVM9}906Nivcp&v$>aOqGA&yuE_4@LUww5<SB`apb{j;7QGl7M)Q zh52nuWaIpF>T?w9LDQV>t4B8L=Zr($vUTfd(Q@0Zc7+AVuXkkIHS;b!`72%?FF}5^ zv6iKqK(DabhwYdd>oceAkoZ2aURNSdIF3afJD9Hg3oHgG-VI3u(rlZ#7qS2Fl{hAJ zOKz)DVU}N=1m?VJhS*uhtfK&lzkN3VWr-8Lrbm{`pM59s7of57zW|NIQ7rIE_}TFJ z?S!1+Z1wcom~$$_PO+2}cTtFfmp)L6Vw-G{ZeS7+CsGBMFj0LWfgQTocuU0XY9MaS z#-M@)TntoN1pL&+YxBc_7-+vo`GgLOoi^NmOY;fpw+T+(31Zru_fb6Q6Np8h-2*aw zkSS<%^3V`dl)KmEZq@#V-6o$a(Xr}yH<XBe%kQ<4{+{0}ZW8V~eRGTKuWXV;g^lbW zt|uDXmC?aMaq@;IoJI|o@l@Z7>7TnwjKFN-Vy2;W>8hVSOd$k}0#7m&YSlBvLULp% z{hr<H-;xCii+2a^(Y5liOb*1CAO$E%n(E>=fYxr;D3yTxxq^ia2qq?r7&6gzOQV{R z*gWI?d#WX`e{qfJzj2MD|1;Ov^9Qbx;cvLcGxzlaS#~4xIL~x)=y_1<re2N+IeDa^ zVkd!(+BuA}cdjvi6UEtEYai|!_-XZ{d%@o;1*y?F4uq+J1`!0UmPMYs0|e^-r&aW8 zr?za<4sLfJ>;cYsjc1oTp6dk9ryl=9^q~{hb~j7HU*c|x^pkW8|L{TggmI@CGgE2v zA*eHIONaei7B8TAu2>gvtkIvcJfEXiLZd`-ml0dcf1Eq35Q$8k50MnM0hu%V=fU(r z+0?U@h?!y`W0E?trg$oSt_b%Al_oUkU9e;Mgt;Q~;S`q%!!oSqa;3a}cEKlEIBB?O z&fsF#s7)s{^njM>9S@yqE7eLx$N@kO_kx9+UZH*D=1rZU)hHnFE^m*NE|eT8+m~=x zu|{f(I(2C9dF;PPjePv*Zk&fDB8As#t&oe#PGJX-fDP`EfJ_kbME5yB`Vw2B(AY&Z z#zHA>NTPmqWuK`n<8Oi?A3&PUFF9o^nrk!|LSd&!pm>)E++ijC(Zp>}*4~dSAbUd$ zA;kU$P=J9*PBF|yUnucbfYC-gMk#RE1US&ejNheoJK68&QeaT!xUC*?{_HF1!7I># zHo91$$CQj2$Pt+_h{cE-mveU!jWz>i2>qlAz;{vo)qnA#ZMC)`hi*^()_;*kVIAm@ z9m!4vzehyTt5H+zozO@$#<`|iul;V%Tr=(?E|_we8B^>ka{}RUfYT6w=c2U1{VI>w z`&})Jinr1?Mgb1`MK5gL(WU*iOy#Hh<#pSqlz7=DJ<-`FxHdNtA%(EkNJ`{Wb22Ou zf_ToC=GKLv>$a=PtQgmfk5u^|aZSHeLoKgp;?q3Vu`v2_xcWd0(%zLE2xEh*9u}jT z<L7&h_t`7v9KyNQ^&b__B^h95-UX>GBH~A)exQ(+#vyCex3flzCp+r!I=+LN==1!D zx4$jVq6az$4MV5dHjMeTz&DX1yAnSfx%rLh3i~V5Wg7sA{)gz!-L$TZqidr`!#ErS z>)6U1aBR2599WdzHVy~tuNpg}6og9a=Ns=?nS`l|X8(Xe(LYPv1*pGD+_T&9S8^B- zFql|86uxK*!XxUUVcyQ?wJUEE;~bjC)&REMVu`r(0nNQbFY5#_r(y6g96nXfC9QPR zh2&M(db64)T@&m&kKMuYgSIapeOwA`u}pAnzqiW6@bU8m!L0;rVrA<1%OFs-Lt3EP zPB<>5fKyrDg<7#!17mj#T=t2yrVXZ?p4o6)chkka=cX3LI)@nv$+{QiE*%V|$Fu65 zEOrgf>Y5Vt8zG4BP!~<Txts1O{1p8YzW)(P^)a(*uH*JvE>!iAuytTi>$qGuRyA#m zqk^weHn%r2=p;^TkZ5r9BU={Pmu6FEBRc7wNb2U2!Vr|LGN=a+O|vaV|9)J$K^697 zcQ1VD9jJ+YsxFB_@V(y2!~$Q)+wg;j&mH%;I5J8xrAqbCLslk~8i0a`gbRys13-2s zWHbiH>`&R9HLk84&FDqu(NE)G-a&Vt>U%x%<m2<z`Q&P7_1iG33`v8Yt;X~+=>Tj% z1gX`{Et6;6qlS60W>WH1p}{BE{il&j){}6LPv&lA$Mvjr3)kOA7_=wX%2gkbp+5h$ z_~H&&4<cyi$p!Jfnr_~O+0uLh9_L)hUJ6WjYnS`G%T$N+vJ;OH7bY>37cf!h5{snB zLwuB0T}1ajw%{A_|23c`t?4buOl5PR<k`{61A}aH@MH1d_`B=HsreI}7cKK2GCSnN zw+!0f%Uz4#R4(e3ZPDt$Ybo4oQ>leT>+~$@AIdKdn6dv6+EIK9?GO$9UVibFp%nR9 zD(xrM>>2Hu<bZC^`ncZ73y0h5X_HVt`U>_{w0{RGzx8HXe;V4<zTe_@6;KJec^IEU zf~!6dj{bO;%qravzQC)5Dj#iIQ(#vxUkJ2W8xS>BJY|XNl*3FVh+PB!D)Qg!FNz>r zYFW;*Kj{2~$4N@!vuf`*zWq!vn!zzJprmd3e*O|@>%JarqOy^-d<jB*9H#-T67=aG za@W~xv6robu^%9Jd7jr~hxJ|<QRY7n0_5)6G;x;T5W(IQG@@miugII+Jy)2=)g0>U zhXCm~m+CSZ*6pE`Kip6n{9W#bm|bG~Wc-r5Y#-Wx#Ql@eG6?u{|3z29*l&!M8X0Si zLBzb+3w!YIjMjr$Sf$R`8>3b0g17cL@Cj+uafS6N74yN+Ez|0QY(EX02*~qs28qHY zTPT`9cj6nP^~p5-U>4S}I&~(nFq%XSH(QLzaBd@sKyhy4c<N%p_niMTYr%}H+z__l zFr-Tl*N6l(Jla~Iqjo$7Y!qkApZYJ50sR*;gT%cQL=p*lDL2Y&U+f@QQ16Ut35HE` zN0&DUZ?)JSj)-T6gF<!&w;>#a$lR{3F7xuiPhPvO`mn!dB|e3KXNuPc&%5A`puG49 z2nMd}-1Z`Meh&BPQ@~qt1{7e_{a%3aVVO+P%@6XbibW_#K2{*Pf}aT0jPb8TRokD5 zDm<hF)Y3$ks%0}v+=}m~W_jLP$JbR57LJR}Ck+p)H)eeg?CaRhk-lj@jChvT3qm8~ zMTdGA<hjX(1LfBLPEq0gnWFljt;}1yKk!hwptS6rpR0E8T(;M9!&fBVphwLZMd_Hf zZLr+Sfd@dm2H)x}iV?{(6^rrXhKsVe81g|;kr4ggm4iYP1(6~49Ea6Rg?ep*zQ99$ zkllg~3gP*a*7f?Q)*bnW)<utg)4CULS~syTB;uFWCH<eZE`i72YTcY)T6gwM>)rvh zZm-GbT0n&7<v&JvI!S?je?@pYZJYlZ;c@vV8WnDSK~5Lwns24b?`hC|B*X_x3&TB_ zY%@I}Oa$sIiv+~a)CC2cz~1MS$+_8sf_P*2sMSmIBu)v4d|UX56aWyw&vayf-RMu- zie@Nv-zNb2;Ds{jzq@buxj&3I3qT8n&zb)8T4VU(dD#q->vpO9)>FX-1n8-l$aVc1 z@`s*^m*8JL75X)AJr!)_P#=9L4b5`(_Y!yD(`rCvjqM;rT3?(16&dxqZ|?}@wbs;v z0*@JXghv+U&mypVYzM!Mq72GNse|~{ie-SZ3zy{6MbuluC^tZ(4|7FN5$DLOxM#Db zknk3zwwcY5vD%&!+rusfM9(D9Is>(HSr{0gbz?x#cDwr_Vg6TZ+y4kg(fmg+YViLG zj9QfX6Bt$f1N9>;0E~)=9-xn<{UUeMYji&B)`|RWPsfDcLl?(0Bm1M+LAyr~U0=IR zPBg|_0N&$kW44EK0YOjY)B6tslF*g=65T4!o2^l{4nebHgELEECPixitc;T;NEV60 zN%LbtYiD4c9XF5a*3eQP3~rt?0Pk->4m!bw-#?<9x&{uj7tTKD8;n)5T%})uPRAHQ zeJ2H^$6Cn1#O+x0wJRP-{VWfnPt|h@*X8a@!WAxtT!HO!AuJBE$(P(`E%rNCW|G!b z`|^G#>z<z76H5c+!g>(WCBI)%ci>Ix!W@yA!u(U}3Q&d!{z2+S=~*2Bq%H&9FR4pu z9psQ*0g$@;L==M>=hfZ`tN=ybYf>*C@r7AoxF#x~>m73t78&uVIGIkukn={ZJM6w5 z#mW6wWPec>iaQ?)-N{wl^(x&0wuuGo+g(}CEx;~!o%c-fJ)9^7EqiG(^qOm~1}JOE zVJBEpYjsBw-Yv?-S4XR0r^fAaMOL#kt;0NHpGHw|`u&sB4Rr|LQrR{?{f21CSQo*T z6@Zj|-?nDQrZpC&8H$;>sbYZip0$6F7)%lx6=kp_TD5VL5~gFTq2=+SVf(f7S4h2? z%Uh(|lGfiMNJNxoaSe7#k$DtVW+6H^G@S@g^EO^afc9I>o9pmf&D%ti01oUQYu?x! z{#^4`tsivotL9A``#;sZ8QA`_=B@g1zga)$5)^QNXCdGKPwKnZ&esaIEbP0o{kL_l zV3>GTXx3x`V4b^c^v`v!$?|IVvg2RZxs~{UbuQ!Y>)gtJTjz4Ut#f|@*17oEg}_67 zJQ$Um-$|3Ns%OHp2PoAq(-R9fCAqwbxZumXqN>iN?WcM7?LTn0iO6Z4hv%aqgvSOy z`7`dAb`VA%*b_xSXq_`1WNbn()T?JRLiXY%#_sWW*H^o*f9w!C_YU0c*tcvx{q(Gq zyX!qvd48VARi>7|`@vDRy{cR`Hy}FbBtuN>13>IHWs{+`d~r77liqozX|5;?LEQm} z-8fCN14jQ*T)NRY_C|LvfD*n3h}}L38wh~dO`7wCMT)R^{3UkBtpQ@U4Qt5C3?OzN zE)%Xw!wmsqH*7RU`7dHuqKi;BdQte7*cCy$nS(!!7L1I`edZQv^+hsm3;Tk4Q^(-r z-cfB$$B<b4eSPw1{KT{%$3n+&DJ}S#A^n<aa``LW!F9oAMdP=nG2I1IszEy*&pOTS zX1M;|ZyBU#x|wo?g;97;zV{b6UVc>ph7R6bkl|ES3V_yTOG$(bXFzLnP`}Owx39ZQ z^PP$-k8x{C9@HyvUW;<W=)iS!s1AJyw;`pFXJJqd7eCv=HNwL}RcrfKdx~8^6yXt& zR#(EC)ohv<Ui4ACO26%1*mRwR^*n`H%keLk1PgnFU{_@+O({VN68QvA%SV`s#&%u8 zv%Z=M2F2#=lzx44#C1Qo9o-1dQY@;yF$clRl&a+eq3wA%=Bw2SgBsyUKX~a{TH2^Z z1NOXZ-gMq+(fbPbTFF@<sx+M%`JTGK!dgZltzu8*kV|BD8b}L$!Vz+pjeNj;SHGs8 zh-}?90{Qt-_>Vnr9gC~kKB)Dl2*#^y7Hm}6lOQ?$o{vql7*sDl>waK%zAPYY&Ydx@ z?`G&b_UwM|c~hooh0{iJmrt2Bt@M<|_5KXi5mvTY{-A&+f{*rNWWFna)2@KauD0{Z z;E;y4l@C<oWQ>6|bBnXCIuikLvWUjcrJ=!Kj<?HVuef3=_|e!AzYlKM1KhH++SL|N zqkTA{%eFO97)0&k4tdzK4Rr0cRvarwAdF~P+!Q(|-j(cj|K0B^xhJf(<`!}Q&|FWF zZ*yGxk#e?dH`(Ve;ZZkgq`Ey*;7l(aJ0Pu2{#C*r3dDM*Z8*HP<w-ks-C5VWrHwU- z``62!AYQ5)TiahY+t*~DsSwi^6GW)6e4cvNC}-5FIm|?uL>9<QCR}((F*y-Vg#=GR zz*uasJ;q@_U2@5>q7-c<1{3+cIFO0YUdi-$qgyq+?RC|90DE0La8C*u?FVsWm6ebX zewI7Z5N;MXuKE%teeNkj>5}?yD5t^ljQ*)-Q6_QzLO~3hIGrTm0eLVa9>L;(ima0_ z?4iVn<-WmDAHUfT+J%YN?x+>=%*l|hT*HF#rcjGtr2M#GH5$U5iR68R{Ng~^b9a8{ zx8e<j$MgI|UgG!22g7p?eo}<bm+MD{T#?hD^Z6q1RWAl{({<swy7zR`AKyOqvrC2~ z_p{YmPMfzQTdu@)D5@?2@U!K({E(6nq6t+D<bBH64lG;>xM4YR36bfIndK&Kshx{h zC)l_hmRzNaIgOtfD1K0B!RjIFlBSsD4cAifx~k{%q2CgYOQmOpcM}g*4R6V<s1EVQ zM%J(9wit&?^Luo_%wJf-fSq=0;^ZyWc}wK=Byus0e(pHd{t{=p0;IDLD04Tbi^a4W z7(OC)^Lt1=TKwwwkoq9PZz1)Me+{WW1N~b_z2d*@bcqJo{}@uIH~udn^=djmNSz#+ z82I7;F{BQ(|2HA^EdpiLHhu~m_OgV9x~(qgFrYNtT3xg9ho-3WY)_+GVJI8{{ieV! z#Fsq?Ldf$($g2$TU3jt&GLC;v05F6dNjFh99vc|jgT99dE^0$uL#om6I}8G=KzOGA zX96Hp{u_q~=)3WEWRUXy+~?^?EwT6nNBuWV!4h||zY5ua!`}+o;FaFc#F=$XN0jP! z_Z<HE_a8FBMkhDn!_ka+0gnCqx0a-~kK?y{ju683yCuwP@>4dz30`d(BByppm@5Jd z8<0S8^yY?7aIX!qJR*Ju6#UBYw(2MYFUoy2!rfyue-A^VcJlxd<y4<=ctdF93Soeg zDhAZSz6RvWt;GV0mz168!`TBKrNRO-5LDQ?=b3lB1zB$=WWZTvO@+cisl=_)2;Nq@ zirj_3Q2(cab=Rf;6j=B9zY45xVEs9;?yeNEzW=Yl`sD>Zl<QkyUHVsG9fc-yKEI_g z1{|+ABQ(4Wlf}E4Djs41uKU@6EHJd}XpI1yMB{5F8O%Z*l0^lQv|1Y>qoRSvM%3)Z z4(E!WmtbzjGFhmJ1W*$2M4tjCkS!P!>tZ9XU&tW#mYl@U<s<1FGsO?ZDL_1c=!Yg- za&4c2r&Bm*@@$o4oOA9?5%Ce&!v`IH=r&Zh4^gF%Pk#*%q<qR9AS2m4ngFEUV-tzS z`xKC3Pa-oN>aX)ssq<>3fIa~OFJU+%lJPo0k?B(8V$FUahZK>>;BOL!KEFgY#B>)F z&D4)7j^K`cRug^tT+WoY$>p%kXQsIiZ8CF?pK75Me~$0=#6$T4!ZI7ihi~)_k{5{J zX|1rJ!VEOz$v&Qtzz8zr2@|<NXTaBO$FF7Mm=V0so1GCnFan71BmWQvpgQcgyE}d{ z3<R~=Bma5^=bglWFW^aN{#XVA2ZB)yL_qYNfj|~g{@2q{zW;auVLVVwkX(9lOb{ac z<X^9w04x6Md+?w{27JlErG7n-1(6)^6&C=!m}C&mM}7ca{E;6uP=)119TP-wz!&it z<sWZukE8tSDRx|}U$+}jfQ*VO;O@mV;8Qs47{P`V@i+i}5<vX@BmYjnuXuT|F>Hvk zD&b3+&DZMAg;eFFx9%?_T6Ok3y0_7XJ8qbgBSs5%t;eWzr@|w%O$F^eZ$q<vmnEbB zP!01qwl+hOI3)xtmGFmt=`c)`L5hB>f>tSJ!a+dv9d`bz5sOi@A=H-?tXvq#6QZr+ zV>9$ssjnfmzsAEN?pi#>tiBl<JKUc){Q~?Ou3v4kJ+0t3UhmMOE;+4#k#9XLo>WEj z3Oqz2%RLS1va8VD$_2z>c~WC-&fejk^a2CP-m{@zUqTvTWifn&S0nLcxPLV8{FrhT zG;f0bVoYibmy{F6AH4x~`91o~`qMIN@8>6mRsmKnN4p!i$)<{hs_e%SE_Ij_K>gRE zo4w3twS&PFZ?+DUonmiN@g_vEZH~Vl(5?VmPGVD8<*wyFe1sc{knM>-_z0R-bsKVO zP{0ItH1VqZ98=KcO?ZK}G~W-ryuDi&HJKVS)JgJLdld-`66d=nIp?wJb)H0!%4BX! zaeS6Yc@@KS&rR#2gUPJ}oT>o60=e6Qod|c-z6piw%~wJHK?^<TT-3JxeHZlkuQRWE zhdyK?avq!Bn1ly<-_9hHreX@%x34h5U51&khJ`6*x-YLL5m+E*6nq4uJP6~7R<GF) z)$68H4`|&g3Pbs#ukqyDZNGvN`xqSp`_4#<t7U|42MR9uh41rbrWCmSe5MT1%#~rF zrqG|9B&91>D-fDkAdDuF^#BZc4A?bpq=$z+ie6{>>LOh0B`(t&`I&&Dvu_MqbUl{k zhL$Iq&}YV@>Z01$r~m9_R6dj(^ywbyGe-iZJOR!{fJ21R^!t?O2AJ}obnSvF&T_;V z;tc!x>?O;<7L*vcHva(ZM8W+6c3^6No0{4&vkS};DN<>ZslMU5d;%QGbFL5r{Ts2P zWCS2~5cZb|yz~D=?C7lhnb>(>F8>>`!}R|~?CAZQoncqp^k!!SZ6(km^P#`l8R-AA zGh`Zi5&GogNwy;!#uo0E$YFlO!J#(0mpj$xuuoPpv|^ey8``#yv6@_uL~G2sQw_cx zNy;&gan2OF=0JP<N<wQj{Z`~{iT76IO}-ej&&(L9ta*x}VXF@|?-@xJ8h%3`&9p+e zk7M0R7uU!|Et+}?GvbwXzsL2Po6-8_X6Us|Ap_iuF?V%QtZRUqA^ItL`pwO_dC074 z|K(=fJiNIX%ZC6r<0f^CV;87G!VbR%kw?qP+`f(5CEQ&R?tT2nC43fvCAVhxfj;{Y zAzhTMY=@d*PnFao)t>`9vA7HpSx1SvZMRSqBf|63u;?hSu);aRX}shL{@iL?%+8pr z^s$4LSq&Iu=F%w$d~)!U6GkX^{wT`RztKI&lgb%}oiWA@3}2{sAKgb>gTSioaVL8K zHI6(CE1N|XHXTia-`38cPakF4wq05sf3=mlfjm`LlF#B%Oie0f!(dqbZChE}TU!}a z=YMZ2i~EmlWl(>v`j*AZ`<trox3)4D7GXT3v%F~R|Md)L;r`bdu;uCIs1^EkdZ`ZF zc=C<ysoQD&1KUHn`aE40_ivrwDsxzBa1A+T<DxK$iVcm0#WEG&J05<Ad*VR=aL>f^ z?}_wi>^#cpPPv`aJv!G{oVM57<(#d_xnFjNg#gewP4_tTk4yc+Z926kw_-FOJo3{n zVD_$5zqFRD!zAI0AEPP%h@=you-e^k2uznvYTu@}Q~{xQ1<ChnT<1}Sb$prrQsD=| zG9c-?LG5$jJFlhf;saT`lJe1tyWiQwfCrx-Q%-B+$ikAnj_<c2aO?gbL*QXpwU(_{ zfgfN9)W2^(meP0uhF0~5*xKdrOdraH1QA9*VCm6>@MEOq<3fZouF9T}Td8L#=eR=# zr8cM<LM`S!vv=Li&3je}mEpFQ-$E$ht(GFYTPZ<j@pm2=-Mk#|kbp;g($K54z_xVP z?QCc3G6lohR|~%N;JT(evNBY`*YNV``+Wu++LD_#&Pu7%ksI!!eq(#g`}|RUu|2%H zS--PAg#127DM$_O@$^<;X_h|~Ft0K^OO?I_BUJ>$D_;&}bAVilqtcTB0_p0qfIvDM zAdn7em<B#nT>lM16FSETv}PB#ofYgewALtxt~D%pl@9VBBk1$ofC&0e_DgmVBfIk7 z$G}&Ze~p0@LvX!sV_=0^&O5*DbC6~_B<|n9=vyB=_bs>;e4CShw>$7L($MVIdK-Ac zc+mf3c);h1{~<(<ZTJ=<$JJ#|8OFq7gzHl$RTKf_Y3F;i*fx)%ykSx|nKQMIXEcFr zjnt(!tZ;fSvj3j*ksE#Ed<<!2e@~F#8(;tiLe#2~V2CHjs>*+x31!ayW+vo+{(UA? z1Nt=+D!Bi3COk&zABMjcV!Xd{BnwUeB*Oe(NyCHzF?mqIuR09xIb-S4yVeQ2`y{k; z^a~jIS?AvRydh@R5HtF*HQn~24@!+%#J`|=5kuzOcY>DWoq3A1`NP_Flc*(5%b@8B zRG<EPcw8&*&*AY9u(@T<6vRAW909D8fmv5GToLLTLEkZH?~R#|z%I9-%<~||m90>v zyKep{yv@sVPkTfx9^GtI_ypaN!*5S!`@`h>E7^Agu-Mv~tMtE0yq%(tGRggjA&(Lf zF?!aY2-?22e}{Iv^Av?8i5<a}rN`YU)4@UlM6+kPmTwewP)RO8m@<DR_BZmBQ%7}G zPYQTb6DtOGg+PSM?!bX}ApgS~0j&VL41;`^3M7k|t-eCRZ_g;lzxeO{W(~91Gyl;U z5wYPQVYLdu$*EQcgyQxgk?1tu+>si2E=hs^!5(?R=Q%%*9@&Jm>{-kT``S&O+)Ucs zYeMa(1Q;==EBP{paA7MJh5;33z*)ByCxJpY`>)Th2>__Q9BRqtvm-`UHc^biPye@W zUR9tIf}ioOZ?qB`?ikU;#!K9m{=N_zd^8JOb5_hauoy0s@h(*Gz}jEAb^-{>k$`Zd z_p|I$%(JBjQc3J}Vq{^!N@TZe3h3u+t1IXbWa@IE_w(`pwXwHRs|rZFBPY{OwjCnf ztd1N|Lq1Q^a`a5st95T0r;p6*B!M4KD_`qT?Z`ojH6CGc!YP0oRB5}y_9607--e}h z0c`zf=(sb9NUZX$<+o>ilh`%)W9$#sz_)g8oiBiPZf?d<3R`}x$c-Ps_Wsz%G6&Ns z!NQ_Y88Ulovj&H`_&`u%fQlP!89i{<_+igMSjJ?-J~lS0V^;ON-q*aki%^SXSY}K* z6~ok~QCOTwKa>;b+nx6Lf!j5IXT}G820Z+6(4_J>s_xm$U{WPgjoC|*@Y3AkX1B5r zQ)BYPOdxZ3{T-=Z0T{znvlB*y6d{U;DeNQYeTQF8qENos0&J2Sj4#kgon!M1GX+y$ z$em8@y6n{a@Bl1)Z*KOW=k!y(HO4B$1dK7XZ-Flz_P1or%w{F+jbS&wyJ-;rJDwl# zTuX9^XSf*sMQ=8V8j1;z>^&PZjvOz?dw@?O+&U)7A!bZF)dQP61Djw54qhCsgA;uW zkn$AOSrHV)|ERLsEG9_g{#TV%h<Qy=0H2O<Ua_srq-`!U+K6A_R)||wI4r{ibk9v5 zGp4~jv5Y7a1!Ff@@3+U(?(o3m*Z|E81y!u~KWCZj6X^1-2cWr<gUHU0MZ)$v8cj^4 z{Jaj}eat;HT3!uTU(LvOXnpm9iyD3~CQWt6q#H326l+aocD>x}1thv`a~vTiSaa=o zccZM)4K?vOEE7z4q(}ao@DFEg&uMY1z-wniR3+>2re9(l?GQzcimQj6={E)Z?Afy) zv_+y*jX#y+LnagnD?u_Vrf0SUbcm@*Hl<Z9<H96f)jczEs{pElJq%^k!qjl13NhF? z=h8txl(c09Bxy_gNv+>P-FJ9K_&T|4my2bV%*``oP=(Dh%+4lvZobUb96IN^5Pr6} zWs4>!825DweftM(-J5?f`<_)13pCdJ$i=QYQG5_6j+G~(9EM6up)HNG%SGpw;q%HK zO0+E$zGMV_KH5&|mz#&vBZ@kX{>tewtJ}uQ>Y8+-$tE+K%<yg`6<3+u<G6{uZnpM_ zd^qwD$q@Xf%Z_4B&^EF0S1iW#{Q7uBuVU2O;MVVkF0(c{00t^qrU$Vtnt!BByOPm9 zy$d}(Kx1s9{mmL8V}CmVXl0G-x4D6EtDz|cQ@wy7ks{>R+_08D$YZ501xCRw#1>iA zWxt7#9x8Tjji{-^5LuGP)tZGmdXqqE62~~c`u+VJD;v%ty`vh8Fi4pkI=gqIqZ2tC z9MQyMDD`D`L&f@9bW1353yYc+WOwMhOoeyO5CVE#Ct3Uc6%<2~c}Mz^IjNKWudk2m z9+%C2c?7Rw8W`k~?JH~hP3>8TF7qcH|7<YEcRz)Hp_cwjwbfOS|Cgu^yUE{J|Mb6_ zLl?x7$=5?D0rHo;{HuYHOTU3o$MC;EsE>_~ONrp**4Lp{EY-kT?E{XzBI~o!Oy3Ca z8Ldm`;u1LlAk-nuh<euj0OxO`L&@9d08u&R?+XB-Tmc}|8DMny;1wPEHag7TXI44? z8Xe~Ee}Pc@fYD(-WsG8-Q%*a}vkj5U-nN*9qV{5~OwR`w=h2-tkf6^$>Dx>7d-LtA z{Q>njo@78TRqoWWG^<~CO7{M1j;%L@nB$Ma1Jv4u#JPIq+JwD*ig7elwxx1ZM$v#l zC}M9Q+%Vy>sM|cvHacZV_8*G8W#`|MkuF5NIe68%>OW|W-qnL`2h5k2vbujlqf?4* zD-jezyhLkhixO`XEk!mz0Q`S7HE)huNExL+8SAtAoYmNJ|MF^js?&udQOP)s*EwKw zbY6WI<Z4j2W8c91g|r~wqm;6&Fmv_zB<1AifqAr!j#B)Hw1fsJg-S|^hm%^gX+$@| zk&d2v^&on+hD)<PUHK-+m}NKkBi1E-^1>4Jx-rIlu+E0Z*Xs2LhxWTnlvvvW<x)zO z!WOd8%tTZq%yY3m4zdXjOe8TKiV2!X<f_dUd+FfgS?M@tq{xLQJK`x7Hp82CrteKK ztz6k9*(8?fXrXcm%5!Jqq)wjl%GjPt(ov(bUm@E|XW3{tt1v``=!_VR`-_>w%@rz) z`@#x;1TPgU>tg~1(}Pw}V|y94tD~I>$W&fHxud6o40Oqin%M8*B#PC_Fgdza!~c~2 zywy@}J*t>0p^NGiV9rWHatAEHGG_eQF`gnT8arlrv+OKVd|`@3qj;VXyC)Lc6JqN_ zL9%Jq%a1xapNQ{!Gblf~4NWm~ggmEk%!w<CAz1CeU<|*&RzHG|sVsdPPs9w$Wu`}w zsV*_(R8lTzPx)rj;{>iUk@Br*s}u6IZB!5|Kb$szP%_W#X9`tqB`b@<JX3h#$}|@? znt-((4jV7$NX%pn!^QBf=#QfNL8HrNBpa*1(I{g~+R4a>=uAV=UJTzt_#Fg!JfM>k zW%#f!lDHS+-iujH!+NKCopb5+OTOnA*qG*QuiF~5X_w<Znb?zAhF|HyH{5w&zk!4& zy|3)py+9T!IA`{zzpF)0d{=rXt!5;^Xw2cBb9jA4f3;5KAThtwLM~@&M)>fKmfJ~S zI<mdAT+QgaFPdo;&_NB5rL?Fpe$uij5R}udRDAhZ4Q1^*i6>RrFgSH2ngEF5{v>nc z%vm2MlN35jfdPHX2hD4%cX-ue4ed@cB}Hu6SWu79rMNW9=K?daE|W1L(^#wKEu3*J z9zTczTZX*4F4oNFSL6tYx-4k+X-VfID%soefM}yr!AqkiZ}VqK-4`MpFs*#(36w(e zVkDwW*N50sE7YPLSkdJ5dsCZP_<yM0j)F47Pf|71dbVts7HUhd9qbC5?4=T&(r3qK zszf-B6SW8DY?`q*=1T2PVpZ4-K(_>h*&tQfAvTy){D|6fzhiJZ&lsH``qXP8yz(RV z%r!ngE>n}*&j%N(@5H0GXx{nzVT*oJcLkwHw-66dtZci0Y&3@57pEThMvIp)@~P7A zoaH6C<yNDqj(U&>i<R~92s4%fIcm(hF}K;DRN~7Kx7TJNH_9>e8SkfK`slk6+XvVf zE9<9n+{F4NpphVv_@z<{E#AYEk&bkYn3h>66f@2*TZL~v4<p%o6ST-?a@=~J1ryjP z`aE=Z@2aUbuIh4JPRAET<2j#gpo2HLLm<Gbct^lzB3jbSrLlx(4c&$$hty|i$YY^t zv_eDk4bU{rJIieiD}e+#ob+tfa>acz9QcC#9#ZLLUc|b}PxdQX4bg&8mEDbTFf3dW z_=5JmVqX5yu1N+vEzLorkC^bLE;nw$sJI4e;ujB%d8|}LHvamEahaWg+U@U8Pi`*m z-VteOS=t*HQrq#4#Fr=^M@P}=8rPb6o4A2W-Efb3+poWTIZC$4w&RkElME}bAlHy( zFltfJW}~GhGif{iP%#MeA_g<z=vU?IA#MK|qlMdPGgnhpI0ssC7fB4hYA1DjfR-&> zMTC1)hbxV)<SHY%=*FmI{Ab*h*~&qy$o9=?h}nt_pW_+{ZtnN8R8st>VKO-`coO^s zasusnBYbEz$z*<Qlca$DGz?mtZ)^4e_Hlwif`KEzl_iw<HUY3#nnG*k)j7k8RB#RX zVia*>w-E1{AE=1zjoL@;n8gn_lJ)B95nMB_tTbcZ?^=r_pzF&hISEyUd%{>$6k_}! zY#&HD<4g=iEOkX(HWq`7p)Z}DT@tK^34~Of##S*vxF$~uGX{bkgGJD$$`#j7?>8k^ z(xk;BBjv_0`_XLGafUTO&*`7b0S)~EU3EWN{nA_iEvRosZpEBXFee;S!>)bn0|A+| zI>}J1rQ1;;q5xuDUr_f0E*>b;QT(k(H>RG&54-fV87Dd-HPIj0mBppgjKU^{Zu)?~ zMO_44Pybp$P*E%R+fha}NfP?>;foK!aNwz+4P8?ShA2EJx)h5g;-LJ?zTuEDuLFIU zJ`TygA!uCd%B8eiGw~Rl7}5T_5-_-7VsmHtBA~_{8cC%Nhy<x9NYpKT5Z$>PIlT_8 zI9~ABYO?v&{sZMKe8M5Z#u@P>GV{*SV#Crf*w7v*zL%j~qlcRg#)0sZ?_^2%y`(gm zZ@{hRb>;Apz35)KIShI=5zgekC+)lIyHI0t9=${RN=ob`ulsF14e$x7v|WotK>O?6 z>0nY>j3;^T+auyJ(8_&<=0U#;eBSMSx1bvVh6ah7@4BDCMMFgXi8EytBLE^P0^Y^6 zIJOstsCUYBs1aoUJ2F-RIzzpF6V!#YQDr<lz19ja{FJyh2yV6^9yzgqd`5Y3&P`d{ ztd8eRTd0EH@Ym-wc3}fgwstfBwM)cLl&P*f5Sh$JFtrv{G9qPSVD5&RjzmFou1l>D z+MUzOx)mP+9)gKMMB5218|#W$$hg%HZ&V;`RU@ER<3S~iz7@EpIiZt2BDf5OD?8k? z&QV9DIXgLfZEM=_xQ^#nXuraBU%KqU^ClrrYWqyAbVJy{^Er~$(;&+UL8^$@MU}NE z5-s8V9Go>5bl`A2^tXgyd-wq6DHlMO2N7^Qkukx4dW64+#;iJMnJt5mW*Wb`9|ck= zcyO{*^iy))XOlGFE!?T2lHv@nkTsHNBBQ_8`fLRX9S8sC*7VVj78_o<@4EP&J6@|p z`;`?5(LT@3MSJqLMqHuYXT}3+b*m|WUnkTV+w*0m<jNIb0a*S(Mb%N08$icbd`b8g zUjAVN5%^5r1X0D9d@$0QN^l&Y69^VRSoNQUBIWhJC*ObEL+C?dxRfimbo%x<T+LO{ z`pWT?ZBSkNku~Z&JEGX^&E2AhP<#_wLkZox=PjuaJgl9L(#Na}1T1(T8^E}w1+f*9 zTH$!uQfCYS%{z8I&~38dj(z6P%3wz}2#dpH_x9dys2Eeuqs39K7&OWDd=oca=`IVO zu+J_8dN)U-zH^!!^5ZDfT@QKmwo@U5MWroYHCA33h2ALpVAH#xgKW_t)wzr<`LXAk z96z<ls|dU6PVL4!gg0Y<g>!2yLpo0gP2n;*0lWs&Z81qwpvfG&-U3_>?TF*(VASSu z**WXR{)WIA=>RoO9pK}HXt>$9%Tb38LW7phq7m=7wGSRp_G2>{jm5mZ#n8$HyC^i+ zsLkpRD9hA_Ae@LMv5ear0+S`Kc=K)cHhY}4F3gOm?Xv+Ni05n0m#R}}uo=<8yQ=SA zF5GMf(XX6wlLO~^y?0!SPim%dn3AyV;V-Et2JaS~P7S*XqmjT_KQYGY{~T(?s9a{R z#x<$BRnY&|WI(X!q&MJyY(r9o!-`|oq9nWspKs{;+873rc2X5n{j(zsI_;#jt6Cr= zHv%s0r0lG^!Ynr&F|7m6zpwC-N7jnV*Hy82aqYUsC$ImeGP>zw*P_#FUxdu9%HpC^ zmT;8Jt@D{WU&~7*e%eVVVl7R~7I`fhtH)#&f9=ngaMHAsQM=lo9U<gtCwbX`JK<D- zH<<$5iK1QhuRH}A<76AZ{{IO32IxwHt=(WUv29Ik+Y{TiZ9AFRp4hf+8xz|$PMo~V zz5l&G-g@s}tIk>7U8k$7Po1u_>-)aFw{WET(x9t1ipgToDQhV68l-jixAco&wb{Fq zZT0}e5q0#g(EO>k*q=CVi$Oo`m+PyVh@tq-1ZThz%{I(ls30oA)qmNWZLsG-3!e$j zlFgcFB0h-nuc~Ox4iz}>oV3?8*jUYq6v2uhY1^%$aeL!rvqD(T6Iy7}KL{jhz!&jC zD6NH)jj1($-8_uy8l3b!qU9Q41h1JjRh>_m<{GAY_pd7F{77C8Yv?pyNWHaisy2)! z8Z{zV!?l1STcVXFf_CeGl_sLA7`LX%mONPVzs;32UCjK%$110(;|+^gfYa>`YPKH4 zH2$^bV)o*yVw=L=j2rtXUa|%U@k+F64esTQa19`EdPlx%k}U8>0yIfBcq2Un_#3>b zMe`$l*U)5@2<_HDPZP*nE`R}aVGq*O>v~r22yo3zbv{b3uMFf>*v7ttgU*EQlYLHj zz|XiCxNKS7Yg{5W+`g_B1?x_}-^XG7P>07GC6()#Yz!IUlGozDVx-PZl%LjTFjXwI z$U7ihpF?yJtE+PWg7OMj>wPL1=QU^A&U5e$y{1<(-KW*F>o>_;Gy0=1oYo^+#jWG& zH7$$91Sbp_BEWXp)zQ*RAYR-Hx|4S8SH{aI9N_K%qc4a|YVern;a1FzZBu^YBuo;c z1#|tah3}86nXz&##VNp?df|0iru!Qr%801>ZNtZP?mK%s2Z3LX<d|JEiVK<Fs~8#U zj}yN|c^3%jt3J57Y9Y6+=GqK7C#Co`^T8&Rk0LP{y?Ld$Hu09Nn1p*bVk5w2Dt8ht z4}i0-H369*7fsS<RkVeyhyly;Vt@wqfV1V6x+_;|z|TU0j-;)-n82l_A9d<YJLq{p zVWmcOb{-gNubt1M+;*O7J5NN>qTTYK+(NV05bRMg*3&2n%#=3==EyQpP3F<svIx8y zUL)~mQkYvr$-|h4_EN=+&Vlhc4@HIvc%svNn;=9F(D(!N^x#k<mx9DpXrc|HLn&d? zWL>XDz%~pGGI<(=Zz=Udlzqy+lC20w^`V$01o!e3qO-w&2wK?627H%YpETnetb1?4 zOxEvp==XjP8gIw`2+T`3)^2!WXG2eJEzk8q|5|C8@t>sc_3C*K8iI9XF0DM>-g@ca zE;BKVI*^xk*zXYK0#*%MA|kH>R1#J#T<V=_EVnEI+>qtCWf#!xxk8`h18#$%Q4jn$ zWETve56=PxlUZt~@BqkmcTZ!`h}3f#)|vMB+FEnGDsvkK9jlZ-jB$`Jka<f;xy#7u z88TLU82cYt?%RVzpEAt@@WcQ^>^IiBUM^bPTHs5g2R-)@inUI*uB3|*^bnVKg{HkA zLe>^g`;2RM_;ud4jr7dp+4_`nwtdYBCD$7N4fW)qVCNCfnP$WMRZ8R}di-K+?q<*W zXRmhnNORd3E45m+?*6Fbs-K=#+*=|;j%x>mtQnaVIvE0EY-j1t&c$67Bg*2wO1xDD zSEaPK4+JHiS&44up_9j7H#qL%X!<x1??zoHSxO~>Z>FUpOP=vN)4&C4z<zFxpT9Ez zZOXy3oo(pE)q0~vjwef7h>CGdJZ%9j@2FK~!#a?|WI~6rh*na{K4zKU=$F8fu^bSk zpmHl=pmV{zIBBXhW8<JnSSh8j^bA0)s0vFeRZCj6@-oxLz&bupV7ScFJV7~>eZe?t zkvvx*FhT5A%{3KPyOPhr*}YFyutYKv3V|7W+Z>)>K<JnR!>5#3jXupN)hPW(5KH#g zuy62@i9>~9f3hnol-1#_Nl3Xh#mB4!!jQ5sFsZQ=1=P*tH@TVNXM~8YHvG0(!$}gk z@JkN#&znV0jE??U>K%2_?mrg3%Df7w-6$zoRW?;(b{37fP@pPDPr>uY*!(U)vIo^% zc^sY#&=Y8;luly-^lEJ8=2x2SDZl+vv2V4h+GP<W=j3FGY4+1>?(tl@F7SnI4sT7l zDKN$4lTNX3$D15-J7#%nD3(5pLN9~Lf?2AwNeV-EJ({gTe*{Idjp&T2vC)Ng-RKfI zkcD5mxB#%=d2iUTQQov&OmVC@ds<~`0sbsZ9s^JXs1Ei#GM8TWc4zV*eR#U`nO(Al z4|%b5o1;Nph1)8xG(3BHy`2Q)ZG#PYx<<)OEJ-Dr@YKJQ=6QQ3J{(=^f&OYS(;UMU zIG9vNOGy{U%PsJ5f;g@~i+jk(u9RmlhM(Vfy@rRnMx(3Qq?)HVRRB3NZc4l^-!hUp ziP3?qUsvLB?w&J8kG!WsTg5|=##Po^orQH*Eua?4PbKUx&&ll%s<DSX!xm~&f0*aN zZ(8Eou(zEmPAt2U8oJi{fit5f8b#F;-Gs%LVRg0svVjk`FtiOHwO@fmUr<eYDH6U% z?Ke9Pk}9geNHSrdDQk>Wn?>1>!%l)iV6zJ$G&5e=Mm`%X^Mki=NRl0CpTV&cH!$g? zoXY6G6>Bm#fs@4`$UKqLN@=uKmtY!=2(Y1_4F2^^m!KrL_1w;e@xT)rY~(^M`Dv=o z@;HrJ$ubpoXDF%@)ILFB;tLSDUn%ArvT{5LbHb~wkDSTnF^g`9Q<(?FZV3RZmH58w z4SGm<abhwaDJYMX9Y?yX#E?l*Hn%xp&ZN&7cqD2flYROzO*J#u1J!0_gl4uc%Ht@! zxKKno=3z2xgw%Pbj&@t^96x9kxYtq}hxnaucz9@pEG562gLXX1xK*AseL9Mtf|e`U zxWx+(NtR)q@Wp<=y9mw^><b)GIR6iDMBJ2p=%YjWqX-<0jz-IS{D34le(Epwafxx9 z1a){4PAx{d6ZhE9wD^N55#{%Pf*-&d7#zP8x@^vsjXR0Pzt;@ufTB5r{w5?o_2~0e zfSMyuDH69iY;j(xF6w+(Fal+7B{Ji`d`m5o$I4<iG&#vDVule}`l+gn?PpO=Vd;62 zrXXv}FOB4ag+{FLmSZX&v&tjFzJhgNJ~mg-2B1X1bx+^mwB(S3PetdQbva!B%J!qz zU=(91%tG7;cV*@`Twmm;WyA9zqH~aX;~tnq_I&_~!=vxVaJ{WjM$$6XW2Q9}%36(y z4J$&Mb~z((RR5hs<#{@_*k~fviAZP0$b^>SKJNGA+4^w%D)j=<W2|VorX>?j&&A)) zOa?Q=TImsPZ!+^~jd@%sH*q3!gTH7mV($?&k?cXmiE`?H1l}(hz`a>YlDiyXcQuxb z`z(RA!(6gcK;cnBLCl{=&3fI(&O$#W;?l0Zp=y_yAp=#^`~^U;Fzt{t$Y>JX_R!K$ zF(F{LzM_aJCrEL3&6^=qV&vRC1IG=--XJ&+v+-6nkk7ac4~aveLnBK31O7lEBiVJk z`6v95tT`PI^09wBAVAO~V*}odT|*d}UNdrVcee6eNZnkMsEw6AO-CDZAaW;39I@iX zo1U$SqpOqE;%0Abymnzsj}IFp=P^GVsO!D{;jNXWrjwO15i=bXEkk=CO4|DT_C;Il zwHz?mxI2Y$so={-PbQyErVVQDdpf}gr%lhCZB+;O+o4K<SzbK;2o^*`nQVoQ7+*4i z9ju2OOhO`pQ>0z`3!K;l{}VWw`2tR2;8bCk3Z4~+N$>vxCuY<J&Ay_d*E(Xj!c+eZ zINAJPfD?i0grj6K{x99Wacgr|T|Dj|*hIG@aRu?XMpTk<ieRb7%Cn)MgMrBAje-Za z-cPe$ciNe?4bM5Qf#ZW*bo7NfA}Hk<{up*Qs=m#295$C$^$N;e^~=>2FY!WKAnryo zNo$$*U*hK~k2L@2<2mcE3HOBHP=*|f<d$o)5W$~tl=x|(a(`hH1XYO<H7(L~(BZEI zIME+DhdulFJ`tfGlOVKhe_<1=`!xB@3W%96*o5Z`HlZ$?a79Mre4*lGFz%$ZXO=np zovw@A7?T%7Ux`*G?5>G;0H$`2vJrc>yBVNSPVt>nuiBopFWNXy_zZW<Wo6djM};MG zV-xuW$j+|Py@>L%P~muCj5-D=lhEK26eZ;k(;J4dqU7ljaY$6iv~b#ThWRFeHr=lg znl-srErFm7ECTw$uZks^YF``_5lri5qzwqq^~;EjqgV^r!TZ5QsD(37W8Yij6B51~ zt`~~Ba&09cHu0p8&%b{T|EDuY3sZi(Ew4;uoIf=zcUK)T$b-kt8)^&+9lKUzo$g$V zLY~mxWHKEC7|#sV2|`FQT-wRa4a}&RXjacUkd9NT>(!4&O2%R2cc?V?U+g4dJ^=#^ zFGl82JOU(2l<uZLIK<?i*a>MGGA?5o%s0Y(4tWAcPe!jz0#%v$kpPh@7Cx=SpG#lZ z3GB8Tw~C3zH?tXW;9Wnri4GZNRS}dH5Cq|%!RB*eliHc&3*$$^-bd281Z3d42O#v{ z-U~V4=EL#w1n@JNnv8ip2hL<}$oV~cNiUZT$1}gt?u`ZN4=-29x>M|th<`RkXZaAA z*WHYRO(o#rb^&&2O88OOJJZ28%x7~?w$v|%O1N8$3P!l{FTj5Z{J<P++H!f~=F$qh z%@ajGj}kx&pCkSQY#x!_+l!S{oeQcl0oq6cQJJs+ZuY7ceOi?nvN-^8W3(Qvgi`{s zUZTS<aFrH%i@Nekir@1=QVS?k-Iq{}4J>9MvoLxu0eD_N5MEp?STL4&vh#v?C4A)z zUr0lytaE-Xc}Yjj7j#t=Kw1$w-2mSd9_{+Md1DZ%)g{dmv1fv-ovGIPHEU=yg;6i1 z<X?MbbqC7s4cskF-??6k=l4%<jb2<0<l_q}BW474R3#n*++Xya(~`BO)>U>^^P;0= zdpB)&#*cer+Z~IUW&~bC+^a(u9<fR``wv&FA6w7;Uai~O$4%SfGwoq?pLQlMyxwKD zJ2|aajWfp2gV*?518utYlJE9uTNoUGX6DOoz(&W$YO6c$R51r(HNfwuv$1qTolSK@ z7n&p4Bxv_*h|zH#4OT`1SQ{>6aDoU;%CA=}@`#R);%-&Khm9%9iy&IZ*09e+CzN=M z%BbpQ=TA97O%f)^NfH?0k30aI>PwEm7Q%3W&!+!lX@oe8L>z-hBzN4D115@eN54YY zA23;N!4mCjY>YcizSEO~!psQo={elKyHrY%261)Kwm*aleUArq4~C<b`O9t{t&CuP z!3XWs+@w%_{-Bc7%o#@KpqPn7x{@Kh_nh2qnnpcqyEyuh7izLhz!MeP`!H7U6Js`4 z(#FLaJ(~d)+L!7~t&gvp;;M1e#X-y1hbe7Y9Q?tY2`&&NeT0w+BLy7yk$MRklp`<J z2$&~V&%mS&RC+J4z|;yq#1bEwH=@!|gB0YMM<Q{yUQ1TWu!D$JqJMb}8(e{U^hz$h zMbaD(d#E{1f89qobkczA%#C-}tG-KJ)%A2dTr25b^kC28D(f`wKJvTML;_Ovw_1Ok z(7ggR>&x>jHKdqA4GQPMP^HSc7k>W%YLt38g6IUzO8!8HD%$0>P6ip|2IoD&2RD<5 z;==-UYi51U_6uw55e7{_JdHEfG-4DEV_(i3Bl!nPZrOTl@0<MTj|8bhW2SR3Mdk3c zoQqm1Z59kHhDMDIu8o1!AHspr%8zrT`3U-D<5-pQg8g7*ar?EGjM!}&zWb-Qzp8)9 zrC=cWEqr%d1(lmY@PG`~J%vECB336|Ar;r3ES|g)dYl%I7qrRq&7h#b5ct6w*2fg) zHGyY@RvMPtTgHHz7*tg^D8#kI{d2Bp&}r?kgxLbT0S5*}x;@9q2~pz0(rOD<NqN3# zwkhU9gk+(LGe57C%frfBLw$Hn1ro#!`zMO}S`(@^!#rNazDl8Z{g4>?4V<>sAZGPC zS%bs4v*SS(BGT-vqI-w%8mHu?c5}jq^BU!$PFq4&;VZLt+l2=+_FnGN#h)zJ%16}_ zJU2!y$yQ}jotaG0cAXh`wHg`#Z=Z%Y&3fYtRuUhNR(bQ<lG}Y_+eXQNWh2*7!QyGH zbKPi7dBOr<aUki|{(baJ9$$ddqkCzuUZOUE+Dimiee1{U798o4-?8oR(UMv7PrUZK zvzyJ)FO%@y74ge9C(9ag4Z0n)z(c``85`z}-cm44th#mKu@aAVf1TRD=rZnFFAxee zK3h!xA9gu#EJ69Oou{)Esd!rGJhDrR|8W@`1JhRO#QLBh?u?RLJj+!00GULY#nT~D z8xMI|R3`=LurZm|y^iu}I$EnLOnxppV``m&Qrcj{7n^7x{KX1bD^Ut!KKCIs)LC7J zJs2qWfU~rYk?m`n!95W()a#*|PU*Y<SYu`iS%Zz6aw4x9Uu~i;Ox+h2VEb(%Bp5)4 zpwzGB!p@d@`&<ds>K%gS!O<REH7eMcyn<k}zRZQdMls0!dM}#o{bD%5nvx}Ugvd1x zfx8-bD28n=%v0k}rG`*$<hQ}5S2dSq(=<VjQuru1`z@Wah)Gy^HJ!tnRLazj_+;Wl z@n-Ad<w#p&jv&oxWrTVLyXSraRb4ebjr=TCSkdexvl*jV2j1fpW!T=3m>9+<IwmSk zmR8i)5G@54*R<|=9U^hJ&QLvgJjTfJE4d$SB(T|O4;Rn@;upR$CQz$TD#UvMW9Yj{ z>ib_9Np*KDK8*X1z_%Re11Dj$ABqSF@Sl-inB~hAYU>Y62kpdSrUnFWphC1Hk+xdZ zq=#^7Y=SBPR*nHCK@MYH71>+*GGUa&6!YjLPBZN*SYUHknw6hZB?MM1w{MYoVldg% zZ}qkk3fRC|mRaS6?>Va$W2-uCMe~2K<r02neh2eM<2zQL%Xf)EJh6znXGX36vdW<- zFx}{eofo-sX&KpSWSr6j9+5*KYBbIQB-a>hA#pZmfl^F6Ls;q`^g!(A(p*`;mp8zK zV$^B>{wFV~5$`JPqQfa~)t~l!Dt4?AGx8t2r0pC5iDFd&_JacvlcRK;D~6o?6y;E> zNnDn*89Q`QCEKie!%#&!Vjy1brqX~TQr=<(>c)~Hp7{^$iQ~C-arjyiL|t%F5Kc)( zF<%<e-tOoD19<-aVk)PV$G^O!Yv>m*DGrS8=5ck&{i2*#fDd5FJFGsgLSO;z38xwx zYhvpt`7+8q&1jgdcLRSSU=)DGkr9bK<?`cj|9roRilL%`V&1I%vg-x~zx|0XD%}** z{Xw$p`D<EbAy3Yjnyj1z>}_;5ERf$X6GzZy$w~-;O+d%hx&7s<?KNm4UM#5G`;r*& z?!dP9SGQ}Ljp5_H(b^S-PW5`X2(OsvT(LV$EW#&B3}`pw=0<=gk`N(u_~Clcpz#&Y zeN`fY{cnd>S_5hYEvkX=^N7BaX&8LmDy%B;yFwAE<MByO`yBNFo6qRz?ao-v@Qk=R zt1oAQfDX*`^pPmz;ri$2oAcW@3^q2t)}DiuA+jTpL$aadl)%liX&PDb!^wv;DykKR z4gN4ux_UYaj6$lv7PKqT>HoB#udRPxiC-b)r-bNeDUFAdE78SDBZ^{npz7P&L}Tas z`%F13O&v;7dJFB9@~B(X`*KJbG`HCzw!d?68Z;9cY4sw{STzm=@o}IKImkWF{QT7i z<9iCSD*=faF>d6z?S?EQYJ??W!!4t*Y^F8aOX!Skl)n^tYa;A71qFGCN$=}1kT>R~ zs-K(RorkQrSdJ{ZcRw^{DGtwaEXV(Jt0B!W1L+yXgy=$zOrvon*EAlDMy#)$U)m^a zjt+rdoX1wyhexSh$*>pr|1p&(N0g#j|2Suq=@3GM&thqNEdu<H@}t>()fJn-`gz1$ z1Y6ic_4fkw-{DY$F!d(U^VU+Zz=+5;n=Zi)#zH}sP?cFUzK==4u#J?H&!6?4Daxs| zEN5I_;&G7%@GlA=e&vAYwOw({5yD7Qu*&Q2N5^XuiZiQe>P5#T75(l;&oN49NW^;M zrC8b~r66m7;>OLHO7{2nN5A*iKAm7YQ&5KM`{|e`B$DJ$V8l!YWhAh(tLd00g2wDn z`Hc82D*KC4YyutdoFn27lz~D3A22+0&TIX$bW#1tDXF`R=@=t|nyl#BF*X+hNB?aV z>nHy2RxuoC9ak74k>$pntw@Axv1mwjryDdS0+`Izp@6G~(_c)!oq-ab7L($3%Ip<b zA3<EC_M#b=cN%Ufr{j1Q%+oM7DDQs6iGOw1)UHP4!1CA+?T+6XQt-^^0eF=+Ils;F zD3^^vkQ=j^7!{lngslu+Zl;|y&r2B4H40wiD_+rgirPAdy1#8c8HT0KSN4wQ<t^sv z*_Z}%iWeONv}H8uBGh>JE8J?MOJaL6Tt2tGlpxHC_~8=tD$hul=*rDloOY`yZP30x zx=N-(YrOKPD)ndb*|@wL@AOu0vHkAz+0irCQ^D-c(bYb{b$1p%w+v!RKu1-=>6QDv zhErOS*3_ol&RSk{xLEJ1`P%qiZ)BtO59V>sdw<8{;Hf99(v|+*dDE+wOV7K|#zrHv z_UP1;5~$b>+KHE_!uElvHI`{cI#|fsc57f2;lv>i@mdnS&Pa6i*?=BP*oB~+*D&6? z>Z$FIaO^o5H$RQB!N;PF)UOv|MK-p1u9~B(897pq)manbw-CH4mqEi?goq%1oOePr z(k0=$$$@nw)waHefX7NKTWk|}yl-3#COf}_K<)3rp-mmnSdO-VvS@V29HzKBEKOr3 zXR1zZv9m5sl-5ZMNMlmD5k#};pZ_~kcNC3l)uXz1(ZAYjxFZ>f$!YQh{=WClI3C&T zjXVsW+T$GYnoNI~POrDx!x-eukDrOiVk}h9q}dVjV1e3-8lZJCsk29;Ac;ajX3VlH zj9k3C{(8dCir8&82i^0DjBbkf?6oIu&0zZwwQ(}~fj#^Qv3IqRg3tLH{-;`W$ZPP~ zF+z3wPUq=Lx8t7V+Lnat)#K?&#qdPlP?!djD}XdREnz-yBBR=W{hL1Fg|)X#R<IzS zqmTXN>18%bdD2+xFuw0w_1KqSbh_iB3cc%mG{yU#rg-x%1-iQB%CR^Syvx+jedk08 zfV<W4)Kl*JSRV$TEve&`dF^n4+PAB^N!N7`+wFEb+#Nx6*nOo8UA^|=yY+b7clL3~ z)q3t~|9Q@H;QsXJiSK=>>3gy3dDZrs<$H5C&3!lF`1mn2j{l@{akDFWd4Ts(ewFc= zkn$tB%kFaL**9IP@-4kMq5Jt+wUhI?OqJ@hsO~MH`aNpP_e$<`;!!L0W#0F5N>%5> z-x1sQKHd|bkL4kEBdq$p|8sRHj=lSSW><EK?*njrNEF^pe9L!Qx>5Hj@Rp5@X}j~e z?uPS8me>vSVS3Hi_xTcq{b^Um_2Iiy<nSQBHw#XO#$PB7tw!3ZX&K8}Wa@gu>9C>~ z?x0?J7gqf-S4|oU@^m;0-U^Nl?I6tIDwLpV!|kNpQA;5s5w?P9;?WF*8jHcx-e{ps zcOI}A`GB^~MQVx!Lt$Wb3kh}l)jSh)87Wi#Nv(d|cr^W9!pZsZ^3y(hMB18IaQeu8 zi@r@AeHxt|hh(`pzh#;drIxxD>so+r(`7?_eZuBwv2ta`sEmw^NsAU~3U)A3{|nx4 zwDx}IcUTqJ2*#+BKrGr1v~UaL#L8a_K^l9#;1}U%Z5(nXV3$x)Qmm847LAe08f;Z9 zN-aHeoR`cEttjE$y$ec5qO}A$6j~rjs=%0f3{TI(yucjh;&D*pd&J1&`OuEf&p2$X zag#C=Q8cu))6+4L`=XAL>m|yfGxZ6?`3Z)1$i(?8H&(3e%#0jOBQ(+zG}Kembd!^G zCY7c%M->khyWHtlPgeTC4H`9i)nyh7d4A)l2u2>l*7VTOQnvyE-^O8litT))O6rRI z47w{yS%P8g1R#OrD5E3`5$zq^jEofU@Gvt+;Gq+UZ|TWmQXGWU4~Ik~A@AHN%(f4c z(b4ao&&62Tf^mOiXdfoG4328~IMFuOaHoy{<wV99RQw<idb9Y$_g2FpRt36d)`Nfa zv0eI@$?2S8Mcc0XImBk-`|ghp<Flkqw{zL`)Mwgl|Bztod26}i+5Hk=syqG0aHmSw z@>Zs}^458}M7QB_nRN9sP@3&AiSP3|zV*81`{kZb=OyI6gIwIC!({iEfbaX<S^w!| ze)@>_6xIIw^IAGvNA=@Wd;N{4_?P-&Hrl4$Bi)uV%Hfs14wsXK<<q7v&)r1(S9Z<Y zc~|el((23?K)dfV$>7Cf_d{j1&II?vpso87)#vVeb!WNTVI{uXa5fK%{dD>O`sUq9 zn4+!Eqq@uEe6g?P8CxRXliJIyZ>Qb6cgzOU%~a4CzSnuy#+A;K|E(x5Decy8uWjM0 zw^d79DWBVeGv6oAZl9&~f#L<aw-;@E_sM?b$G5(jX)8YWQ`1WtACqlW-B;+N?z8ld zU9hXCka_428`~HB&+|vVwD#Lw(`Ksa&X3fPVcqAd=FaykWLX~jCA%He&s*Yb_si<+ zwomQPnCtgyuVH9t*$bb$>96XT?$>wK?AN2KwriV%*U#;x%a_99F1IW2t|(mh6V;Df z|9AARGvBP2cH=|UO-BkYJ2uzp&qrTle7D;w#TYC;=jrz8&d*}`v<-ESKE$O@hsW|y z|F09UM_(5|<8I<^+}`2$s!h*6z26%@V)|aP$LAh=jTqBO&U|?j4j5ZUcdVM|8NdEz z2G4xc8$IpqdAX*gX=Nj6sC#ddveN?(d??@}J`7xZ^o=V1tXlK7&)=+oE?y?p?on?_ z=CDdl92}C89kKJrre};tPth5*#?`iliQ5>}{^_&k<=O(Q7}Bj@dH#8PJ5nsxx%PJ2 z`ACI-yF6^>_PR24<-M8znuDu-%^#twQ$K3keV@oKeQsi6IxHWHyKnZ%Hec3NeV#&W z-j?CtFHBW*IX)L&yFc@<q&iNeZQpvDx1QGFyN__`Jl4v2-yOT3r$64W_&$bp-}fVY zj$N}qGUv9AvOFbT#;)D~ZinT*o_E#Lyl=W&PfWfyPbU$!pO?eB_YN1fQ*X<Pt)f>` zUZ=Ibud}bbx8eBiq{`}V>#|-Jx1t|_ZePIQ3lm*A^=EVT(|QRYusD_ObJq54o0#vl z@X`0U(Xsk9NVdcGuD)3JaUtX(N%r$?n~Cndwz=cHo4fwLC<OeYuIoj%`ZN2}?IdB# z@wq$N8}Kz@-!^W&6${>S>D=UZzf)bkoPR~;_jYM$d-+4x<#P}=?RCBPJk9seldtIN z4Y1YWdCm8I%ICXZCi{GFmGa?u4Z5vV^*KGf>OB3#N%xwZet*j5o6PpzuHx&wjc+{i zv411ex#e3%_x65#t>U#`@_lPc@!5aC|LCH7*W0ZsWc%3A)_v{9XMYfF=L4KPPRw^1 z`wDvB@bOT5tg>Z&7+%~wz<)Gn#-V?_yj8!K>wb>OdL5>0UN^dCeeNeb%DnYwSJ84m zhNHh9GV#4#&}E8AXZh+~wBAm45x?i&Mr;8B>DperKQDc|j|P*n-;cdxblp~twmvqm zp2nI#_OZL~(^7caZe8}u%V7_1idm;W*KfH}bnYG=rF34eT_?KVzdG!yko}qexJh2= zGi<r_ILgMXb2Fa*dgXPf$@g?b^|_<)rDo`SPO!xPycn&_F86vh{fv?2X?*B@?@9Ue z@jY1Y_5`T@CVLFgNycn@mHqta-@0$r#d|MbKf8RPe~sdM$+_Ke9394g9kl)EEARU3 zbUa1pdrSFzyZhWd@_pJ}>w4AH0p!BJy@9(Zets}5)zLlIciX%@r+ki&_`dD3y^mVr zzh+MJJr4irelSJPa(_VYe$(tG;cb2?wDg>&>3EHkWz8P<xir-Ec-q5%fAIut-Brf; zJPU0BvU%@=x}X2Ff1IOVy+7GjejG{q>V6vByk|e%Zs61Dehy%N+Fu=9y~=jKLi0WF zeJt_BykAc4uIaqBDSm}B81}W^v+cTAle5}V50`mEe{%iyPRH(|9Ky;u>>Hd!$anbX zbEy7#`4f3;D{hys{V+?w;#mIrX!Do%rFhR#evk)m7{N4qmyO98YoFsQ$Em&Bkr0^6 zl*4+Mhzs2JZRpE&Tm4K=yqQ*S@*{wf{^JuMY)=YMc`x+MwEkqokWG{Qh0wwgI(cN5 zg-a|iYW}<*Q9jZHTUb}b^fJP)_8p0m^@X7J9SaZO0s*t8N~pi5S3|~YGo4Rg<BbZ` zv?bUrf_vY{*VhS9%vth*yjiX8)wV6Jsq#jiY1|TQ-J})Jdgb!6`~<hT*ov)uN2qAT z?`sf2&S4pwsdz_9Y{c)c6~PZ>IYp>=NAYU>?5hIE_AGqBG_Jx6sJxPOoL(TRHFgV@ z0aWQ1J|Oc~>4249Nt`VBzDr*W+m*g!kT-4#6#yjd=0Bh#R`G%5UrA8DDg}62TPVqP z2+rF>f$XXMWNLx9uj=08fH0;PiN%BI?gw>eV%sHl0fVIUme)K&u#=bZowD={LUfpE zi`W5C9*PnZBM&CloPniGk!*jiJ44BgxrMR9QU%vc@i}zaNGpnu57_@;`k~p4OK$Vf z0EhjFN-alCjY~vY`D0AKhLS#2LNersa~d4pPw}m@YqE{>ZtfR{Lu>20p!KsEIuDJq zu~Ug@MVZW7bn%pSjn5Dp^TTy;k)&A>!(mb_ry^pL@%QER%^aXe)j4C(=NPVCSecMG ze*kh)T&i&K4~WG$xS)2_44Li=fxgVFexrT{a$vE*F0MEY{0j{LsmV_@M$kdi4e3eX zXA6U1_=ysVuv9Hq#wC$;dy|*l-AXQ*(?d@(=Q~94jjvQfhlZtVLZz><9e*n4Cx;Z8 z9~Ibq-AdED_X=#hHuSwVc5v-BcH*XezgxxFE{Po7W#_w#J!F64#9Vzs9bJhX@pU@l z;{(I)L6o>owDW+i+84=O6O^b{41n{u^8uY=x9Z@&or^)ZnC{hQ->gh0^dM!w-|vP_ z`+U!dnD!YWqsxXTqpK(0WZ~T&I2bXov2xP4(f4A=#>UMaiHeS*p^33uf7@NY74vbr zb$8yaGw#rk(ZDlq;U=R=*-c2k5g&glFqW+yAftirL(Oi8l+_UNXW})-%x*Zx4F0O} znq&OO9ygHWzc<|z|9M(7`@dTt|M%trBo|bmjK+&D9?z$Y+KaB{;|}3?a4Y>c+$8Q} zn4)gaVUFMv&v5H4Gex#}tQsneueg2Qn!)bWDhJ3MQ{uxDThj3(+avTykUy0ZogIe$ zaJ+}D5s%Kwo)!FjarXh#KMc0JD$zxqC<(BC+z@NXPs8EkB5}MUW^<hGq~>#&)Rft> zER?pDE&Mvo5%E#07$kS*_WzL(g&eLEM<P=EV(ayBEEgegbSH|YJ#5N*1!2BMprQ|7 zKvPNn)BH?e)6CQ*9d>XI05OLqJXF+S3auvOTtEeiLU=WRwD@io^P@s|{N{OzOQ28Y zH2E$Mow8C{)y<&^toxlSxrryKNvZTAXA)^HhNS9sR_CMvP8?t5IC?;EDSa7TkS%2) za1;Dd0i^v5Ru;?kQcX{Xy2z8Vh-7KTWiHateB;)vy09^244$f0)Nu4d`W$*Rb5cQ- zlSjI_&YRgBc7e@ka(TRk5?WTQ8PNN{g*MECI(+{QpFaxQ!3X}Lufr?6*^jZ$B2De# z`AAC7P)}pl8?YjK7~%yfMs^E`AAKic7X8tSpb?{rr|Bk0vLikT$n1$!vjWIj(Jt6e zSRsz`Q&E;wwv7hV_P|K%A&v1C6lgi|pp1|9kBqhkB{`J;!u(RCS#Kan?#}KX1lGyR z7e*?mM*dJy77HR{hQEx1R-qR1q!4lyCnWmGWewk#YZ^O!GKDWIM4pU6nQ>aCFJ8~; za7MTgYhBw&O|G12jFNX0P@&*dR26T6p-hZkyVx95Muhn6v)YElkbK%1clv;IP|lj? z$%>f>EEL>e=V0l7m8-;V`ID?w+Cd+%fo;r%1loExa4MvZ3<y89F}0x2SbJSfndL<9 zA(|5q=ByITGH{s8kbH8mJ88;W(md7k+jz*`(`p?{)u)!r`OSzmX@%l)2sZE(0OgyE zBF*-DH%pS;`BEGm0`8JF@tD0db}N-W2WU>im+L-D_7VFixc>Rc$1u$<WWyHc)A@tz z_I+AFwWrZMfA4*IMa#y^YTonHF>5?Ja`=%i<i@q&HQU<}Ul#~>2yCWH;0o~lc*+q~ z7x?|H6{L-cWVtiy%Fl)dYYW)hi~0t4MhEBX4fuGMD`$@@$5T-3Yw!Oq);B}0{KNk! zuKx60plzVRPjJWoE}%67|EkXB9{cBE8~cAAdqh(70(bgnp`#yk<;ORE`np))rJs#E zm1l@H$i`eZGB=RV$XPn*rC~B6+2$fO2F!1_NXl^ODD%@riV(jIODSavi-0C{-JNq> z92=XttOv=x$rlstjgvuTNfT)@m)~{BHg~FC26Z81r1-gp7PVPA^6AQ9@@ES?MWG?H zEEC@rE6O9oi?P&;iUO|d=#rL`Px9|4+B%>`y72H-_!2{}ylUg6??YN8Am@XBany&c zohiL!y64A>mf7dmlv$5MYrzjNl!htcM*jpDx~|3)I=~m+g1}kYI5BgLCRWhsMv`Jn zSJF!ELn(0X*JfO#W;iR}>I+vgY1cM9kciM(4?7Dj_<?v5*-p0gCAQE!ZD1JuoysFr z%#~4tC=KBl^5?Ofc28hkV5O7N45<CRV*sa6^6=XDD&MPTiVcC!B_p+fOot0h^2<U4 z2-By|@J94~lXgaSo3wAph7DSaAHy`*IIkc|z!D4tksgo?pzNNS@>m~E@j&xXbpMPX zMX=FQa2l3S=BpH{$vn!*G$Xz08$aYJ2eQ=H&I3q9XuskP-PP3%>Xb~HXoKTV!<W2< zYSiO*K?_o6dR8#6v0diFt0@?FJWlCZJdM#Ockm>3;9>Dr%<x>bdC?~~cMXgjSSK@) zHM234W{e5WMQZMFLDqI$6tbRc5r^vo8K(T)&hJER34s$lNN%Q=tZn)FUTAH|CR2In z9%PoYQu^W=X_haxYQNY?gY<8Q(hNNV;WpwMYFz-GE}{cG<qnXg!MTNWj8><{#$Ir+ zTGv}tN@(>|=k2e{L|)WJqNa&}v7tuX<7$e_l{ruwr*2BB3wDU2*0bn!sZDtx=cm*Y zFU|wb2h*DSV)w1>*gC>$*LetwD`ln@n9V!l)kd9pRt;}F=bMe2AfmUD9!fE$(iOer zt5TvQt_tWY>3$I6EJMm_PzQK+u0+C6;Z-A8*;iN?J*HAKSRn2x$dyu;rG4i!XkGVg zwVDOU4>D#Bs8PNmz4BA49@Ob=EiZzWo|n>5m*UL-Z6!(8s2URzG1OG<1`6d<M2{)a zxj+184*Tnz0pf-b;sx=2fB134{*9Xbr79wiy6R-QoCiVXMVp`p^wIDa)d1!I4|Xd= zDYQVH30LJl@S9>M&hQ>j^KoH7q1jYnNq96QsfAwq@aN#%VhToU!(=quS@7aKta@FQ z{mEz$LKmlyLgboD5eZN7FprC-S}r{`3x<+zVeYmxZ4UTaKYqkMUidyx9`Bnsf(a_% zZIEa+1*0<*k110Dz;fB?NV=vR?5t8Ht@<`v>vmb|wpbb0xL<!T7rJ%jj(<^!zal&% z>P)i6gf3~KYj7X$KA&L{&$UJUAVaUo68s}&&1oP7OY$JgBgt7^QP0iR4^S8voA#77 zO_Flck)gn*joYNzx;#LIG`l2^yzA;Kb!FTnbRmkm0vq9O7<M5Ysbe6UNUOOx7Z@%h zlMmoGYgWOEU$@!HT#Qun$SxQ+6g8HR*+$%m-?~*%EE!U03sK+<t%0X1(Izy=P_Iz0 zz?QVOHMm#stf=zHmjUcA<TQ`fa1&U!?aD?MI@=aDnv~7Mw8Dr9<3>d?neEh~P2S7# zHY434ZlZ^47*4Z@*NS~TGj#EH&JW>oDf6puS%haiUr~2n`c}oz|1rM7p5(zNEsVlA zY9c>U#`2@JzV+sh3ch*Fcr};?EDH^b#`dLIb{Qc4eXzed5+|h*0QSEdR*+AeMRbl_ zEE?*sIcB0?^)=W48~n_rWGyGSnwa4@!pqRS#$gUSu!TRUj;MgA@*EwA<%k%pqGRx= z<szjpR%i1dax+)f57*)IKo3xR3nudc3x@New)Z5r=V|adehnGzubsb8EKNVy=d|DG zwR`w^&$$pp;RD*f6NogvqhnKFQ$QDnO(7XMKX9BB$#hr?ahVHYLwL|1zC+R;poa2T zNzN)nc`t#&wGc!V4%+s0TEs5G&)Tm~l3#v3>|_T*mIJq$wBev>P!e@+;&D$u#g$?4 zyFtwVQ!bjqUq<;LEs3Z6|DdJ$We8ee1gOTpXRFbHMD+%yX&oTn(lUcHQvZvWMv*o* zsnRfJE<ot8;{TUm6hw{jOE7w+1odr!J_UQ~P?2{Pbl=n%fkZ8u;?fyjJ0Zw|rk-%U zrPlS!Pchsba1z7&dO!TznwBSSir59sY8!AN;8+mVkcYS2gGwE$y!&d<fk*Z)&8TqJ zf7Ofv{|t}^h2lJTb5BWVC<y<DWc1DbKP98`sOc>6O-i<l_mP+m8;jN|15ni7=2qK@ zS26!XKe|JgjlWYT#hQ)nub|~ZJ#P1WK63m-5qziWgybuYdkB)l4N|aJii1Lx#JT@x ziXL!eeapsE<7U2ds!2=7kjPwg6WEIid>mKB`Uh1#R;rIk!I#wS67vVlVYpP^Mg+lt zx&8}*18AYc#&Y?Xhj4P#H^@0)4LAfJk$L9`%{lWoVRr`UIVRESK^?memcQE3#{Z@r zosHd!tO_fLhvlzZNc@-AEF5GzL<AVk@&`pg_Xg-MuFAN~A}a~X(;Th7r>33uDJar; z@xuUFCl<#`GDJeX=KV-XON7!$j4z71*z_F;6NYBBKIhAMHU%PhAX0Umo<M2D=NoD2 zK?@sWJcXgrDAgkFMqnT2q7<y)u?xkRmQwg;Q`jzuGI?VikNGvve<Q2ah^GIN)rj(K z^sS59oDqu{&P;+cxLU3eH8^5_scPrPZD%$IT2{xCy8<?~=1>W}zCR4{KVM83fIpmt z5nPI~yB-S1KNi0fq^HqeOf}79S>-O|+PvL-=W3`S!752`oVXWMx#uxjO-Ds~py`K2 zt#`mGp2(}REsJ&_zuqiRB?k~hMZx~=59?fzqG-tR1T?+hV5fe=1GPk;^5*FKomBgN z(ZbrB^EI^<7&+C?xv>K?v9W91UWU68(C8tq+!+Nma&ozTXz`*i4UPm22G^RDA4sD5 z=6SAZZX=K6%c+#z&=UDXmZ}1K{KF9>M%-a!+{)mTJ7KIE8oyhpr<JG>op}Vw1jN3` z=-Mo5gF0VP0XZFd0p6~2h~ME=ceu}QFaOJeZFi8mxq|f!>E>G$HB_*jwT*ipCq~_0 zaVKbCky_HpXhJ-ZC6z?7B1|f0jMHA9gTc_6&74Qawr|5Wx2jksy}vVqj(d-{JPlQz zT#)g8Xn!No`Q)U%VM_X784<1hUuwFn$!130-a=N;BE_2*QlaU^Dz5IG3re90ds^)% zb%e6YA{pqKEStWR-OY<#(Dt*A^p&7RK~QLCt^$W(a{!_Cw?-6pSON+j91&;75f}IP zg1_l+8MqYc#yM$852HNOpl?bw-(sGrplS_SFBHZm(v>vt>j0{dj}AyQ+!41;L}So3 zN)(*Sga6WYvRB!YHhpP3`%ZAXTvp_B>*;dLL#qEINs<M~{lg_znJA^nC>MGH22!0W z<C-C35S$!34MU59P@mmZ-+sjkr#pC_QtWvA%PW=>`~#}=V!WoTU+Ir?p906ax&BTL zG^)CIrvV888MD+_lU@t>kPHMgFaxC)P{kHuqc0d8SS;+Wi<8`wLjRyaJWxZq=S~Y_ zpRkj#a#V6J1G13dms0k@<GKwg5fzQnfT87mxhnCRf!%Rm8U_`z0i3Ecmtv5#4WT2i zN-?fRzDWQL3@fCb$1G!iW(J|%v8z-`dnlWXLF)&e^=JYbEnEy>`%C0G>{U;zd_chb zMO{ld?fm7k`v&&`uuoo;RT;<hU{NZTK59>)ha94Nly2O-jw%&F2=+NE@KQ2f(mIa` zRK!|8fz|p%cQmVrYS7Hm0fNu5+n(Krqma;l{<@Wt66&Ban=Qn$qz7m^5;-F5a`FD< za9LqgB~YRT`EqhnL|ZdTPue$?b2ey~N&UVYLi^ADI)tWtIfPcplsB`?ScOb#vtHsd z1Gh)CuhH;nk2ZNr!>E7wICqkCo^2e2EMw7<m|z`(Al9^F*B^M)qh**k_+oEPeq8m? ztO^wCVKGs`st>s4akfSSxst}8L6jLQD@IC0F(?(4j{m5NajXeNJdHn_;9vDMBe45) zOUE?H*kkLrCVdBRl_%id$*vckFR#yyz4X2H!9|`OKtogI^RPGVRo{M_zQ8Gx{Mdhj zk%gbW{{2S}cg4Ui5fj6{qXg@FW@&He+)qY;lu+zU6c+wDN8<gZT@84lBUR9r{*l8a zeXZw%gm$MCX0EEilCtp+gXYGsrqs@ZNnEOR?87$Nu*S6>^Ldh5@ou~NjcmNo7<r-H zf7i!O4|fx1eBR@Sa@D|cKXP!c9=@5{a8E}ab{z3J8m`QGd3`WNc2B&6P7L+4r%$-B zW(IvSy-F!a`K#@SsH4ylt8~>1r5R5x4KkxJpYSh?5#$QDR*g@*r~UyYag1?M(2FQd zhinYBO5b*O3MnDcT1{7Wx2usB(b%*uNz0w~@VymW<-}*#{FMgYqSR|n?yN{b0-ixc z@mHoNrM;;?;vZ<#cOFD)%YuqfM3C*0*!ImhG@fud1RlARLYg&ABhz0+p&4p_%LwF! zHiiFBJQ66H*2^39J2?ibuxTgH78<k2zUq=%82TU1XauT$Ho4WGy?T<@jkEJqR+wF} z`93KURzcnF5z0>zt8%I^9g+bXe)y;Y-3^N1wALeOwZk?Bgb49YeMnYOk4=`l!&6Ih zg`7%N7(b5CG>@2KDs`5s*-}!HQ>w3~>@9^}yS5&U$10!(gDqd|f~~JpclJ-6#WA{S zlLLeUHlS=OAVTqb4Sk_=9DgV_7u6VdC6mSljzDgtCu%?`s|<jCKOR$Q6pUIpD3j_U zMY2-<yGHOggmsqr^NYtc_#(KVfn2Fv9LMGuz5)l2vZn1T%M-YpesVgZN$q|a{V#lT zjZY2#qDs_`q#dgYjDVJtQY6z_2%gf>8kx8}b5-zo3Kcu@?`>4Jx<p2k$N@cIjnSeB z?q>pTy=b<zbp$F<{zB@KhIr;-h4m`PSOT3tlvi^SfaJ}7bULXS3AeZKb3u!%nM0kD zFk{jWb%hr)YuI>_5>-l}gH+@cn6=GTfw)tR3Si0sbE0BS31Yfa>5XVJ4TZnO(kBj_ zP@}PXc6hT7VrF6EP)~){mm38PHa7O1VyWn+tODk;YTn<ITZI`JPx9mpoDqb;^o*YL z9=>C8J_&dApcKj*mr8Q)u-~<pOP?c2kw$h7j9Eec-ozVGwz2lbXK(8>^?$f9DnG-1 z<98|hMO0BzrmSAV1yaw={(F6UJZp^7#8^m(qDi<f`SDTUWUf+(dDOwemrwn>eSE;8 zyN>_MSfU+Oe}5^3aS>w>s=rksPEsNdO`$@lq+q(V45XL4vPNKP{7pW0&mB=8HqHRN z)q?}7lrraHO&@>%h;q0L1}>69>538J2mA)u3ONiMXR4ruN>3{F^2ueJ7_Ad#`cb93 zm`x9XP+^d@ava9gPoZ%BGGTsW)7^MB{oLNOUg$%GI1CAu5ImGfiL_0uEUCh|wDl6G zyo?Dg-ES1BVg+i#;9$zDR4{hbtqMaz!ym$8{E!u8uxtzgEzL*7ext}LNK!;ja7S@U zhH%pUZ<et0A3pqGAcqay?<Q>)jVYOdfgtdfwAvfjVIg{}EW$8uMm;==*XwqmSITNt zWgs$e^d!7pN|qR&PD2{*nKQ14Ct_l$&L)!_SOl`|hg{p{b%3iY&3)eO)3cAR*s4H* z2)a-5n?G4X$$#Q=FLFN!T2g)O?DPVmr2M5@=8!2=qhEndOAV2MmS5~k6YVtGNOmO$ z3TP4t!B#h<%DJ2yP8DeSdzLZ6DIN*bze$y1lQy?>Ur~BQ3>K|T(oURJ&?kzaXzYW+ z<wa~)%&&}<8K`7wI1aVy9enlpOP{B`idH6*Uz3L#rzsFq+6%A82ka(|raHocL8}oI z5DPlp#u+PNK=(73R8>A7;xt^ZK7WjqUtOI2ZAGscqFkJ@D;ZwLghE@7H@4y(cm8+8 zX>{Sxc8`Z52%3$SK^&Yw%^glSt)xSWyODc=Ox$tt!Mt=vU+G*VH;G~`rNFzBJ*tW^ zLKejgs(Y*-MF+0IU9wgo9drU?CV)2EYzqxn&r8naCchoP$!9!E6bmflOjZV(CP{R_ z!K5ro5so!gbpGc_i;@}P@pLs&mzSimpcACPga%C72$^#>W8*%eEemKI{2~m3QZpP? zplV)ot-%!esM2gIy-`aID-oy=f@}A9nKB&WrHEZJIWny#eP7L7ObT@XgpFh}RFNnX z3{e#ADG%Zl5+-l*c$enIm>oLbp9c~rjIf;p(oDL^+}ffzPbv3~Ndbz~%*-r`u1exs zAQT?G8-+%%IykoTkjml?tTH~N_4`n8m<1;Od8_b^-ew|@#0udn6d!?1lBt9u$#Lxf zydPMjMt}l8%Z#0|og67Aws<30>iLqxhS$Oz&@Jk*M0tTPDiNzTjRq`{qnt(DcW~6z zlEk#Su#TT$Z$04Dp`=>^F{sQuY2ivEbp#KtprvRF+;_8R;lG|`19H@8s%nLG^uX}G z59j~(mq|cz|HECYOv{=QfM~m51ct00cUn_nY)JZ!S|Deh@&^Jp_|JpCB(V=1Y;9d3 zQ!dbk`9gY#T(&w2%x{Ly75=r38h7X&<Z==Q*(9a!^FetP4D;c}710d8c1HFlP+L11 z*7V5X6=5j^?#+o)_4pfaqs@(3Y9*F%Ng0%IBq~T2HH?_93l^demk|T{bDK2iQFFAz zc;EG02sB5CB37Zk*<G9isoE(~x(#S~Av@3MPNSfk&fs89Au+ZG={a=?yW3NPH1$!Q ze{UaES;5jYRYp@`P%(5~)Ju1BoQlF$=3rp9g5_(!a0sj6>LF^s-on$R4UqN-^qH8A zdDctU=0D~SQ}*$btfk+A?iio$rM+D_Iq^!?26^qd3Q!a2;v1(c#<mFL3CTVlWw-Tq zNA}8vi-EqLbh2@4RFn)x0d6>MdMFx5-BpT%k~A1X<#DKEKNuN}@Di*T*)5{JP^1I# zLcH&6YoTL?ZTx1KpJ40u%@*I<R=V=^b)U1!TYUEB?N@`Y{15S}E5nM3As^I+yLXLx z3-YM44*1N<t34KJi_W%Y+qUQ&8bn4tKfHb9@}=sl!<Mt9sI#TUv!%18>Xb#Kb0IGx z4$T%g-xF{08m5k>?iUP{FZIxq>h_|75F`NUGqw|g)CI}P;0TugF6DXP;jBC?7d!;% zkqlV~9+pHwF6r6x;bZu64d2bcI$1WAqCSX8yts7u`fftw^kY8t{S4A~=;7O;mh8Du zXG+fIe3$z8!<pZ+K3=j(d+*s&!sz}^xy;3@V>|_hUt{C@z>IOp^T)go)|mEi(Fzr} z0wXHO=z!t3afH%shP$1{L}hGl@w=-)f69LL%5U6We3E<wuNHDH4$daWkiS6q6kKLS zxrN=!$$`|kK;PSZ7kMNKE-Wv}@MLOj0c_v%J@FGg6T97gYPUx{133m_+wJUaj0e-9 zah-3gr!pT74U%IFfcR**T^~-90^kRYbBdA*MbYS<nSgHlTJO-kXQ0Fd_XqOpV|dfw z+vIycgKtDF*eL=)2rtSD^-=6d<9_Fp*n(!4#DA-A=KMCFC85(zyOCXX^(D+P`Q1(E z2@%?Zry+;{3FZ;N`xS5@?t@N{?}{m6-dKGOy@YIXi>)GB#<5p`#P%X3SGGY^2E5bT z55Ff<!6KR86<BiWwmb$H@G2GByxe?^`Ll2yTe=^G`xQb2NWNCr3M*Jcb|Xc8xmmDv z%o(zKGsI_U*rp0ryW3s6`}4&@n?BJxwY4ijf63h1R;((oz)xRXXUpH$|Nj7AK%l=C z%mk>56^eXj6}pvSi|`G2@Oq}qibW6Q5q<-9lZ4^Y+RZFGc8m04cAs_;c#re|NmwfK zftnVd;C5kk9UdDU&5v1n4{B|oAc*LCn~`Seik>cMYHgt+XbZ45CZ!?rM5+*&IWv>x z_D4r^lVfa_%jE~9{n4>}j!WGlhWB|>d0FP)M75ReG$FNz;8{JzdVejix_?{#Tzi2w z?Q0p<xbyr?Qg30|EH&$01J7Aj6l*qH1l=f5=N4Qlx2b0ftD>Vgr>1O`S%g*T)-78J zDHX}+!un3@D!~#@7kHH{>^tl(DzM4oY!O`mvSz(y+utu1wo@?fbugd-8EA>1W7GkG zgr*Qnyd9=eX}^!Kmq=o|WZ~)LCa6f(*nj~(32B>VDXKd+1_uXZV&s(gbz+^PF$F(2 z_|j^2jpR)7_!NGtKy_u=F!$}u@12*D8!2|6vcEr2NjHG}>jut?2S+8Xps~1NCsMV# z0z_yVtG?cYN`ftU(puYv{up42Rp9fWHc0<gb8A+<MRF4B?vFmdcU35(69C76CFsdG z<kz4L(OZ(-l}4Qh#Wpzywq}>a-T+jz)zVu!nzjR5Fs55+L)M9POGaPkHNFXoUJ(>M zGADzB0-L2@T&}NT8(&81rplMmZc1u&8s`jp8WC0#MFM?b78<Y@m|~FyfpXtqB2_4+ zb$?+NSWyS<2ZsGjVn`oKoLOTMY?W8N=4f?zIHj&u*LZzstC+-Zsi_@aC|dm*98`-i z`7X)<!iV0e=?zt>CqY`Ja8PzrC?{G*b0<w+D6N?9kLG}fcgZ+XA+VRac?&dIU~PC7 z>V>Y=)NR?<YhYKiVkPM~l&-Le`?9zi5#Dte8ntQa%17JNPA(=zWO3UXBh)7jp%pWO zCKxEG7s<E`4oZL)Y@gz)kk%_o$w;Qa1Y9L$*Lc~&QgoWE6x}Yb)#e%~>tLAM`AX5T zbn0mucGM)XWI|H56R9a@^ach5^sBXcA+3ROPX<!9^UEB*1r)wiBB7=15_TI!uh29t zx&1_{)lVS<VMu8KrsAA{hxb;+Re25MsZ-mgr?w)Jx`Zx#zd@Ged6$d>&UpgJmF!tK zk5<S2{vxO@PYC`r<Za0#rz{VN$cyPZEaodpu?pgqxNNYElx23<ev;X20mQwHxayuL zw{O$zLL0WUEK#CO5StRmoxCxHp1Q`jcC7l7t_EQ3pjry~m1@&o-Q6Bgp}R?oO!*-Y zz^*K?WhovR{h;V65v|1&NT$q}ykt-YGJu%}5nEncgSkU0;0KZte&Balk@0^vB-O(U zApgyUFHnesC|m%txh3)?APMTJz!&Ew{H^GZK6tU!7$<H;!M_#@DcjCATd`mG&L+-X zeej}J>=p*lg-2SI4Xc&_!(T=>d`nw}Z5Ssx4MwT}W+>i5Z2O<6K7gWMc2T_S2RECn z^D?XQEg5WsA1Ebdn25nad_PwPN@?I*v9usbOQ0<q7s(wuvNqeAgj*o0ssOUz<q@i( zLwq2cDwL6#LC%p!pmz7qWJ0aCc^2KUL<|s#tn-SCmfVhh(OM~a(7-|a@hx9=Hpp|V zF^C-6){U1H*Ci^~WK)3Ru}gv+mPNC<RwV(=N0XjgTea7A{yw_e$?dd+!NGROlsb$% z(ifj_Z81F~oG~}!dJ-AMN=~psnpiocPrk9s5&79h4MFq9*CSN6+6<lQ89HDR&<2|9 zfUl!iG3YV@smW$gW3x#K(ATB(`9+`C3jIN*Z_TF-QdVy`qR^)-I`7LwROFmRZFW_} zEdsZ0vDj$UkTq|!jtkM!3`9@~igtB@)7Gk5;remwR;rLRSAV;QJ!qD8*)0j}#<7Q{ z6l_VSz&yjUEmWJb36(V=UY$G32lJE9oU-;*v`&y$BG0zfxGk@9pf6oQe<OXp*0us% z#epY@v+$<1n3u>ajufg1qDyF+7J_JxfMls&rCV0tiHFADdzapShyk#lGAY$R3Jwc8 z<G^az=Pmq)ngxy|@$0>43nhI_>J=Z<OTpB1(DKwBv8puqGaxTidj8OIo|3c-O~iNw zB$>#Q7EL>`>Z<E8cyP@Y9fN~gbaWHwuw3IEUnTkuuM>w=V2u_Gr>gyZt18DUI$I!w zx=)=#ZR#qRe&K+coGc)7-=I;pll^KmRh?2(eoF`^8;lg{K_*Dt60w-_6(<L#*~DVI z{*!YuQqVw>C#iGG_5ru+xlHZ_3hcR+#U=`t`@2mo_p^mv$g-Yf)Att=WVr@XtdWDz zx>epHOC8KMGi!feP4CFXO~rW7TNX2F>WzR@HK?TSOH8#cmSP%uBC0^@NI9fDuiN`J zi2cJlzgP7EBvsNk&FtF%pI{$GTG-;Z?16Xr)wWDybRTsA4NT;KGMc+g(HapIchloy zW2twSRb4^gDb_%Lj;k0s#-pcZ17shu^&OLER`9EJ1vHI{UTe)ZQh4IK8%PeozvvQ@ zT)SZglA_)8tn(ENqk_;5I#^s|gKcx+(N-@Sd5=!zagp~}`<UZ;w==*^*#;>)&lhJ~ z>JeO)7=y2^SZ<0sE(h9T8XhRN%d&<4tORQ_AEfz1gMRna{(dnv+kOa&sX~^`4&tcO z&4P<Es=~5_Gt}-O(vUQZ{gZLalBYpP+(u{DHY=oNhqHwuEmdq+3gBf6o3j@v*>A#A z!}fPT#}!5fC9EeKG*#_}SR^|RaCeI{fnce)=aa4QtHK(-moF0M;y?+;z}`GT`ewri zgeCk@?hJK`cqYMAv1&2>0#hO{OgRR-i>4~+W}SLgL@ZSdE~U6j(GnHh8_4qtZj6wI zh8)^}CNYmCIR&%WHiB2I@7V&Z*K(>*2lKLMNx|TkuEZydt`qtX?s9S-v1Mw@v;@(n z<sTM^f7sR)A7K;xnftQ1BD28wEdm=RrLn)S4GwBl{uEQNMBrLu{z?&d8)YlqwfziT zCj0vV0v8EZvVFH%6f;hO<A1g_Ez?P#x_QePlOkKE0|FFetz0u485>J31&-$d<6`Z5 zhicHw^i|RMVM6w>AiMokz8wd+_XRY;B|1v(lB};}YE~xi0tOnEg6G}B2hEmdO9i(z zjPo?>Gbey2aN|g;I$y-Kv6R-$`zNH?64mDm#7l?$C)-m!Mn=mSiIqJV>0KHdk!6~7 zO%~O1UAZAkjJ(^>=#@<cCNU(?A#K(bP#sp#vC`_^aH;HsjX{<G?ST0s8jDTbH4Pe; z&TjIilw2V}1<+I>8wZjcDkhkboKLY;OQ8pwXtjh2Jy|zaOXxMiDI!aGDV1{h7X@=~ zHgPAhAnPm%LL8U4w@F4H4U8n-4IQ*GgHI%Ep=VJs5lDn1(WC$YH%ULT<R{5!-G7$G zw}a-PDq9@76UkmOfp^>OQ^FJ`xLuLr5Kp%6TCYv=wCNGjvS(N0HJo}{&KWoIu8P#* zSdt=GJJeG}WrNP&bh)bwqZ~_B;mf+*l+;3{$P!^vc$9TW9rs?N!GxchTqSQd3pW!p ziNZ}u(FzGi>?X_u1GuL*!35+(@{paZ$=izB)Xm;|o_(TSA+Y2jX_?s6g`4EHc#w_0 znqA}ZAD?~A3aj}wPy^s!5Cy9v<lj-;@#@;KXckR8!4p$+HHS1v9!wx-z!&29XKg}e zM}S-C8~2V_Jo17~)Qt*l0J5x_@~K%9oyE}blUqaJBWwIn5<g}UGJYL{V%bz7cYiX0 zufl0%d9r_3lB{1Te0G#RJH7_+Ct3;=@B@U4uf<!|_JSbJ8NlX&nPGG+QhPK_#=v~{ zgLTXzBNj-9X0asi9rA)WICzZ~M<+GVa5*XBxi9*|J~WjCE70~c4;NFz)_1by7#ia7 zAA1bRG(%&eE5$uqdC*{ypeYIAHjINEGr=x>>Wi3l`8@3{?ZNw*yW5Zq=;-E=R$P0l z0(p~U`=`k%3->00<YV>*7${122H@5P98`Q69)QbyT^AtMM8_H8`mw(s=#2{UM47JJ zM2fK3E#MO$%d+kROm?#Ml7Tmu^`zuFghlrn%d=?M;cyj-vq^afWqE=o%%YP^ELi!o zhzx!{X8r`K<A{shA}=vjNZjvax-(`#2~6DQ&ZAW1kRWa939|@pY#fq_eDK$@?*_NO zFWdBJRW+0)l?^3^69sg+0~NK373+kNx!-^%QiSMZ4taytp1}Pt?)2diJOPw2clQt^ z)_CH=CYfV0+e#h-18$4JMc9Z$p*TF78u=2wdYDbPR<=ZdwBPcY78-6GZugFh)%gKs zaB!f4tMeA!&R}T_jnvJmZ3R^M>S|*R?as<<wLObzWZ!4iueuIor&PWHqg1bw-Jb$9 zsSXZ$dUDHVacD&4SIe_ou0_4DmBx`L-`DUpjGnr=$#1PTLEt6vgB-=$;5R`FCL2BK z{00gzp5GZ9+<=vUt$7l1Yit$O)h*YinAQ54-P@rd$gINuq1Vttjj!`u3SBD=wUH$I zJiHwp92^>|L2+UO-b57q>JCg>ZEcDk5U_O*og6(&7Af?i2|b0{I|8E+Q;0UZHsw-8 zy1{hF$uU6_NXaS%RCNKuF4SPfqP_B-S*Q*3GK?v4lGNUan@BiN{xcFDTDldm!nt;L zqt;2ZBArZ@gw8&yctC>BOmMB&2{1hA%Sh0wX$4fHwqNrB^jV_m%a$FK#m(TW0xPf} z#fodJyDi_&+@#>QJKXPQ1^1qMVvw|XD=YCAEXxmH&f=0O;j38@KS;{0RL~lRb%Myk zTp4vSIzWY+b=4?Tf_$y`ikKdeuC(sIaJ=(4Cf<&qc(J!tm3hgss%3U{4P}{c#{r&a z1k0(6rxuA?P{HmL@uQUTb_RE2JBuIDA6N+uRIHwy5df2g5G%eYf#LV}EZ`lz+xRcK z>|1>EWtz8L*ODx{O$YP?5l=r_F|cl+C1|fL0<JCC2wqFmrhzw`8W~xF+Yu^xo{%Xk z9H9NMZp4IFrX-ai+bHn82dT-w|7f>XEno%$@aNHV`<M*qZQkZ^cZNXs;X5j!fXk$1 z4f@@V{#_#}$L$D1MeidiwDbZgN)-j_1a-b6|5ZHi(dderrH98935+6D4Lqfe9x)YE zP28v6F29}@L^P;OUoUPABTX)o&F%Zn_atg?0|Uta#JMY^@xGP){U;znD3XmY<Rmol z`Uk6@);j@mwhIhH^XI{Z!6Y+Zss!rFU2c3SB7V>#%^m$<g*2?A8D^ICg6I}&eGA6s z-oxbnWmiCkgLNu2J0as4RZo>&+2!Qus6|ZEV?ifaDTbi4v-T>ICasg>xiq45P~YBa zGOInNc$gOlFsSfb0t(ZOKgXOV*Y+Wc++0b;TP)d{-Fi;fUsby{p#`kLsUOIms`co| z@W}_Fu%^(0u%7X|-mH5H>Mr?b4HAfVA|8F&E)U~saX5=*<Sl;*$23{RgMZ>su^^I? zU~RY7W*vADd2Xsm&I9tfl;D34Ex_|&eRq01d%)w>macft?D00%so`N%bf&CoBu_Qv zuB#aulBSEnwUC_^7J-8;!n??Q%RbP2Qxhab#WVDT`HSi<eg_j=#?J;=h&!q#;diAb zlriyE%F(`xYkaksbe)gBsW*!?1zklfUYljKmaozB*1oa^ZtJ|&D7tPdu{LJt4q}hm zMU3i35w#~Iw@n${q(1kueGJe!+r{6oEOb2gZJ%kH<qDg&-*XC-7jn1}3;`)^yR$4s zCUrA800v@G=2z&3?MjMxL}apUx?)x%qszmzLHGA7Db_sBSb}<S*A?Ef099PItHAAd zVDy@sQrQwMev>+pMS7l`RO-^v81fF?Y1FoQ>0FfY;F~p&sR3y2QP3Ri7Welz;3r6S z$iQz&8Pg6%QD)5-8lYmfX&qlaiRPJRdyFe)exWk!__9)k8!%Z)${zh&4q0p!TMw$a z4g(|-_E9xyh#cmmE_Y{3iE|pU=sjjpgymDi%YZ=Ax!j*<hk#<f>%4s`(v`=tyHV{e zIo@z`jMp^dimq3?_S+W0e8Oj#mnjlLm1rN82tk%xD-Ng`)>N|&`@OB#)!ZHwTILGx zGa6YSTk>vgaIj+AwiR@Xy8PN`>+%(JCt?+7g>0}Strd%F53BCkFzT37p0TjKNdcRb z$;}e0@|syNU}-O)bJ1zhC<aJMm}%?W_LMv$O-Vp9)D$2$rntQEc0J9a+nHn4g_aJ; zg$h)uIHb72(?iQe`@$A-xR_cxC@aKdiPV!Kn?22UCF};-GC&VXxNbzTA#A%KxGW+G zI2P?Os7vCZ42%jZ<1rGNCSw|wPkD9*n=;Vj58{b~1O8F@velOczR`d|#3Qx$C)kR! z?*aN#s1W0Bi^uaX10_6;+bF<DHP{;1##lY8@!~9yTCy}N6jZRvQ?sjUg>qqwZ1D!| zJc&nYNlBRY4IUoW*gE`3Zm>A8n6b%kcnM(>ZO1Ces7*4W+G-uXq4~IFeygU)IR*Oq z2X$}y1si}$H|;$m-ug6J-v*t7E%*f$P02*lp_{)p@Syntk0&>H*?NCoVyme_4b#Ew z!z1Ra8wj(EABd5%sYZH@FV$x?>m8ZOT8*R%8qDXc38M_7rKAehp$quw*^s^Cm5?l1 z?c5h&NNMYh&?<4lqX0+xEu+K4&cX!|2pabSa5!AS`(deSS;02|Y_(0H3-%2S#PT&u z1EslLAUO3V|Kbfw_)>cSPY(gv;CqFXLvx#E@j})7lDf4vRhm(z6!S6%ZwD2#gDGeb z@PYKH!BU%|4zQbMdAc0BN}FR#-%4VtxxB%nz*2O0WqxQ#@m%KNZdbP2_4u}c50x1p z0}6wD#TCu=1S`YYlyy;nxx&Ikkk>xSaE?|v3rtu@ByPFxKC;fnz+BHLgM&Lxl?sX& z7C_Qe+qrC~k_9z&t7d7f*4j)EI#jjmJ^NvMOI+tjX7H`7U%0TF^ci$DqobJvNs-_Z zz)K)1fSq*YDFYUcCJGs{3)I@=iW^7aadw;E8RDs_VE{FHu7BF!PiNU(zG-nI&dVmf zfs1Y$D5s{j;M?xtpm|$Xm2a+YtwAcx8IcHsgVof{nthB=g`uwDTUqoKCz0DKc+`sy z56A+lz+f9Y{C4V=NF1Cz`kbr4`HkUWwuHMl%;H1_HHP>t778MehPSOEZA(q!(L-#? zd6(Uo;mjRcTOeFC0KLDjlYf)=!JnmUrNBC&qx8^Iw=9vM;8`$$h~ikcX9v*PSCt^) zc{U3`J@(6Z+BaCj43OQo?1hjx`%;CHRj$I9=;kTF7^r2NyA8-~By%nudjL8}--4CN zsXm9Etc^j?;Svw@iWjl~oua4F-cL}Ft#4CMEws0bYa6b3CHs{*FSxc2E6&Sw?+IJ7 zf+AGc6%TyST}yb<N#$`g0We>;o558DJ0#=QFX$#JSJrVmGKU+yirSOvde;eSyfp_o z&@|64B6lY@$t#4EX;|AE@9D`B_gSh2a)>QvHpn|_B4)^zKHk}=pWL)$mfJuuUzFqa zB3QK{haIptmdR6f@)FnMmt!4~v0<42RHe51c}w9RO}o#3TPF#@fbuQc3d}3w#NI0C zGPgTY<u^Uz61ChKPdkH06v^EzwT^wVjxcUmYg+J8M)Tn2hPBEnY!*9d`P+#=!~?W~ z|EMTZ3oBdiTuk~(*1?biVp3C}-;u3EcpX#c!<10VE!Mrk2E><nFfWm^w%3@OSIIer zCfmA6haVUKdPP^OXFp?`V<FiN+e3p7C<biA4m<;6#&SCIhBG7@K!Q!Yfx3wPfA-$J zzisPS7e0UYQ;68!GGRd^Wjkp%WQfPH<0j3`jh!Yb#rlUEFA^^@N!eCJe)o5tnRNv~ zCGFXD_IrNEZA4&UVPRco&CHs4#_@LXbwkJx8I?rMOf*GX)`|+`{`UQ}*i3?`S*Jrp zNKCWhstr~Ym_t%u(?mPQL-9beR$RZ$y@yp|-Ky)3Z$8c|Az;+O;8)r$Sxv*$oBP^H zthT7+TKiRUwlB128k-pH8#o2{RjHOWI#)IOx>hHF-l~m&fWWkR{YsC+Y<HhET;W*5 z6|OZLQSWRA1HU=1`DD!?kXNf@ZS9~`(tx-h0hPR389mTk?PZkTZfcauIInAMQO1By zKYjBxEdom9OG+}vjB9hrc7_}M5hgkwjU#rY`;RA#3IXhhZvU*^kDr`(&ri;_z=n87 zk2`~Z#Q$+VIPXNm2lu*Gh4EhZE0G}&U@9{wD)SC7zC6<phe2*>^tT8$7O<4q@ivsz z>^d9D@p*UqavcwgEBMY>pqe6uS=NYa01UM$hKacA%hc$Ff~KUM=q%|;Eq1z~JvbOR z_Hzz(XeSQh#gYgXtY+YJBDxJt$Js{0iVZTas&=<*rP3#fKPHjX&q5zpjmVlB;X6Gu zbgu(5+rDM%yCyR%K3HW)FlaQ@{^$%q9Xq0mDGa|p)#Z-voHeb)T9y{7Y3}$B0N0E$ zm90`nsRZ4Zqzf>!kl)dQB$Y~(XD5BV=3tGJ^G>AMFV3v*`rh3UTja$lu>O=mS3~bs zzV=?>91GCKNytEwjpr+OzSs*HXSM0br=@b%EvgO=Ek}c{k4-JKr{qq|l0QT@F8bFm zf+0iXq5WiV{{H;O;n7(*_{Z7s!B*kQJYX1^r-=asZ|0%}O4XeVjq6nu964=VvJvHz zboF#Y3@34!XI_#P*htpoQ&ZtalSlo5$h&;1K8%0S*dr12Rjr(O&BH^@Ew(b83JZLA zADW>Lp_)2jT*GY6%rjQ`Xb=-(H4kWRZqh~0Q1gAP@HmTHTyMHz<XY^>{AQGCn<HM< z4InKyJkZg#GE>CY>Hx)=;3Nz3W9X4#g;O2&)rCkQ(kixW%Og%Xbw*^zsGK)dC)XSR zCsDz^jg|+zWnIA(F0#3Ufbzj~l7qaKobalJ6k*&UUD)#ECi0e7lJfn|a5Sc;+TLrr zP|5CpER3tThfPrXA38u`yXmW6UK#B<?f%AiJ~g!>YF(+Nxs1GOrTPlsg$97Mohs6` zJALY$2Vvci@IP<g$O8OKR-E+odJFS4y8U6Xna;NCk=c!&CAVyqMLGCrO9j=yHBOKD zXp3IM>C~x3p@vy=^Pa>4E;u2rpB6wL7Ym?m@PKo1_bOd?uX(!+sk0et`=o**phVsh zU>zmCVGc2(wH$L-tf1_9<Y3rvCSJwqNLzezoGa*0N9E1fk<MlYgPNwjY_3O!!zrk} z%$=qCx2d9Wn-Zu@YOA|Vk+d{hu1goP-fyk~UUk9gai$iH6GOV2u$e&4qs(H=^Sq0D z_Ba3pLRLyKJcXtj9d=rETLMCmu{1b=j(6N2i`9!VB&~Wn@8Lxl1DBd*4v@XWvdYdj zvL`2IABJ{@jSuM4jaC@_1{_|?jVYQCVV7eXpt&?n=b<i+)riL`H*Jq{;kxjvu_sBW z9WtCh99Z>!351p?EsDx$?qPOx+q_^8L}p3!<>3n%Kb4C6tQsW3Es&nKHQ;e2#z0)T z*K-zHQ5U`Rxm2@Q66fr!c;XLETJE}Xj@lLe>TQFii8k=4yN71VUCZ6%l*f>wY)!44 z<Ma~lw9e6GXx?BNxX*;U=~b8u3Po)A7J9-nunl)YHTUJM8WO9rX;R$Tl!j0I+ADj$ z^xN9+evdl<rTxaPtC~vVbw#B2jF)-}FGAb#h!YVyIs`~mk=e2CEXP$n;3d7aHNK=3 z3aI;Zv|^Z+zS?{j8^`xfCkX<t;cjES9Er-NE*c=*G`wYveFO%-Ce=CIb)utWR@ex* z%RNi@PeMM~%$b*}(XfJ#IE@&}r>ZVn17&yn8CwK%K1ETG>ocpVgBF)qnRn%i4U|*~ zj>HpcM*s7qd;aREJC0r?w~lGTpY6JSffnBy)w!YrsZjj(=d68o`-x^0V~=CEi!!1c z&q%({=&L?BF-g32`u&0%hL6XVW7$Q@SJJ~W#-2EZTlSJTZa#jwu;tHWLxnlTyqqsr zH;0Ea+E`)qgQG#9ePff=78_AUk4}Lct}wn~z&{x2ld~B%k{Nh!wp?T%!p-vPyTyxi zwk8%B#x81q<LDw2pk?%@MtZ+!Pqn(4gv&mv9$#t$N46ikOm4kRM9>g5W2UQlY9e19 zFm${cimVcjM_y7;)HD-45bA<fhRm76!%G-<a;TJv-lk)=Fx3^eYz90u;7URajDz+a z!JWjIy>I}Oq=+uS0J=Lp-1dO&)(|6S0tP}RlmQ`cuqM}rwrG~#$@6G}lM>=d!ijOk zgaRCp)8!dzT;c?auSUnmP@GC_svMx<C|qUEgt?toTcJ<t1A?jzr)`OLN0o1=(QV8) zP4Yw-X+LvA5TVv&7tNL~GhoV@>N1EGcV?3+5-&9tIAv?a^2h1Mi!x!s`l!7y!I-kC zRL-lLodcBNabFuC(_A3|wm&sfhsRxg9-nBa^JPbWyBh4td9SI~tzu^=(4`wx=Q+T( zSB-|jgF&z=*UQ;ED7A~_f_@xg1k|v+JP`5#mAA@U1j7g~GTdbpj8Y=szw+J%+xYT( zi{)lIx(Tp}F2`_auDq*X8=_MKV7c%PTO_yZO}c67vYg1@?0tH(Zg>U+wngbI$PTL8 zuJ!6>;%>MaVbWx?q+R!>gSgjBX4GNhIPs-x2s`k~B#yEi0N{1lu6=gQ@NG>2zfM)~ zC0iZ@<oT3nY~NhALuqv0Q3IwLje86Pcy#G{7G*FTG*hWEz2Q-SnHLQCyG#pnTdD-u z8%rn;QzhU7MyWtihBh<UDZacbIGmZJ(09i)fr&iWeUt>^DcgZ!aH4u2r?!s)ElV37 zfMQPz>DGh+^sv+Lh1<({LNp^Aoctpl(tDaPP|8ET2Vo!~oIAwfWbB-3?5eU~#LX+# z&rkKzE1W^TbdTZim7O@D>o22{&kf&C$|g&3m_gP8OK@aEBM-CcfjGMT^QDZj$+OdZ zKaHK44U5h_9I#0)!NL&Nqa=8`szyyCNwrqRxMW|EDGAIn@0iZv1M%_kXuBQj8EevM zO7L+#pSz!(u#i4w%U{`rO8Dw|x0l|nQFTMhQ0WUK+3s-f^a?^9E)l~_7SOo9fRF<= zV%z`&4p(gn%816!;!v#R7aXHeG-^r1I+@F(YPC{5vn-J}LC{Vje&xq>x`~O;TFwf2 z;4zkcRWNcL9mVRd-9oUyRV}-Mq-pi~t>a_o&6uN(aq$xT^QMCUzgoe$E;p~I^KyB; zX{(oT+^1e(2;CM6Jv{UZJ?qh~`i0kfH_-sjgWOfbZH>pJf<1tu5$eE7YCGW40;mk= z;c_%GDG>5qDgR4a)i-tQ&GwDL+O6PkKL73;<@5FRGA#h(^%tBBL}_z&0o>#)VN7Kf zrH9DLb>dAepQMX1ZN7g&QI%Y(kkGNt`U};%U9a|bD_;aLLb~<~fhhn$5AonedioW< z3MuGIC|1<)vt5`s;q080<H6P!;QPNwJYuoG{H7V8y;tki59>*H^>{t6)7@h3cT>ec z-P7ZhT)M{vbSY8M>GDLMsIvfVyuog&U|<Sdhs53;iwec^RlZuzW-!pwBUp<3;w~Wm zhRIB=DMy<?14Ubs;Ph!3eL@S?8^PVKZRCnC4B5!S9k=BxFSyLtd>r^Sjzs3|OYN0w zBH_Vqj~3|H(Iv6`GkWDS?2F&xRQ&7ohQ1FuZeC+v#9a9__fAJ#$X1YufNhb)Rc~_x z%$asZFEm-EM8)0*@@^+zuNgijxKcJQahehFxZaef*>VLhuHGq|nb5CTozMjdr}P(n z93TG|{k!@A01Fp8um~$qf{_81l<)qsT+XS3zCz`zRUwuF5pQDYxzjmqfzt(j&{XJ( zrY|)5Cs!X-<#2@}<C9>2m#4`iKJ_M=Mib#jya=wLojY|(P8ieI1q(0Oz^BG%Hh1i) ziZz-fBr`Eu>gN)cGrX-NKqY`_t1wkl)~=`-n>FM<+3ggg$a6N$^YUu*Jl&)Xz^hPN z;nBcxo)grD3j7n|(mF>h1|0lE0*>N*CPy48KEhNxP9p?{fr;g{@{Kyry_Lh<2j{!( z`9NO}agzIO(rpi(9{(LdneC49on!7{kAkYG=_c4mK}|dkjx2Q8w^48m<KBu3AfNSC zs$GQj^Xps@k|fxyu9+g|94~7GJ&d|Ni31FR+%W*mQGOK2?NJ_oqXA#~>M-^%ufF@1 z6(0_4*t~<9tG0?!yO!8@Ml3U(^3pmWIuSHs^~W8+;N3VK>v%y*MOb22#3ky$*&6&m z%xC^;V}0;Blbv8t?`ubO;%?c{2Xm5rIP{<pCpo1yGx}1T5+gb7!-XTppTon+=^tRr z2xx^%_OgKU)a8)-A>3}wF=)|n_GFAMFNwL)<tEC7-3ES(C&bNCnUo1Xl<#&I-%8_S zEQsY5e06FuL$k)1p&akC>~l#rCNJFq*3VSkf5b_Q#xrJTiwKS!V@@>}>@YM=<R*-4 z!#TPy`cFj+B^oeHnkH%1XB>cR7zv#jvAt*Q-4M}+$I-~~Ci>nprfL}9Lb*SfF(uj1 z8Pf@5oq-wtVQenh`3ep@Y^oso=ROi*{E@ao(AQyhv#<}_S!KL0s%_XZm=;j&d7c-P zkD3~DtYx=-kr+f!20YH3xO<`Nt>lDjP|($b451pBB=lP^ffZU?ImS<F*M_5_degKd zdMRyXcO>o~1PtVk1bigP0da+RlSI>^A(vRheWyI`o<zcQ?{-!oksiN=<qpb?Zv!Ya z%FRK5Q}>{pXJw(TbxgsS=rB>?`1!*>K70Pzr=K4`{ruDC$0sNG==i@r{p?T2j~_q& z<da9AJnqrIfOV8ya-*?Z>Y9RaT?X#BV^Q0?sMP|H%uDwCF8ne*@%OKq;3;+O^J-p` z^LvGQ_~thh7qQ&+<~J3|d8_C3wQm?>B3=#ppm&UgHgXJOPu)FA1U=^*MIEy+ogaz0 z-N-rBraAXUp7BxQx-76Wts!I4_A{=V_>Tv<c&y=~13cxZ$3}YwL`*hAIs9?gN}=?r zpU}$qP8{jrtQbO`Y^($KlGfI!i+ZGGIT~iIlEWIQ7K<teup|wNjbDF}11QI%KB^1L zLRHH&bil=%#@j!~u7AS5WNRq%K~ILa*X4Ctn{l2|Z;BZ2?B6%~fcSO%3RJARI~kP* zhZU_tB68{o@qI6kXS9Pz?*`MIxN~+nFpVwBdcDG1j;V!8C{b(P;au{4Yh%KiE#r`k z8gRBRmdnevLD2CAqO|4gPGMTDb<L2Cd1BiF3!0m7pKPNdiL#N=*tG7ulvU{7h!3}- zQrqQ@+1Ij#Lli79KL21PAJm{uU7I5-tN!O4fmJl?Ue1|8Fn7_d9Ix!xw^y~D^s+N+ z=*xP*F>CxsxkP)Z(wC;8lgdBThqyIs8y4vhR~Nk+Vf{zdh4duv>jBp!%3$v^5F1kC z#)aTd7qjF}{i&f=NTddq>f{b5+vD|EDX8a*T~ZAb_ScqXLm}8!SAV^;95qp88Nj!; zNpbEvS)D|suYVB&59=q#AZp?+h~wh|aCWXvZ4@E&Gp&vN11AH)E<tLMIw6A$82}Ph zlzMYG6v>|FDQNl8QKas8YC5jY6RLjcswtFS^c6xa9uNBvz={Xwoo#qt9MR37{Cvm{ z=yn@+RY<AmbutKEFRy|q_#Wat{eHIGY?gDn_!?T2Vf4ek@Vi8RU<!hxFPb59NbrJM z&+<FKkXnwtS_Q0_%{Bg(2qU^)SCr=ZAYS?TH#v;c3}oY8vo+Z>>F~CMcnxuB0xmHR z^=G*BNt6@c72&v^zF;unJZ2mP_%W>uIM|Lk*6;-zuC=XifsQ8@#_fwFi|XMiH4K2f z!Pw3@2P9C&wZ`>5V{9)#0`!Ymp8+6c66r^wodab*jW7DT9$`G~XABvNLxIsQ`cdR? zjY_g*oD#(Lv`78>^%*K^M6_4Al$!^7Okb?hG3QV|7LJS1!NHT+baB}|d%}KPXHUB7 zS9?Wu)B9&B{G!B}h$E3C_jT3p!@1~^CO`_!&ySNSabQ;@@+*~&<4I(Mm&?uu>awJ@ zC*n%55p9~DRhON~W<GmWuBPb>U?{D<FQOsU_da<xqjiu3PvS-Tj#|e*Ad|JuqX+bI zj_mC0LldgAB#x3hDiXjT6&RWt9z+IG3NtdV1TCVk>jcSTaz|eGKhXhR&puGk>uYrB zV#zhv@3Y5@S2u(B=($c+Y66L@?h&R2k*D4L1Ko`K>f-(ZM+~{YQG?6L(v8(R?5mM( zt7!)7q0v#9AJMCwRTb4aamANjM6YTgConLoRfOJZ)4Khalzf@1<SUw$e7kl{*~s*8 zpTe;LHAwXHj6nowwdsNpgmNH%21i-cz8nx6^VxMq>u((llUy`P5OsZ*y*vs)04muF zM+ky2q69&<T?$VNt)t|<=%+hE4RefP#3H^dZ@L_8m~zgS*Xwe7wVW<!L2Q+wF*Wx( z+;Z1<ITSHvR4tPr>HL@0P&T_>LA%H?i3k7a3?Fci<W9STaLuk`S(>?U#wIy)lAYLy zIg*_qo;N<Kojqq@A)aT??Rd7#(iw#Ks{O79aci-aqL~29MsK5)6%?3~t`I0@Vvg;m zNlwIfs#A!knHnDf4n=l7Enr^57l~Gog%RyuE2-XE_A-4ZFg8HykRn6YwCTI1!&Sxb z0DAN*bx^L3&EzzZG3kVsX(vdX1MC4i35t=%Wru1$cMkq{kt8J?7lI`%qL+?2U=YAu zp`zoNuphjN0SsJBF&tbbZ#fchbd_)jT`5dyi#pneIE<DIgrKX)j+g0dupGk3lnQ|= zkk{&%79e()_@a}M=*{Zr?RFXMeRpPcgtrX;w2YS2MO?;P(U%mF8pxP-eHyA*1}@S= z8kc^|aJGuy<7}xyY!Q7T(#ktze5L%OJFxJb(l{@YG1U%ZELV(UV_NrYc}>%|7hQlB zTwej;g)gih<yCYEPs-K_l~6xQ>^Gb)E@^fH^Evg2a_#UiIHH`eC%r%!7!v&IFVDhg zrsuq#<9<RSJqI0Nf1!=`DorDXx(A$@g~pwT^vKDIMTZcjKUIe<b>qU{yn>aEjV)#? z>zSH%Y1blT`91UeqB_qn1l4I`r}~96)hBAIPwtxPK$PA;(~JJhpXoDyrZ199&doSZ z6Am9x0cbxz?}WjTo_2IcG`REN9FhnWCT&~+vK?p>$--|Q3@OLSg5;~HRSFEqxT6=$ zcFVF6hM3c34orZYE%ScdG1ER|GegPexK;%Z9t3jE(6Z^g6!df%!N${lr!s$zk7*Xl zoH#txS4Nou@HVQ?!m0shRJC+fknDr(`dYtm6&aeVmekxehX7oH&7oB&7yu=<VE12Q z|Go_Mkjm?L^9YlJ=PD+2Rn2|Lx<V;Yf1;+;2xN)|98^Hjb{~qZwh+`ZNCwo&H<*nV z8q`Q(UG^njZ=6MMoo8m`ID@%!CU7h<-zUi|;Xv{?(IYP+*x})yD)%iFqU`FZwmqTo zS5|vU#h(E?yZtt~az075e`|DIZ`BHd#>{y&4#ForgfJ)ab%k>YM>!666j~hfj*RA2 zR6l-#pD1|e^=qkGQuZIlk0PfFlDC$EyXiDiiF4a;T!wFdbs5GI$O#$_V(zuoFO3lc z2?KjZUE(-O8*=1)?&7I1BOEwJmo?IIC8Px&e3!caVN$FvO+55mR)AoRVDY!WkPF|* z8uRH|JS%WOb1SxNmmaCwZm%LW;?tumtZJYuI{s&;BxCz2ON}5$8};NA5bMMQSKMT8 zfK8%y3pcRwb~{r=NxcAZvs)O%BKr7pumEHc)gA*3jPrENsLQW5OA?+6noBBn_2TTL zKaDR9sYO#pNn39l6T1-E?PVaZ4eiE4Ib;db9Fda>?$!y6=SDD!oj})QpWsdB2#|w~ zm^t9RZBoTKA!Gk9c)mzav_mEAb33k>Y;$wf^OuqvjfGD9lIklDFbDLt`kn&Or>}}M zQK=*rEw!YeDOH~kL=@1%8HgHPh&m>!v!z!ekWm?JZ6LJbGx=&pwGd2!Gjl4Udt}F^ z^~}urCW2-SjHVyjj(3UYTT-_{y|4o=4)*?-3p*`aZ+)4Wr?)%7m}HOT)GiQN!(1?p z0uADGRd)=8b1T(Sidb2aw-fU@#cr+LT+szMbu;fr#1>>~-lzNK{cYOGuUA++s$wIN z1ID%-5<JZ324kndFX!{Jm?ErGQ^{@0<I+fYX1Vt|3aw=o7*St+iZ;ijM7QCvzLW#s zJZZP9-CY{4WGIek@;X$-s?MRB)T&`q=d_<8IrOs1wc8Kd7yC;q5?3Inop84@=wq~8 z)*C%;aJX^ry>X0EJ7;yD?mzX^FrAst`mhdG_5$9B4-coV^EUOnplHKvlC>)>Edy#L zXDbm*1`=3ZM?UtFRfwxzkyC@y&c;Vg1uJ|(Mo#OUPLzigAW%j_w)A$<G$M0AQp$lU ze!wy~B2<4)dl}bAIVMlR8YsjQ^+?6~o0?dEFnLFTr2&yH4GX9sOK&j^;;HTaa%V<z z@+51{&L1;xWa=z;0*kaU+*v-<jEx=c!+_|z?ro~$VCbQbJ*XHyd>E9&(=qLu)x>0+ z{9Ox{a(v5b8abBx*?)3b-bgxB3Pr+p+gEGtNKBX7>O(yVWBUl65DvFA0#zw|`5@!- z6GmJ~F?1vPV@_r*%c3udf~;4$Qqy23j~<C$f}grG&AeeAddO~_dAUiyDsK|t_^az^ ztlTL3W8(-NjY!JnQ>d$T9Hg@i<vYkkcXp5iy<>*ye2{NeGd%KW-~liGmn1jhK$5?4 zz_4#+p)xQlie#zd!Dc!yUv1L))xkSrNPu9RPXfmnCeot_J(L|9RXt#w9N^D0YUBYu z#(%i36j4E*an69WRWE;-dy%g+pl?SP-nW-DiPcvSgl!i&Q%ToLsK|l*P`Ayd)Ga@$ z-=7agtL0n`>4DgC{-l0?J|Hq#{=|QOK3M0gvRwS6et$mLEY(}T-aOX=BvVw4qs2Pk zKCScte_CT_LT}8qW_t`Xr>dMK;~G^=pqXglXd+T&+QN<inn5BFTRG!&PD#XWLN7d) zT=I^S%T3_$l-y0G^q;-bUoWq`!uh^Zw$0<*15c)vcD#AZY+JjMNL0lxMFvLG0inmJ z98V-|8Yqz>&Gb4s909A2{yvHy)8B`2PbQPvo#R`Wp(AXMhz}ffQR0-`)`VDNx`T~5 z1D7iF57|RU>1$JIUv8baO5ey+m;_2U9qb|~q#Hl!l$m&+#TyEL2ABLP*Ak@mo#pi= zz+pLUi+6p=@naX>QXTJ+;A)PVs3!bjLDm$g50tC%aOCX6tB_{kf6aAX4RaKv0W=9& zNxOD=y^vvYxfb7H%fjOb_X3?E_^#<9o#~UEN=iq*&WBXyJ($-;>*@S@=6OLXRi5>+ zSDIR97lP3UYb(-dx_+ff;8+gcSBbvv!qcK(5hL2A4wGD0e=EfYeAV_yOL>hS1if_i zLrJ5rO}~2j+~{J1zHIWmVWYZgY;EiKEr&>_o~sQoi<AX~gp~e@V^kGd3iJJPAnG#& zoHSuCw223JC7JtecJtd<kS1>wG(;1NqKePqgnIub1_{z6ImD*^P<qSGEU@hTG>fxL zaWL{tc!!&5Bxnr^9l>nXi8MjqLgTj}8CJvtG3K!>98}Svr$Z9cNOk8RJl)pYNR^A4 z#4ky|LyAHMf9loUd+WV_y0@z{_OqypH~qT26Z@TvX&6-mpns+&^_JPXREpK83!bQj zvv=m%WE)A?))cv#`tF~p*d2YZYACg7%6Hc@<)2?~2@?)M*kOhX1G9<)z9tH=3WN`v zmFc@uC)4&2sgqchUERqG>PEeyAMtKfg*B;YDu&6ew~=L$R(sK<2s<^u-P|HUR`>`u zSvSJF;>y}Bh~i?);~F99FcQklVq~Ov;<}8sq1k<0n`Xee6ONG4Wk-(O)zLVDLHaFK z&y!m|K>ID5GVO}<AcU6*lOkOnEWacJ@4=lnQZU$c4r{Ixf~eYUnc=ViL1sUf83sV; zk4;vAu%LuTZFIEv+%a0tqrhu9TOGS~H5r;Kmg?j;nO;|HHMysB0i%R%-#$K}TA)4H zs6J6hHBNvv)+j06yFJF%yh1zB4XC^rr3xccpXmG_46iz|kvyi$LYZS?%&~ut$@Bel z>?e`Wx%wuMTEE?HX8X3=fUR}B#Om-$MXyxIPN_iWjrIz42PRMkI)bU`^J)5h3BW8B zd~<QV-l&oaCbw3FTU!K8AFP*B9pT0go!HOVk=NxbB`4R$;ePA&60Vj_L#Tk}3i^xk zRE>^}3>-S^j8>yJ`n7dtGBkgyRhhHUggQ*D+`iT)GIw`CZR$HKwpLHGV)qbprvn^* zPaN6qs-l{kjQA!(ik-zKvG42#cT;pD#oW1u8`r4n8k!D`>r0ldk^{}!)jP0AqDD*< zDbbbYnykg$KCBH@78x?{A3g9$omO|?Y}i0AguNG@#aC0PeOC{60b}tJ5pZgT9;rCw zL{8QS&VIe{=wuJA{HH#9d~yn(BwKh12=zuW#;J;PqK!fr#=tky_d-h6>^pojV~ZhN zcU9ylboq7*6JTWm&IWoTF|m_YE;#%_9;MJwmo;o$b-*f`B%sK&iv$3oro>o1fH^~h zcVNNRVLGq6bt(k4ET8I7v6+DsXcZo6vV+`RD%`E25oDt+7!fIKCK?wRA}F$Lj<(lm zk1KX*if64m1ytxOY>#sG4cbM^MUxosYHFO3#MGloHVd>-iQ#3A+m}X=VhD-uoWkWb zfvQ<KUz6S_oKyM2u$V_dCpdB*#r9ETk16O<A0S0?SkgTC_}IgpR`lJH+J$gR{+v=A zah8aI$v$saZ;~+73?E8Sa`r1D<kH5}3{g!NRf8_wSDsd$V3_zI#wkw0lr%cjC`T9@ zexa#ArV5(!yKp8&X1Ax(c$9A0&^^7=&^`Apb5$rJeWDXq9wW#Jhl;lt!mNJEk|52p z)izyirunSgrt2wf+37Xyc-yR)Zb=e-m#(+$PK-Y@qI6s6Ri?A`b~GL5DaRYe<@KuE zj+RT9&`K=c?PN@%+0}NQt}eIp5)T&XyDjZDFwE6nJ==B3U9nwX&nf547D|fkJF3Q# z7>g|F9$fqt;I`+*Q4+NKOoz5~69(OJG|m#&0Obii501+0C<q7V=j-m-Fd&g5Kvcb? z`;YVWQ8${>6=iF|7<ik(+IO~P*VgT1wVlq#TQM7kwLR*bZixj+=V2R&@bU0S0OG^* z?pb#{jV`z_^`skJ;+75kyVGcfo9*F$^v~ZPopz(Sd^cX_tLfEd%is_Em5}l-=%Hd- z0Y~4D2meTh+k~#Qv3UpCmT1Mj?Rl4ST%_;PZJE#0P)el7S9lB%0m{&MK=pYmt$y&N z1%u?lv*%A=KRq98kB`GG5{BnPT%S>nd(@Y!EV-5F(edCU3Z4jUIH1jbGrb~t>At?Y zk0>%vy7K%i7)C^kXhV~?M$>Xu&^9l5?A<Uzk4v6;dL@tfVi<83%OjyV@>E|VE&@#` z$si6K{9Ikq<5fI(Xr9Rks4RTxWToM5$ZImvW1h3}wz+e^MfG@8dw;W1-&>tEeAMWx zE8ZUcK`#mroMy;v`{_wBeJADc#c&s`vxF$b4UxhuS!bT}L$hT*t?#TuqsaA6<eEm5 z23I+z-~y`@7rK3XEen~Sqqq5u3Evi$TwQ0CqpAexqk4a6^jrbpO27G$3RoG&rT~Vq z)_B`bai+yDSCh?)N>3m$%b4d$7~0W=yd`%2RK=DfwuCn-!~+Dnh$Ab5N9&LDLArs@ z9Yxe+=HE<&K;!L592aDF2dXy%0*AugO@|Q&V>5mCj!FHGI=;A;agElu=1fzG8R=|f zK0Ywdvmo^9Qb(wE{gvpQ72^rt>7zuu8bl$__s3_Kt5Z<Dh|_3O^$&hHS=MH?Wjqpv zv(7;qQf;Xj9tGXtNGZ~tf^M9x@+woYFQgj{G<RRC%LXUISf4c1;-0&u{*pCd)$92} z6A5nX3^wm*io|C7^LOctgwD)5`*LJj_o)j3_EdeS7ULJ=X05jUV_<8+9gPz!`HmRy zPg!!G3aqY1c+f_*W9w#dY9eV&c##Mi{{((Cl>ocGoS#R?gC5ukb_j>U^)X0pcag#s z2_4jr&#H9dwAO4D4aF)UeEgiK<$FdQ9=ay3@U=AEA<|BP_LbVY-8X1vh#76re45qf zg(*1P1+tw6f&r9qd@3>gft61C1A?G;R45D%G<AcNFm^mb^S&2Sj%^%`uN^c}`a1O7 z_`v!bXEs*IQ1#}nL!+2WT8B3$KWZSlRjIg7W>BFDmC1~QpX<EG0l&Dpe8t~;rw%pw zms@(J7<p=`DOad77rfS&Y4u^;b}C6ETzh5ly|m7C_e=c1X`zQ!GOJ5t4xo&fg(r7< z0&_TdX8;5^L86awM2gl}1quwF1V=8Y)fo{_8~}K3dU1Q>503S(+~_GMRFrm1ml{LA z*RIa?s*j|ECUK*KocIZq+J|bTUn3?cQ48$cAsad>+6DqJCfas%G!6@nDgPPA>EuM% z)^gwsE@hHTwp%HHZQ!NMhO)*)LY~@ESj=a-H!>tzY82^Z22eN~|MVB^wXNylA@dm~ z4?a6dN<P<(M!P7xre4$1P=iFSX}OsP(FNQCtS|QxTvY}`d*T+}q8(>%Ip8dUyAsWR zOMCZr%LX7}qqp}c4E08T6<Lgx{$MnWM;0=1rsfZ2zvWI``u?lUEF8_-_J!KuM&gqL z9x>!tq8^PzMCZYjc4=bMG?N)koJk0P_oI=4Dw}4+T;4k&-t^u>n!`skfbf<Hu;3lk zB3P>%Z&&868hoG+4=1K^hlf|fIOzrfQjeF##54oZQ<<nUk3eITD87Xz@pQYrG==pI zk55lffA3*0p2QQElPLuv$Fh5M6efo)x=7rt#0y56XCZ=nQ7;8WyDRqsfSY>UCvIGY zXu{ipg1$@wjlJMjHk^2cd5=yfh)k<{UHokJ^(sv#0Q)cf(rRwm3{!^qcpUBBxYobR zLZ0)=_bIs=yj9_p89e6rgr~U%jUNGzo|SP9Ege;8sirXg^d5!IG9UBmp1{l=o45V^ zWKeR1Wj)6FL?{SN<fD-_Srr<v6rhep1N4$!`!=RRkM{u$A9s-`bg5`ob)+T=QPEjj zxd9*uA!8+=pP1+Kd;}x_Zh@$|4BB)7unuN%G#?fk-I+;Q&;;yP^jS~=$3FLhri=~u zf|Bh~BkrP^hWEnvwJ=pwxg3_IYN_pM7~?hRSkvJR>gvs&XfuBk9bCf`YuVD5K%bmb znXWLrNLxd8wl$!P4Odiih^a1vl*0^4M7%0e4MGla!F%lAI>mDSO}dy~HO6Q#T)H`6 zQBai)Y5!GC(lQFkY|0M)G^+q8>~<2o=6_HHX<3)6&1Za=h?V38t3h?;obg|*ZS4TO zl2HA;QNX67&0ZVEf5%6?cx=0{(Gk}d7SsOR8e-e|4b_MhBMYN;$b^y0J-*F?`4JJ# z84T8!A0Q(d>YG=nFF0qSt$5YtncOnGogxo?Ree4Dhi+fW9yY2KVp;@$JBDY!twyV> zG$UmYZ5@QmoldD&8}HF+suWi1ie@Dcp&}5CiOQp+BK9hgS?aQZgCC@$jI~bUQ~~G! zxhjoC?a#1~O((KksEZZ1iy%7uMv5paPLVctP0VRyDqIAp3bvnf80Ll3G|Zjh>P8vj zTf4fjhFG;U%}msDc8c^gk%xz4|LGn49&!-dX;{?sE*2G=V9Lf*jT|Vu#jyZhK%u{v zPH~o>=2#!nNx5`VRa4TgOtOq8nTG-cYL@gI;M-lMR(@s2N$=b}RE7PJGPNip&cV;G zQltz$QMGEQw1?@33M-*%phN{t5|tsL)RVo;G*x%N*Ay?oplC3G-HT;r+_u@sP}jb) zbl{REr>qDjra;!C!U|V3lV={5*+Q)5mdWh+goG>xhkEOWRk>mz^X+y!L-eoOk@6LL z;#zQ?!^4G|epg|*|2WSW3=`Y(7IC89vQ2Prm|QuYX*rHNY5H>%vBDWNUe~DCi~&#P z9Z%9!^u5NL&>U1jHi3`g$R^@h)*w^>Ohq_h%>A*7vqs}TbvWh^89UKx>M%RIIK5ye zGwN~LL6#bHlj#z??b-5R1i~p2%2;&Qc1vJnA>9k`(l4S5Zth5l`Qw59-0?}Zky6KT zbd$knw0Al(^%<im&A%5e|K74z6P{Ys+s+X23T=VY6wEA2%JRc%#$LwiS{{NgwxzW3 zDcY=I65>c+xHZH;&?q$RdCPPXp2LZFlzY2|7=5v+j1Y*|%Q%p$K=W!yQkOyGau2aG z!_uiwnQaM}dkHixL2Sgpp(_nGtCdiEX+4H2M@?lYw@G3L>vVFKhz6H<4VrZmhZx8N zVXKt(7|LAQ!rO4rR*M>_S{$#_;|dxB>pjb&=b0B%@AItfD&DAOwS(tSQ{2}}ddSj0 zThG!rmC?hq<(x#*vUsH;3l#gGwo6tdkQ}1{`vn0I$qophfvQtJ0D!l$+UXb0Nx}^+ z+UE$2V-ChSM%d?~z*azm;ysHe&$5L6qs_D(JdwDJ2mDvU1SI!+_YXKY0AES$0$g@! zuXDN~tGZt?=+HBS*Y@K%Zns{dUW}oQVxD#0uV{~ME7UMn3)$*F%S;D^5jT?w&#s2V zcY4`bPlyCx{<uo7IEca8#iLXfLM_XeAbN4@#QJ#JK=l7i7>WM>Wl<!K-<R3tbaR|7 zKOC>8zaU<O8agDM9?zG*?0dE+Sx@r}WAaajrT9%p#;OrAZ-Y<JC28`gRf$?rk5FN; zUw0aM?a#0{kV<x=FMQ*Sf3$<6S4TnE?zgT!goE_>m;W3d-BSh{UuMx?vgj+k-lj3y zt}tHPj6p%S7%l**F;(!$LBIWF)?^`8J*RX4G-_qgN)a%0szD7x(^n;>(p7e@6G`|| zDc18olhK#Tz?e@gX!dNk2vZg7u!b<7134M9*th>|f|1hZ@;Qm3Ox>yQhG@6^v%1a% zdV3;+$I(CM(}hGC8Q~`VAU8JMN!9NqW7J=jq0<WYoicLX0(7zwRL1>rJU$A7T^QHm z>S(Y9P1pC0m7DGVd=#AS7U2#!B!D78I5Fzg2}8!Xz1jMz+MSqj;`DL75T_~nAoVEw zq4GmSK#<GCZvdx39n8;y5smRHlCT)3x*wdB^B_idPdZoA4<)<L9tBu(>V?8Bxv{5- zsY$Ol%fK}w``WV)xTSem6<YEnZJR(bE!qW)y&8W&DG+(*$J-{1canvBOe}Y`UBruJ z%V$XYX!w6SN-NGCo41`*?Kv=ARa*yu4Gqa2&6epVMt7esNzk2cZsN`-Kn7KJNzkKv z4iK+W;2*JGzrcG*tCgFZNN)$g_=aH((cRhfDhV8V9@M}+n_ppQQeaWD^urU&FNX!= zrg!N@dj5)cl0;&}*aR@dobt``m(Oa6Kl0{f(k(>&WkfS;HpQrXF)fO6@g46AP2oGu zlAE>}Ey8^IdsV>RcSiEgXczIyc&T^wefdktUqV)wqQBvdhY_XszBQ4zCY}}M)SJN5 z|0`o*{T5zDzSzjBIFFiBn;4a2RP^LOPt}iV5Ezs?+wvHx)jkMtzQ^IGIs9O4?`F*G z;N(BCrMByjNjBlFUBGe>0brB_^dU_5yR%E3I4`{^JL5F@P3%-Ot@QN&ATF^NnA*+l zVo9bx3)l<HY*8sEyh9}|4%xxPuHDpsQ@6XF4}?{qW^FyWqW=mI{DLnwa;3~Dm8Iu& zFKOQtz;lFrRO#S5I>2-l3wAJKfRcuFI!x2P;5CNh%C=LodI@xS3LR%9_0F=ILc8rG zp4$3-dR4=qSHJ)ah@@<{*pnj*$Ai&Ob3ZuuvzH7!bcz@mvR9`nnuq(glN$vY5m`k~ zBi1{eT}{&S_TV4k@WD9@j=!ZuwdtL&AHW`29){iMJ7(3<@GTD%arMXfpiGBh2d2<3 z_wfFm2cc&9|60w0I00dza;i+<XUVOh3V|gH@22Z%Hl1O&4ko-M1(6=vfLB4Vi(b*o z#MW%e)hjfDh96TK9NCXTNrT56m*{nt3<BBw=(FF^f3!W)-}yQi+D+mIYrv<%p=ql_ z6$?e+W}a@^J<ysTh*Bse_>qQCI>CmJ5lwsD5G;!MrPqiQb(BZdFKFu-tHk(Q-Efgj z23bMWV>VfRVsbWS%N(3ykB55a!GSdp<{TB>a#k1(ilA7z(>y{DFnWX71)~%Z`0mOQ z2_xnwDi011e_$-VyS^H|$l8T<XbTa9wM_6{)TaH`{cfvt0B$R#l>J<(g$hR}1kInQ zTYLMvBy+w}Ye3MD+Ry`8Uv*OuOIcR4<`|y-nE4PFFV%5MW=*B~-=rIsyV|{|AhL6e z&|tkVJZcvLwM$evj5Ay2PnqjTrf0?|$r)m@9|$=_*e=;Sg0TNM4w%M^d~(7OrhBK4 z8PP0x7%Eb#tP0!XBNK5WKYGo8xji_yM@7GF3e|a!ZFCMregp3vU3ROUUsaT|BMdhx zs9vKf;nbq3WSiKk)%wnob;plwkN#X4CFD%p9!p&vNu2t-$SBcrsl$}hJhE()7sJG4 z32>w^VsWi^hM?ez<7MJgCV!Dijc8T$&YY*r4QVp(3b~~@Gbv9CFz0QjKAJH{T*H#j zbZr4;;_Uc<H#V^%%OgG6psHw^S~wvJS+;e}HrHzfyQPIKUsyF1R!gni)<9)8id_}^ zGB^ohz#{A-D)-y#c}9EvZBARne8Jd(9F1T)n|-Igh1*&A;m@n(dwu<iwVo2T!0Zcj zhhVN>n7gGdKsXA%pxtt@#wE>%<$J#R<x8OV@fB2XfPkW^y<~{7Tah(`*vgOnKwnYM zaktA206%VKP2Ps$Hu$Jw3;L(ZeX0dr#|*L>%y4QHDZKOWEaZv~CPQ}lckYuPa5gmw z#SC2!B25uiW9i$;&}u7;f&ufLhB%n=r2$u>nL6fU2iOU~#;jk)Q!0>;qfBg6ClV#c zoGg>SDl(ae;y&0eVd8iaJ}8MK9yzmBuPUg{i0fbQ><A==MvK+?icaZAEr$Ez*JLV5 zKjcRV)7iQ}4hk=uQID0S2AtUn<UqP;qge^He^Rc1un@J{=#zD&Pe7t`#tq-F8*zaR zi=n{yeI3g60w>x$srDgCHIBCNkofg+R<q)_jJ7|vhzP2Ow1?A8I~ycksG?gic&3eU zHBV=1T$$T>m2sw58B?A>*@)-;wnv0U%1g8-_Rcg?)T=p=AmQ;Hv&)S=${PeCGZQl> zG<#S(a&wxORB4gx-<$WpQ`EE`bBd;-05~~&L0{N=%J+R1)wK~n>%Q29vAH(b0PBW& z2wYfkc*uK-9#Cc@=y_j}<0ASOwi>{Jg>f%b2s4V>>B+&}W7J^{^jcNrTh%{cqI{ib zzoH^l@P}%qsoRiGYx|wv$pdG+MLg)-JE5&4h%+YnK~U=<vtQ`hTU6At?9*@OOBVJ6 z7I)f4&3AOt>pg($C_X?WgY|_{HJXOzDhN(<6}3BRXJ^TYQlCM094HfU_-$CL>u==T z8Tz7%@g>IruQ@5nmoyulaZG_$VSA~qE0cU<4Wqr!(O`~%JbP5C(12zXU8(=;jM#t% z-C5K)x|yBOw?@*Epy$V0;QC7z4N}e5Nn|%0QPQ5TEAgCqS&QX#sYG?flGTsK%{onw zuu{dI*G_@lG5zI(^4lHAel6N|KX-6AV*t56R=!UqmHc{83{m`uez#ltd;E}pdycrg zi~j6bLbWS31N}~Z%)+YmY?WZ|Hx{cLd7vR+$vJ+qjb$v&Efj<4L?14dXfqmQB!vvk zlE<BFwYn)I&C6Mc=)QC06tTgD-b8n>daD^qoiSG0gxIM%h5MT_FJ;prlF^$qzbX$r z?U&>6tSRUsk*Xz3q}(vDDiAC_+*anq_<+8yy7>PfAL-BKSHGuk<yDTNX{G(Yd!m$9 zA(!vzfyKY0Eq}Uk@)4u^`h8h0lD}t>n=c`zbU{<`nj`DbL%i1j{y_}0SglGZB87oN zdvlU&FoZSK`d~fQ@0ofF41?H1CYc6eOII6h^ZQ;da)$MkLKa0*$mKQFgF#MRwkIF< zA-aO;`2%qp*Q>e#oHXuAroE}91x3aN0Dx8gtE|4=cPs|KdA^HQ*9&j_l}7&8J|-zk zYJK8%MyI%5F%BIp?77<pP8SZfy>B)5gEZ<zC(X~oSQ`mbueNnx9@{<-Y5%Zyej)2k zd8G^y-6U&}C5Y|1d~H$2rwr7S{P)hDG|wZkXNqbw)tQj)v&bzkxi#MEm7QJ<NELw? zwH~B0B(O)sy;i3vn-M2X=j>~Vqn)ZyT%3-L5@?ok!U?XrpAlaY`=6=q{%kq*fxFX` zUrRxxO22mPhUz)ouzJsDdR1a*38hzk$YAe}QeIcpTC;%merE<ojh{g}P8yPNJj|#` z734Xtu`BLzf@d?{^l^>I$VB88TX(u@vJFkChe2K%o^?JsX024dq@jDjmoL8zyAQeK z(TAiq=^`@{&}L%_-OHjkw3Xx%Q%?y07BqPaN{mo?Szb{M_hY3U-iBI}ECwW2ot#s7 zHl!^TQsl{Cnh&EgPi}(;K|I)p-lF|VK)Kr{khKs@+E{a~ms98egGa*(!Avc|q^-L0 zNYr#KmUE7v0M!M`^v~7&31QH8LPGgN-s*{UAJd2M8hqu5MB|pKQ*tDZadHHY(9>dh zz<z}Rj;zPsWD@ClsmqPVM<Z>8KY`pm(QWIZGVn#193CDYPi^>hwvx!zE^;*9Zt*Qd z0hQeXp@C@!f!y66A9?b3e1yL+FdI5Hf}`AS_%xMYPv?O7bT{aG8Ul#8rh8eUuxYIp zZk+oOm2cHaD9uy2S#UH;(OwcaSDuzf$;0C;%#+vf@GAyd(RhTg3j?b%q}$X8#%zMB zg@HmHe8J<@R%4QD?#%HrOWI}5qVZrD>M#S8LNjiN83TQ)j>>R4R)HdDfYE`Yp-}%E zoRv}0IUk(nHFnT*XjN9$#35c8!RM`~2>Josp%d8=k+reZf{>&bUM?K4s2ZT1!^|u5 znF)<MKLqxdy<xw)i4!_Ka&KJYLHo{jI|ZW^*_5NBXwgY$@6(&LJ0Y6V>`TYTk&Qdg zRW<hT6F-(agC|xURoYr9fMYRQJE9rjGcp#)fHXUr(H1|rGS`v4{K>igc_<Er6@5T7 zOH737i@wwO?g`6w3p-SM+7VwwN}j@NGkp-@O6{UQ3|W6GS=m(cTLcpMI=!J)#R1c~ z3|iQJ`TZ*;w#HZXu*MVM*l9>NjYE~0t}usebvse$jhn{HdE1r>%L%6|-6tpRlb_uu z4~M(Z0eN80bYOfGL)t}zn3m#fsYBl45mU`TwiomwQ~*T(-uBU!68ctN2mGE~Q<ouN z*vi4=Ucq1*D(&gwx;%Xg(AXs)##e`jE0z(hz*MN{co&KF#HohATZW-C#%*VkROf<( ziqqqCAwK1|tG*rx>W39aj$3skC5)Svd4z~4(7x$xN$YJGz3sz-T+2a=P5}#X7ZVLn zwOAC@p9>>c3)^Q%iw+Nbunb*+atY1e&Kb#NI8KPDzU`wg;~t4X3nI99LSxWIA{3&` zOTT685o|m<Mg2ObF+^YV(#9S30}qwt!rw-OoLX>{ROqs+IL(;@klBRLFOe0&M{?Z4 zabD$N0zCmOAr;J>q3B0Cd?GSb^r?j?P(_o$I#g`+W96z0O{aOc7}{!%La8l6Q|M?k zB;C_hsb(N5oRqfRm-TIg_oX7&4m;QZo|mI?wL%bphQ+LEGG(q}$5Avr>+mwv0gO-e z-k2r#h`M6)CmGH;$-Izp0~>I3VPvagVY|9E1w6+nIXN!)JbRj4bT;77th=02bm;WK zcnEXNw#Ay5(1O}bM>lY`pdJ`p(0F4MPR?L!*3aWM9P-!8*}KwY88X=Jj>!51jO=_$ zvp}LEr7FOV3w=YCCSlG=YxSaA<vjj5v)PEzfPi)yhFIALPs??jnZ)lzAdK_KbWLnJ zPxnWho34qZ#WAq1Ebr=t$kYdxN+UsSyMWxeW>te+cD#x*52GH4gkbv7^t?jHBA$o= z>75U1ei}ZFS-&z=G1J1*!}^o}TCJXO{4>Lt%P^ies801^iincLNCsK;QX}onb4fFX zM~uHkYyYyb-J#Ew6}e%{E{J>9?^y0k*Gl}ME~80~NOYcWoBj-|1Q5&E-s%vn{0hlM zFfLxT&GeZ@dak95>6|zM=5k_H0^jU7Qn5x))Zfzgq0nlTifi5Id^x|u8V)<7bUM>H zaBbGRN|QS%vz}5Vc*0q{r%Qw;!9dmEFug8FfjNXwfQfLzF`PiH;`OxZ)|7TCNK^v7 zMZy~swwxV82kM>}K?#qVi5q=mG^MOx<R&A@{)NIeNR>*QCP7&=Tbd(SMjidM?=E~Q z@K*O|409BKMahwr(+4D(+vS@^vaDjsnyF}#FYFqk^qn#OFpE9miLxAx`n_16RhnAa zY<+tf+e_>eB7md0>%Mb6u(=Ra)udY_8HEa5XhA_;@bR0t?8&`I3nV?w3Iv!`-4fYL zceC)?%<qIaXrW)L3PWLBG)#PoQdoT!c2qi?Rd>FEeUuV^zx)+^UgfC&L&zMpF)N6A zni&Fzfenx+K2d&s@Sp7>IfmOs>e(FueSDrT4H?LdJ6D1igAb^3QweR-+(Lhr!3v~Z zT8KG;0v}Bm)AfYUlrj#x(PqSLed6Ac=gAoHZ%1~}PWo0oK32MN>06a48i!TN?yZZu zN4rD?IW>U~a2El?K-Z@3iEdDTK^-*mFOCdb0{-h%D+O@yhaegZ_kaOQCD<rODf6hD zqrl3t0rx#q*|h_q$CFGprSSj}ZSj{YPjj(77PJN(>RLcs>KXG~Ti4i^WLp~<YIb~l z8jkP^$a+hFIK*Iw>&lO~wlLrzj*b&B!(><y2^Z$iBONHbi~y<t0Gd`F)>cQ#umm#t zje5P74*Hp>uDz>YIe3TDU*OLMx_1L8qwKA8_R#O`qF-1JfcaNFGik)M1g{VkFvJoG zj{8=A9iMIZuV%JmGwIk&I#wZ^pg*&rneQnZ8)j~QvWK+p%Z&R{lt(?{0y4(6DA-R3 ze^q6@8;3^eNv|8V3q8XFC3r?6T1FytR?QEDX=1<MY<Q}E-A&0meG-j34P3*KSiUFP z01vMwXX6}*2?$#!$5qam?0QD^dk&a<%A`c&h!cOf;v}xWN_s7abx2mtq;4hp`{lyg zbx9dJPXF$D<2>M!<bf*4K2yc*e%&>?PTX}XGfk?wc`_Se7ONPp{IW`XfdgWuZLSoG zRu6fan?R||sip~}ttf@!16Q(iGd->H<71jwr<u`7DFrwOnYNlvhySaDS&)ioZUx`b zrx__C!N)cSic|%0Af$KcEID};+1zeR-w@GgzsZtyx%pCMZksOg3kh|psI^-LTR@q& z-;nt8Mj%vle&!$&noZ01@uxi!;L`Oben=PQROxZAr*>{yKj}?#B({{99*<jrCOu`y zmQ3vm&PL%_*f`sjqilwP^)zp8kItijj_Q*`4rfpA@MfbgIR+g0EM2dm$Dw7v`JKGo zYE{($I+5}c*zd-o@I8S;viCa*Ob*|wc`~uL4;)4=@$xIDYv`GTOffwKeIh%zb?L3H zhL9M0-N_kHoy!h-=v%fNoBl%Fd(chA(%gRmxx`=(o%Y>=<L5GbDH}IgtkTk8mC}Qf zh8<nqYSnr~LMZ7RQEmc6V<Y1tpPPizJf!Zcm83!V(#n+K+68?43DquT65qYF(lp73 z_XU=fI<!_6gB(XHYz@letH0^|iGg?3UfZ)g>7K8;<5Q2JrYudz@r?SdgC4LsY85=k zAbnP(p(a*Ct=00h23*G4wE~u74sMG!*#Pwc%(Ob9DErj1pe`Lz`Vk&jt(`KG7U8{Y z0<F{dQ1n{Le$6584)jIG06|5)uO>G`84vkHTiJVNjty*P&g`Qy(nG65VaxcIp+clF z+7qubWkXHMJF79SSA$WQVTWNW5kfhZ)B2EA(`ZJe?agL6!%wLQGU&HlqX#-u$yj}} zfZA+YP{jjRm2oW&T5J)ZOzae>AVW__vXbj18+ByFXl>f~f^`mh^|R47n~QP6vC_(? z3d^Q<RzhOyqXIF<s2|b9I*B!R8%-0+(kGU?U&2lEY<fBseNrxvkgawrHy=AZoXSB% z+oK$POI2b8kDgZ+zkW{R1B*ll-c3L8P}AHTFrk;A0C0r46^n0LeX^2B$~2xvDiVBV z&V$E$jV)DVcip2SURIZ-Hc@j=KIH&<EN)IX`y8__U4e|+*{cfU=~$p%XGxEZpbHBt zo#PZntf7H>u1qDwSYH(2PUhB$3+z%E^5pmg4#Yc;aTmH7*&tuT$Wvc<OMY0j&hSwB zt+`&`plmzXs(j2M1CXJi22I0mU2JLKf04cN_Y$ssJ4PQNbYo5ULj~wF&!a^iEpq`# zUGd73U^mf~vd>V}-s+AE?{%lq+dQdl?$HW~ym$E<2@1W__HoYN-EUxMEoAosnbo8E z*q0pH*rQ6ddif_L_Q?3uI$ey!*Mfc?vTcU0gA)P6aytNAowE*F+fy=TCqs03K;y7p zs6abop73ZG)BCm>qd5n1h6t!ZEBcE(o_qH8dB3o<zR-qPaJndzg?`2!7rYg^G&c*) zmMVqCWoXC|7rHiuy1pER@mo*@SC|rN{Sla(+{7_-#)oUOXPE2JMlvY9xD(o+3wqh% zp?}1$Vj<<pNU(*`ml%Z?(+{ji&Z9kDnTP#Vet7s63f-&Rr141}@FEB9*<hd~n&aRo z4~L1)G}m3p+hSA?Lh+V1&zKd7dU#_A_T4~91bo}_Z`A)LQf4*yh~_P=B|NWnW0Tp) zC1z}5*w*YM^i4aVhl{*U+OR+j8^Q|3$~e;SHg=%@?bh2Ib@zvaUj3E+%@LRyVQ@9A zu8-n+dA-U@H9NZJ?~l6Uuu<i*%#}Nfnf#}ml+>z^urO{HST`G^s)ycAN{pnC(&!^| z^-jOCzGK0$=G-IfLHqhS*XwX^=Valqv2+ZgZcW=ECTghf8r;Tt#T9A$AsG_Hn8#q| zYW<@Wd{{oZX9}r97LQmm9!efMed<pde$M<`LjW2(wQ@#ulon>-{WTXU-b7h_gQV%1 z*^PIZccul6B?rvIZ@yfvigoij(P?#z+KsKs!qE5*b7lJKH`baH!~IAc<R%{*y`~#V zH`QQUVVrG_rp!;uM_ivG8K+(3P6y?%Sr$`PL^KbX8DQ~A0eY?swdI?{3?tGO7<Er8 zcRQ<n#Y{fs+F9Q~#3tBoAw7_(P%98Bb6k`PHDSQgLRV#>?R}aU-R3uFZjorHn5ebl zlq7PT@JU-8+GHz3x|QQZW}Y@Gf4W5mB>DUj=;E*NOJZz%H^21KFUHfYY0}F|wdNxL zFx@QXr$eQ(j2w_CN>wa)28YB7XQhgV$LkV4!2nx*L06He#^5DvRAjrT*4~Q2V>2f< z7EWv|oY+`%Vx#0l;MH0lkHt1nnbUGm|BRi&tZxCV2OM9R(sDbc%k7BX$Z|Uc(PnsP z#--)CO3QO0yXCngvou<7{%Iy&!@o@`rtIu#8aM_L>@fEwM>;y`h4DJq;eU)p*>=0B zCvvpWRf&`3<CC58{_}NgCV=oj)M`<%UgZso+wH|W*4@}&(~qsoq0!3mN_Gt4wIsKv zcTz{nb&YwmigfRXWODEPjKTo>M>%SMpj0c<;=9G{2IwH^hp&0fVOp27nZg)RcQ2KZ zF}<>UPmdNzU(VFk^}75fy`l>S5B*Gh=OgVq|G6T?RmoG&T~R@Kx*gV?aZf5GrRha_ z!KgL^x>$0xgmPUIB^sP>&R6G)^U<)X0HhW?!!q5c1$5$TxZuwhb+0>|%4%~+M<I9z zkTd3#()H<Tv|Ux8@^ms}M61azLOIXlqvIenasrG;PN!!R9l}G!ZJi8B&^k$6JbpF- zHs$tVu5#ogz^&3k3SSeG4?jZuf$^RWYXYOe5sMzyD;(~a{PvR`Y$uKqxjP+ekI@3= zx8_4a+uXVkk@Iox6{^s`G)C;NT-iL}RrcRGa!&pJM-Sefv6I`T5rk3-rY^c9^CVIu z$^lPgOyS%5&kd`bfmVmr@mWzrqb)3Ir@@&EsE#0QV)tPeQs~0O`)NwB@=dv1b-f;3 zr<QGBN$(FXM9eI7<QrvhZR@8etXP7n@>v1nO#l_(7{0j}9mMln%jZc%E4{{$R8rdJ zW?~lG25!Jt-s!mno%8E!QH8|T=FJ=P=*^p;I&&-ciGNGXm59lF2C=_Xaee2I5~@wj zD(nOkE#-+;4<DfoDV@kLu$6QD9_VeIeD|6#bDs5*+P1fMs*QY|?J>w^*Q<jO31n;e z3lnAhF0VHSvt?QwtjaZU5(lEDJ-A+QVm_PZmj^{QlZ*M1w#0&DJGr{Pl3xs|T)`PY zT~WDw0ii{u(RfnEe3CB4^dSjcyuQxn)6KzUdBf$>?-eX0aY4nGtJRVg6E@rr8zO?& zfn%Q7WPIS;Wms9c#)0=_weeB3iZ79?#ic`nXJIY6(gY2>BW$^CF_gx((J%!<Bn$9_ z`^0%&A2}`)89lmQ)LyB)FdCURIFf{foc|RIJ8rf%mAhW-dCR<W(y$HnozDjkI6kmW zprR4^_dy_P24-U3<=RjqdXIz5emD9+zwId8w$BIKTl(2;hv7EhxZ1(_IoO@y_WXQ+ z>uxq$tTwp49-J5H@#yLCi{b6#UHBk4Uq6WZTLjeJj#45ZY__#M?zj7`-gyz87e|Pq z-J#!Yh_cJihj3Eta{@C{%$EP<)py?}?)C^7rh`<l-}se$23g%nYeUX75jP}8SE>00 zd1k%#bi~lotmY57k1N0q=2lz4K5w+VqaM3Uq<rKDv51(H*66rZMog8$zS#=`^)iqp z*b;@8Q9Jl@@s7lW;s7;|51^BRVt|`KBAC~D)fSFZlUa_#*av31AJABi50iGDfA`Hx zl(p(pec>5u5*VgV;6hf*`7169x&o}~?uR)-@S;_C=P6a;UHOx;$_&1l5<OZkN1G0W z#P7a=W}%a=Zx(qH@Ni?>2C1UQP~q5!GPyS4arG`0=xZ8{e2?h_*LKAn=Qys_x{^LC zJsIWVHhYstzvR(Vn%e)-d2p{AeTGRs=pPQlH_6~1hr<Wm=oxDkIuH6`JUBSt3<1~3 zv;9GMzUtrWj_1*Ht$fIcj&9SdEBtr7-Yi$?xZHM*j+r2>;eRor{dP+vbNhZ;P*cK~ zKKi+O{m-Aj-hT1<)93KkeSx&|?s>Nx{h1#R&fil(!=o6>0uOlQop<~HF?{g9X|2e0 zOtqp1ahujlxTXJfqc3v!GJeT_|3c&Npc`nHN`(97+3-uA%$7NuEwiYq#^o!bDZezB zy`(g*zvP?~+Ca*p?shkM@@M5eMoFGHB@Bo0pZPj>WLV$Os6Ks-c`MggJBjkah5wNX zdt2eL^HB4j`V=EL5?dDoGKs}d7-UI~h#ra8QOd4qa7fh#@Hy5&<r$yz=B|U(H+j{V znNd{0#C)0C{utxj70;)J`T#qMjXIepNEupc;AsieD;LQ`8A0ze5Wd)MN84>VxES_F z{Z@OLTxf+~jKCShLxG)Ho2Ffa(HMW=wi8BEb8PKqhGP~mBiR|@@Nmr2$+r93s$&=q z-!9S*ugcAa>bCBTX6Z&b=>Xi;^+mMS9MrKi`0bK@iIz$nky|34==F@_h+Bf;It+n7 za6^)R*X;ERKqJu)tQot_G){5G)FcHz8%{gYHO`4(slWl})42*e$2K3|m+LEPRQW}j z7Q|WvDvHkWYYD|JmM4swDdEErYn+1x<F5f1yq%iS7>B1Bt-#A2<wRZRtvnoYwZw(d z6qd{J)>MU=r?wFXMEuQqFlOu`JQ%V^oGKBTp#stpdv+Fjphx}os3i?QJhT-7P#A)6 zYGtwM-j~%$?gX-;>3->Uty*0YDtd4-v|Zs=IJ_8)tNIwfK}1ZFOFbw$^l8Y9z)Fq4 zi)lG4))L$^A2g)XBnmk=asj>pReZtT46N966Tl^zCU7|6QRIA{BO3Eu8DU^duwqI> zH;Q@6NMe^J7lSDe#t6<~w0ih5YK?6)(+i#xP>EXhc|u*KP~U736O5-Rh3{zQjM<x{ zk8I^I#vj<I_ZSKed7?`*q9`?Vrq`HrhJu!m4uZ{OwS2!0hGCYBaV)|O!<HfUYNME$ zC<*Hg7*lUQj`$}Y_h)hN?eai|5S!t_h}a8EN@~hxiC)<4c78eQ>pUm<B8brSapndq zPnq?Idl3TsezPq2fF`ENR&G*w2u3ckiEpo0vzWGeJ`@gUrwyX%`fJ+rX7O{S!@bGT z7m-B60@~!&YKf0?KwOX%@G-bh6yr4)1q<=1Y@OW?$M4_2KZarBF@28pf@N_E5o!el zs~=v!IQ~-*NsL=SS3U^hzfhGB16G(T;xMO+Kw=<D3NC}_1Ma;q&1cbp;m4wjH6uAY z8IYoKT%_+(6|QWj>rP)snRvS^pW`oer6hj43tgDIT;!ENClW6esJiPUoZ{%p=rnMz z@?EuX(Qd9-5DRN5jO78h6x}PgC<Ow(VfR%!+8bLon6^^8jmRkL5&8g>(VdwG*L%)? zvOeupyjl7C6ErOGw}2FJQ(^MLCB8H+a>U7efz5^zU$4>yHG8!|;+HD1^4Yo*oDdt= zaR=tu3fRTbI5I@VrQJrauavtiqAsf@Z?~7x!roHRGbbwQtaI`9x?J4=wrj?s27)0+ zOV3j|x}w`>>1+nbO*nKd^73F_&X+5oFuVoPqs4i>en!P|K*<$I{2G5Y#FJeoL7vhp zu&ImQCAZM--@M}G+>2_vV*?fv(VmCUwa8X>5#C}8F`BApxsHBLJ49BGjY(X=!{II? z(wA1A>>L>g$E|F6nC(!fr?Z(~t)?g(T&ey@9Wbxa66(zLrq&SmXxXcRLDz!STmqF* zB2hWh2&gvLi$q%qy~S!;l;0@EqR~W)jU6@Xk)--vJ2=gK%O3d;&o-d}6iCCj(8LVz zH^NDpa1{sdv=3`Kc&EmESc!5=63?pf0BO6u);Y2JbvPsJ7vZh0+qpx1mc}LgU1*&f zub^s-=(Dl`B=5xU_MJ#{bPFe2>|?80(uQuEFSpxYa$s6o-P=>P7&5mn@`%a&QPAzO z88;u{WSx1rnJf$NZ*tCaX;LH$<uv?@Ru$MJ78An#l1LB?l?50rOcIdS&zEx|^eokA zaf$0+k(eScdjgABguY@vfSW-=GR=0mdnil}11SZQ&E_g*Wh@Ydf<N_wIC%W{5pkb@ z$hfIxyQ$^lucLv7hnF2^C$wsCBV6cwsz(y0&Z+JobTaI#FhSr26MX}E8C?>)_%4iO zrEAQ@(+Nx<c>|6ng8zz`@Yv{&j+nvcu<lyr7ce1&PmUc+`SD`~-~cvVD>gi7eXcfq z$qMHU?tCv7FD}(A_53Jlzc=2A{os(gsvm?$s+H;-U+#G1NN5ueQSKQ`)X(heR-g14 z&Cq)%Z<65X9W>2xdDQrsz~o?WhLPrYIDW6o0<lNsyH1rpwSzB5$2!mPt0__FAgaB| z8ffC5?keP4T8O|a%O`=&O|@#<`C|JKcMiYAzLHpGPFmRfB~NOKyi&rb>4m4vR|W1; zW%1>*qd2aC|76(T`{YP5?tXGVh=@u3OMVob9=uI@ogTyHhOsS%-SVv<OC2G*N!U<d zxW}l+EXP6`>PW=XSH$27p1ir0!=PF8F1id8=|ovNX6+~v8=lez%$I?w$gQHH@rmNa zPa@-If3geT(f3IbQ<az|-+*^f3zP_Y$L`?C36|xevH&@9>ws!D#MERq8NI#{7qGJ) zODxSGWxCdZ${d8S(^fa3D5o}naHIYsrhgTE&?3isVGnpG3t37zcz^n#eS8uDk&pK; zzJthN*s{O@BmLk@tQXNLT1VH>`{+ZGox=PD%+n@$2s|0jrELu9Pg(Db7$1lD9JiCw zvtIu(F*_G@l|1ZG`ycgsXS7E>>OF>Po~=W#lkb3@@s2UQualR!xu)BTFuLfsD=Yjx zZFmieg|BJxnl()%@O=|8NZ!+f=J&C7&1-5QQ+A@tQc-Fe^pV&ggjV)H0E0_MBZyUd zBy}^_6^Yv)l51udO5zQ#g+8w7f+rt!OKT0y**f_UVdrjrz=0u^p~OY%D)y%CVGq)b z2lbl1WLq&D(R{#GPrbGDkW6OLfTl_GZWzW(7t3UZDf%H=4{f1flG=c7(!=RZ?u))m zZzY1peD}H35wo4XyoyoW6(gfLAE7h^q^_)!XKKlrwQ_u{H#b&QH*IZ8b}ccO!pyAl zdB9#H)3G)gjRF>-LVo8J%YXY^D&!s22bm3S?HTOA2rEKFwFWc9>Or38VqH<e@`eiF z3%I^Vxe<CqtZB0dmx`R8MVkD^rDy>1NRzUn;u>yQfynk<ROxtk2))6LEG4U(VO0+* zn-1qxWpr@urrZq;6h(w-r0#gFYB({<2%=+369btxtiW`<U!_+FgzbLxU$rk$W%;%x z+L%PSC>kTW_MYhNAtJ^1LK`OgRA=+;#oTb;rtm0ZN5ZPhFdx1vF)(!^!fQtbn__(y zQZL;G4AO!86iTuu(x3yrTrA38@r&7O&Qa-0E~?g>RrKe~m}qdwE2X4?o4h{1&F#p9 zv5uM77H|qYX|!?ls(8A8{PX(wXTFzc7|W-w7yifmo{`Z7;!DkS$QZwit%k&WM9gn( z)?`AsE87u_80HC$k3x{q_OMqgg*mg<_<N0Jkxtx*CrJ<bT{n&pCDGPnvHHCjobAv- ziqye7OavGkrm7)o#jaXKj;b~*8|v6<Yz)SfH9vpNlkR^$>~+V{_c($doDc7HqgU)! z+&^DX@@sW&C`K9DD0(`_p(E{x<%Uli**yA(JI$#t%bRhz2)k3u9sRAU(63?TE6VGk z1mGZdyZv4p#fE*Fp$MFS(vE^bKzwyo`&ITcFwsZBFo;SqaR`n2oC?z~v^WR^y@PKT zOqwfbGFfOoQ*v<#`z9qSi8N`@(a<gg2&~GZ%Hqkwe%99RxEU;uXloj1SJh!6s@@;I z{}NjbO`8Q8e-x0!*6<_?S?^&^kuqgP?W!3e>w1S}t_bY_Cc@DzRZ2aDef1JLWCN3= zhbeWfUS$!oJ4R&vqD{v;;EmLydBh-%7+i~^b+Mc-+9aD=&B|Yi;W!GaI}?%jDcd|Z zPz<dm5O8;$QQC!d<R|STIgML|au5_!Qz~--Yu5owLhDqktn`S=C?u=KormY1M?x2D z*w)e%Y`Sg-vGpcCJp4f|1J8>ck+EN!^<fO<lt1XU^`m|ia<osUZ7#Nr>#^@+$LFHf zv@;|R`{J0NH#p|sq7Ag0@JtZTmeh>sD;iN4Ixrs?H)PG5vobrWh_yF|KTKAMIoVA+ zp6y7#HoPtF8Fff=cu3@n%H4wh+(K;Lf{=;QWviT}LFt?>--vGE?>R7K?$O^}{P&zG z>yI$>`-v?ge$K1M(o{?8)JpYeJ;Fo`);eNq7r5(5+Y+W&G(Y9xPx&Anss+xWI#?gH zT&<H<>u1DVd{5ilvsFpdenV4y4d;fRbJXRM>%!ThpL0zGjQrZJaCoiMRS-g1iLdxU z1#TfZJ273HBU%~+ZY`kCkABSA@3XVK!X6}A&y@9IsmS!WqczDB01g7{_50<jfHx); zB1c5_1k+1|Sm`9t?WsL9KRg_Ds`~Dxw6=W(-}Ks@4}zbLm3pNtj=@C)9A~U4JqdpL z=Ibvun=AD|At#n{er|nLSO+$$D{g3)LOfB}iH$@pk$MU*IVToCGRD`kU9W=2@ktIx zh=VY+-9m~UIT{2$PF4y<noDD%zDD6dbC5H#crC`6Y^t}sqS7C?{DM$_trlWK0X~hN zP#zJ0>mU@Pj(eC#)w^Ikh{R79#mv-{gEXa=xul7i1i@}X#4Odzmu(U3fb~xvK75og zNPc^gJnTIV<4GbP>ObuD;>W$my9?mI$&uHn(|AO~n}nL1{c0EXU7VsYZtOPh+9ZoJ z06tYtGKd8r0mWUzJ3o|7uH3ntC^l)wpIELlmwEAC<BNCM(S7my^~)f13-e9@&2h2_ zkLujm9{NTH-nsCe^fI3}rhhoLPrTz}^);BGq0B9^g_78<9QX3Mttz5PsG2L4|L54x z0M50un}<1OZ5!d(6Ld5am5RQd-L6IR-a4s}34SInJ1lmm>a&R$IaNt*<M-IQ#3|FF z`rWWH7XnRy3x;vpZf~kKjLk%u)g=v3SXvQ7BC%Lea=>;;eI`}~?3JZ03@XnUMQep) zNRaW2)&RDyBx_m>z8y9=?^folr|q_jcZo;Qnqvhlm3efFYjf9U#PoT;+n5{F8%_@L z0@bE$1M$olgkbIGzW#tl!4dZNEooJ|+RDZ_zR4jAP}RHbBs}l8`^n+<UbsE)pZB|` z-lBtQ?J5p(bxJNq4_EroydK->O)kK4tmtDX^5s$RMh<jbrV^*X7~{qTfN!u}#8u!y zvsI&1W*yFCa48EtQZx&~en5XYFse`ZGj({=YI}z>;xuHub$->_1&pu#AfJU1zk^@P ze#0k9ngQv@KVpHWP{-@ciX`Sg1O|YY(1vovONl1^43?DmV;I)7z@Zx~uH#B?WtF2o z-D~<BPGuM24hzgNNmJ`pY*&U!U1Awqn`HQiyieB$i{<73(})%LW9ouk<abFTdR)fC zFL6F!dL@sossAo28c^ot1r~<6d4A{SmCkyj5S?M;HWo}3)AvB<AGOD<qZ=n98(zlH zDK{)3Tj(%6UsYGljBA6Hdg@uJH@aXcGhonmHj=p!V_=*u;1Hdo_5n6}U?Q0n{XteC zs|foY4r2~WkX;k4c(F>y{DhVt3%Y`uD$+ez|5E$iwb8P9xf+-40Z{rJEtS&RWCcTy zvX%R(xoYZzCKTVSFrZOIGx+GKW4|h~YGB0bxYOBXc9yVHq_$T`mEq+i(!k)1MyQi} z9GteQ_D~(Jl=N}d0OBnnW`mdCy?Tu)Y+QD<^x|o}M~=2zY}=G&Uswr<L7Q!9r#2Of z-0h-I`|Fcp`tB?+I$UR}L2hQpZukg7VQCCX5bE9+rN^Qe$${tWn1+It1qJ|uYAB1E zikePAq880M{xOl5wgEnMwZaA}07OqhKB&G@mR<n5(Ck8uZ!ipGQFz~*u79NVF5g4j zmd5|(VfOSbu*kH04<=l8T6rUGoe(D}I#Gs>5as7xr~!@*nhq7eT(eq=<MTj9jux=i z3b5x-b3Qp_zDpFRI(HJR%2^7Q7ly6LOx2<-sNSk*KKzQNHeptdzzba@v=3$L<?MRH z`q@iBmrg$r0mTgiIBPI4fwzbTqi8w|&yG)Uv|7;TbUj$~rQHg`Qv!9~XcNZmu^$^5 zF*Cey$x|fNmI`a}G98N`=hdXp^*Ri{jPt<dmE0Xq@b_qJv*6pD2N&v|a^VO2OaLFi zF{2F9md7{xQ;RU3aThHFI>b@GEvq9M-UTjcnQ8VGYl{2H=V4N6$IKWFH=St&G=T-Y z1!ie4LJQ*F&H`MjkZ=Bp5$hf-9OI}u{}FGOxDsNy*Q{smx3&Hl!r^C#3r=0~Y&NC5 z-xGPF?ffeyetVw7x++f!jtIjQ<ymmV_<rN^XK5G%5bIEa;W0QPE`aWM25{44+UPfb zs=kS6gU+kC#k;#OE_RWghZRR&@0g8OVYM?0gBGeBKFk7;)l#@Cv!4k<SyL~>ZKd9n zL4BzXaH7mj<z3IB7hw#Acyr)n6QY~@l)F){S<Wdzh^fyc3Nd44=hA5n`OrZ&qZ%Ap zGhFtuX`lq4dyQk>mL3eXZlw5XRumm5jz4nS`%meXYrVDI=7m0&WF5SV^CaEGMsu1V zHqcH!sC3ITnralj^FhVUw1SzvnQ=j6W~!vCIb4hSEGp#g&su&9Pir{f*8Q{|NV(8T ztWm-{(P@=<l>Jek%}Pgo0L90ny?YwsQ^9kJxyCkSH;b*E(>^~6oh3vwwT$w989V8( zAyI`~1i~~i0DG0TF@3Fq$ipyzH<P;~*K;iID_U5ymujRUUrIJmRkR5Hk_pn^7nwn5 zW0kSpYN*H~gsqG%*iz_>s~k(l8tN(HMGz|ls5*4Jykug1GZ=Polxhu4jQHqru)N-I zvhzNRi#+6oJLGm)t6d1L+wt%>>?()c$k~4gJ|iTei`$8g3>m8xZ8_5FZ1T<*>l_VE z-S$tOKnN-|Zpds;X4xJVBC8vSiI$ahaQMu^8cia+AC=yn&L9g?XYlXr$3s1u?C&d! z8x0%7zFy+A32q4DfMn6AU&LCMYbK|5T!&A8gV^XG5~vM6T@<g%*+@hUnggFfb_?{I zPAHp_xMA9D<+qd03w_-V<kS#>K%)95=V~i2!IWP76*;33uJ74_S}dO}7b6lLHc1no z+qnl~$K2n&WK>8z5>=LYqHariJl{oHqDW--Hjh!l967?%Km4!%_wWD0f3K!v3FNj} z=F1rtFD<sNI#XG9zb^%aa^2Mo<GOo6|4)DU<)(A7{%zmr^?HB&<dXyb{q$4*?LB-f zzqtJ5(?<s<j~+hmefqd}^6AL|r93?O^nV@n{=H3?f7ggDK~?!-U9RrRN7+WBJDy8h z4$SZWPyW4UlHcJ0JxC62@5>ChA0IGo!0r#z(Sc_9Ro)_9PYzni!F?cNfTR`o!-LyD z931T1GAusJ!4bW7fCBDQe)rpI=1~=ZQSk@)?jn6R9jBY+iVr}aj!~9^L;V1)XLlO@ zb6@7Se)ZFT=yngjTcA+Je2ESO9*DMs^5BQ>zdo3t1B&T7zh1LDB~=w@EcCrU+-n!c z6pwZA4j;=kMYCEBUzeu`2OPp+y10D3`~qJ|4(_$@rvvf$zkhI~D{fH(kn8AvFuYGB z8U@&wtxYS#(gd7g_Xp5&)xyp4vRnvyjcMd`vv%7?8{UCZyh!$r<>{%lL5C9qm>g0m zwzX_kYnyyWi)GuAy4m(~%Oy0CN=<eAzUMj|TypTJ*VB)=9>RLlgW%*7;`sD49h#CJ zploIp?%Q_I^i2}C0KCT;P3Sb0`xxBo{n(V(KL~pCorBnYdl%K~%B{Gkctl+dW3^{4 z76<|0<?T2zirP)ZQeGO&ugdaj%@b75KXLNCxSn4Tp9(i$Jj872s7}G0vb`*bjQ5c! zGYO+c4`}h-ux45gn$(!p9>5{;;QsxHOO=Usz&1^i-=D4t=h7oC_Sdw4@cUfUX6OSw zPoH1UvjavwdV9Sj7XJW7955N6rF_7#p3(4hLp;}P3XmjG@2*J{T5o6x9uVcin_Pi4 zN`&{-I_`GIRM0gJ66Rf6tFyUmYu)L3eN7wQA5R`*g7atI2EL`FQ3|S6tyr%?a2^Da z=~8P>8Xe%tP#X1nlYH;rzp(!^rWd8WDw#y^__LOH-#2JK{PgkTJ^TN|lgEGjr04Jd zw5)rN|KI-qG5$SiJ^$|6>z`kK&VJx$e|UnQgIT&517I^aqsjdQ=jvy?j-PC%n^}40 zj{E^nhlB6o##}D)@<~_nNPZ^et8$h|;G^}VBvDSHK#9Esk>WsNMFpJ>?i6py>D_<5 zlnDv*GYIs4N%L}(8eD+;*PGGtpYE$i>I@O*_9z5gE(>a%`E)_7ZUC9CT%A4XO2++f zDc-pG1@vcEcjyzyyQ-k{fKj@GZWqT-<r`{Dcl~}k+Q@qIR$Fkud`%L7lX|+yC(BiE zhA3OQC?0|&xNDr;7sMS-Zs@j{zSAF2B<vW*=U3$_(0M4=m5K6&hVwxfQ-R>jrzr<S zIo9~rLHnfF`%kk$k?8rPd*v3WKPuHZUa>yLex-qI=aUt7qN~XyCFZdE^)&Op{R$mO zMNH>oGemUV9Zxz}i*e9B!}-hs(eXb|H(y+59H`9J=}8v{UeZNfw~u~H4^eZbMG^qu zqsUjZhppYt`)xhvEUMIb8LdItc}iSB;5CesxNUmM<KJELz_j&Bx70TJw=|P@be(5S zoJy8@ljM4)A5y+!j@je(1F!8`j$^C@FPGnAY6DVzrtZ8h+V}0_O}f5ZSBl<K31qG1 zY^(_Fl6g6OSFWB-Qlb@7EibKBIrQ^v`rlm-_)(RsugV+x_;OX~N#&=0?7CR~z^Mu+ zezcnK?635RllF1z;rEA4`dGDK62rcD9?{{H-&BVu-RqgRgey7zl_mZ8;(D$ZG++N7 z%b7pieKx(Clq;AcK&P#VjF<Rt9xADa8kR-Ax?wZ>SNWuzm;RVl9)8SvVY)aSR7w5a zCXzM`(38pB{~i;{ugrgR*YU|?e~UkPJT5mcNL(#fS0uG=9zA;V`1!+6KY8}_*&m-j zdicp7|Mc*aPe1+q#p7P@v*(|_c>L&-|N8ptlimxQD6>HO7}y|xd-~!}Q+8_D+`M`9 z>g3ZkL+*dcNuz1GdNn=iO*f?|4c42lUIb_UciZ~)xcX{r-;2Y4^91`1{q>0I{q=G@ z&C?leBmZJ|y-IJMKJ9(_@;aMM^Ur&K`}3pGa`k2-y<$smQ|fPQ^S@&%>o)7DZ0>)L zscb&p{Zh>o-o=+IO#rIN|K_P;>r<)6NB{oIRavQmlk(AO;c!;AB7WjWtc&7m+?v>= zk5>;S9nY{uE-CdL(Kw&y@gIHEdX+_e-qg~6H`4QJv%1bVn((N*--GO^PdiN6H#Cz- z*st+rD*fL)h`K({%Xibfd`4T<bWL(`e)DWOpHG3kzxi8F)$PtazgIo|?%VhH_o^K) z%gyy_Z~aV$k5xm#7XVA-a7(&&jSoLk&Fa<p_;vU*UXUfI>foe&q&j@@)$<qX<GB1t zUnL6tGM%n0&w;y-^zD}=Ta(H@p;-<$?PJwLHY(mpeX`Q<<fGMT`YzqL9b*zcRt;FF za4MkhKhpQVhkZo3VYQ>JMJ4s))<sPL`tI7Vj`QH-*691?a#QOZmH3fr@+waki{^c$ z>Cwlk6-x}R9@|Oz_;s*j<R^aAn$Y)Xr<XX7B*XZm?yf8!yOw)u_IuREu57P1Hu<B~ zhUL!B;B9DyKQHm)*2LqMytI#75088B(teM6e0IGkW@S@t<jL<*C)v20>LgD-Zk=4+ zKt-qGJo)|V)YMz`=O3$n%y~X73dG3sG(IZrqt*jrKP__BHTmi%=fTIVQA1rmel057 z)$brJ$T!VK2|Ho0Hr|tuRi~Tzyd+K{e+iJbQUD62PW30hn}QH$eCceOS~CnM<@Zn& zRx8wWc=Yh0;`E)f3drrL5dkU>{u{d2efp$JO)@v>YBSAerEV=yZH_g<v-AGC<RdZf z3o6an-N<cqxF#nR`vOX+w#KpWDN4GKlfI_Dc5=cx@S0X>LpI8IwK8ooMtH&56WGz7 zJy~C+rrMW9a5jP&^^-1=&kkx&`Lg-xrfNLFnY=t#!CAcbWj!Z8yB>|o)x@1+aIFis zrDNN6vV$G&*tTukwrwXnwr$(CZS2@iI_G@%cAxKdb$50D>EEkr{aE#`dY>`J7;_%m zR2N^(sX?+yK>hjjx#)bcCuXUmJ@5WNVRD>M?V2TuC`XfE?=32@))_YtDHr)Mm6{@p zQqEi3HcHusR(guP9q^25yfr3sOWH)4!yK;<nP^zkj~2!RNP^TY2>>Z>1Fi1x=+wnB zCm^5X_amY{7g3%ab}xE(r@0i?g85esJXpWL2;cWwM~JvPw{t`h+AUnR6H8UFM_)ip z^d7o#GPYt;yY*KX{T;V~B1On)i2Mw)DH-|HeKlQnhfRpdh}8U?byb+ttG$u~Q^Q_w zTag2Qxi?*FuQ+M#pv_CGuMQ5J`zi3>0gt8&ot#*Y?OgMmJf0pir+BHIy^D*D9$(#k zek1l!_94G)DtudNtqv)xxC_)|L9blwbN$7d`nayy*E7a7r1i=zL!nH7@h|UXf1rW9 zMSc|K7Z|CbbwzALpxq@ZH&!WDRFu|vvV|~#Ic?YF&+UyKe6b3F-Pdr$90#LM50m#a zBLXe$J`*q`gSZ~;uVd~BPER?M?l^^2pq+|En_ZoAN<p3pRukQ{o$;<gi~Zic%Y8dA zWq`2Z^eDLN7E)tT6GvN^(`ZYP6#*EWjjG2Chsy7G>tmCTowLcvL=&Fa98&Y?bRso# zJA_b~@XK4&73v~Fc;hU1`QC%@-kbhx5mx_BkzFaoUap-)P@UUa0Ycqxk-SUeSmtK~ zq(8kPjKk0(e7R0Y<U%(~uofox<2M=bc1+~7p^1RR?J?14!b@$~I~Zx>&9(xI=1c%t z6p<D%14~3-r`SGBz&p~1VKp5*f;f(pRl!1{JV208LVtW+7nRwB&b|9!KJyIs>oZ#U z**<u*{?CZMULNo3JnQ45Pdh5a1z<^ZYK>I;q*62`*fGIVrs5+e@HvrSDGu~@r@jc- zD+gkdWU;o56Hw!P&>}l$8_+^3!RT_92CCVY+E#yEbHDL?W`q{4b5-4;%BKEZIs3Jv zqgQK<T&ko>$%88Mc$CT@>rLKlr=P-?7}Ey167HHBMspQRVQVlyY{*SnxII+l`+dxM z|N52=F7t9vqERaJD#`mQ%S4>&plYDqa;v@73MR4bpR^V?>G0lFdrt&8B1s_v^_ytY zv^r@{5IX8j4CPPZO(2EEbuZ**dT$td;}`RqGr{*5LCG}_VyaWEOrc9mSJbA268e97 zTQ2B29eg)IXXbqyM^tkSjZT`{*z^vW;JKC67r2EN!iUtUtsT@XkeZRemkI1uw1ejQ zk_Q%yWf5dn5a6jVsvOUa@2x%B`=sGcD%YEM@drHQ2h!P`zyB%B7FI<;{{8l6kOra8 zCUU_Qv3R>XPF%Ffve&fKC2k938rIOWivR$lz(*dsw^eY4Ka;Ag=dFzL(Wr2KUfa#* zxhc$Yf=EhwV(dvVuZ=%v05?gQmTKlJPTAVxK5jYT#F-{a>i<FP!iDC+d|QG_P0^=; zv54!?pB)3a3I_|TRX<sZ3>luORv)|l{>ju*4IYZrxu091mUm6fWX^{nXR~D)A2O5A zT4%Rh$^w7<NLeZyG>F=>6Wpp~x!&9Wx9(bW_9r=Ot3%rM?%7ate%s}sE_PiY!}`8{ z0yyJ1LXG$P=;T$Jy(y8kX^X#1Y*8+I<qyi;a6_Z7E;X)2V)SnsZxlKM8B+AUpEN%K zm5(%0MGH;U)DB>YAH%B~_4u$xj3*zi5&-oxpUWR7Y0#bl!+f7Rw=u0hs%pTx?V7%t z+fUva%c}e7Dj>L3s8LDKQdAuu6h`L{7QwcH+k4cbKWG;vaSLN&l8PbAkatL?%1Dx+ zvlC$^p<5CCRgS5X_U+3S52}{)#^R9Y<di)4QgpbNDWRrO<pYtsg$v6yASftBQ1{B& zfRS{KJ&2;eda^2-jp@~U?}XOfM>{P~&RD=apElHlu0G9V4VLXQ{H;vxVqLa595gZ@ zn9ju_64^6atk0lC7e;EPI&q2tFzT8^!aghba^<MVL4vmy8hhAT?YT-+z?b9=fo4>x z(qVX&f|0ekC&Uk6Q_*~&L?6av#Y3+<+nsstw0omge;B-Nbx5&5Zl@0%2x!-@12yp` zc`%nBtCl*Q%~nn(RLDt2kso0Rfz-;{`6n@(ueSl~okF6~5a}1}(Ie4e;H7|l0zcVk z0HJZmGoH?mJ3@L+<X2jzggLir5-2PFdi*}R5HPI2jd3|}{r;0X9r+Tvb?N?Lxq^d9 zyd1hPsKgPv0H*NfRO|R6chROVapAFOVtFZ|i3;cgG2Iu-e~xjC&~)sm8q{m=5D0-h z^>!NE&s@V=C~q?OW!iecD-&y2?^CP}`%YKd2azCa)og1{HJtFBv(kbkd^jIVOSE-~ zCyVz>w^OoX#2i)doVe1TT$V3TOuHDZ?$RPwrX=EA6LGdI*qxEG_O9GFH&>Yv3N=cF zp+kM#l}TOr4WM14U8D~wgf_J<C`OxMGTTV1!^(wvdi52-rpVi#25n5qHKjRAy2LbW ziQjyIpF7q&IT69jHD6gWYyY5_W3m0$fCkL6-hp0UGLp^muIC3N9Qtzk=!wCQ7*-TU z1X3seKufw58I82|C&Aq!>mAKVJ@)Z$mrxwq!RSEe&`NuM9kqGz5x`FPf_?u9DQU0{ z=ud3(ZZ`-f$}Z366*TmO%A|z0YJxG72HlHsJg((e@yXZliREfptx_E^*ZW+mN<0#? z26x%S6Vx(rT3BYX@|dCUGh9m<nuATQMY+#&q6f|B`|q>C_P0#Vo^$&jMl*8w6%=P? zu;I<Ds`X^i-fkxE*_f8g;O`D*jPW$$_fT>7(qJ64E83r?JjWWiukVv>LucGK<F5h7 z!Ze<5u<7>jzI;Bl8#_am%^$2gw1i#2j^1W%T<84{nG~3=liU+-EYBdlU&|TzyI65| z621u^+h-gO-q-aZ+-(jA^B^0F?^7Gf)uRaAKVl=4K%PfAr|^)023e6}Wzz!b#0Lq4 zsXr^H20meigxrqJjjDu=qTw||L+|+dH1f(*j|=+<aS+U@BTXu&;iEajR7?#arPzXm zv)(mMf8q0~fa~)*&&=})?bXcd`SX>ajB``XZZIHPklQ9jmCyfTBM!6k#04=1J)e@P ztRzrE`IydBHj`V+G<jtzm0FgtQkY=|rN=Z)R3rSjO`1rx(fHMG6eUjMTs83#ZUwog z|DX=0>TYLbG^N7X@)GoU2v5(=k3q;4mSE_aVU&1(3(ih*v1_wXSftDO?mhrrb2N@` zf7Go3??!`(Z;x2hopv)7)rdG_%w0^soDN{Ylkw|u7&|46RN(gTA@kH;;1&kFXL=x3 z(>VHb^gRi)qInZ2R+P3zPD0uAnR-2kkhg{xeZ96dNn>~aoAcm<GRvYq*G{UVK7}iV zeav3X6MV$>%~|A^ZJwsXmoj5pgU!_ApQjsWb=L64s<y`#jlHdoXeIL}-v`Ca@eh`b zzc*g})PQ_oJx+dJW|(mgOhEM366R&^nAj^0c}}uk4=b-_J}(}9w(ZW7a_#!~^bAp3 zzg=!T#19&0GZpZ&kU%?loMnQSc_>V8Y8Ca~u=W~d)w$7D@8G|CN!F?<!(G#_q+VLn zw^}f-rAcwX*21&Spa!9ml_P!nDaJ+f22BEaoZ%VCT-V7<jBS$qJLZ!6PDNgmyEz4C z_WE+Lw>=uNtQmKD=Zy_&!{b0#r|thpey9LBc=ZCF*B_zJ+NYq`7ile8FO4!ZKXlUH z;}$J`nWz6=ae&wRz151U#sYjY0U)GdFqo%&K3lg4IB2q%n#7eyXc86cfI@I$Tz1kI zikW;IO1lR3nK3ZiWn-=qmJZYjdR>j0t8Z8j1%W0NAhkI%6St0Wyvx>#D!JanqF;!P zLn-^m(YxO;@%-%wxY|Sk|6%$9Rr|wLG2R&5+VVux<ArYZ0nJX(mLd6*Crjs34B(dC zva@yldZVvR<0<Axr7Kwosv+9%g%K#8t8Gy4j*-bRO@>G(Dtg865H_R_i(yY}88U(& z;;~ksfn7yh@rg#)@k_yzVF;f^u{n8FS<b%@q8r-ml1YJD@--Mq*eIdEuSht=Nv<(Z zv@RZjMBX_+K`Oz0Z5nMvjwV0$9SKSd{QON<k;W8_zfUBEB2+X+VKu_q)5E!R0$R0% z=!w8Nrx;-t^bg+*T&opZa2Wt|<$u#!QoBxKikm>7c=0rKI+J<M;TeNGtQC!lyJ~t@ zl=t^;3gsgr%hrv4qtah+NsRnCf)S&yQ4DAaNdr&`331bQ5_J2XD-V~Isb>g9K%xU` zd{-EC6=zVcme73;R{dJM6D&|Fpq=Tzr*D2vqRh>7duj;fYHFrF4W?6O6*BF#mQ~;e zdOo>x;%vf+%pQJO2X#x!JXy!spk7WGnH__ePAL62x;=)5MmresiH*??a$g=_5yf`G zGHKc0*z>9!lcL4{^;E>6S$}#ooH78}bmJ{^&4|i<t5n<E#WSxPUMvS!1o71AiNItR zK$iz}#kO0V31fE69*m-_wC#|!ozhis!7;`p=bIpp93o*8Bx|axJK*abb(26k?I}{7 zQ<g^%J)wErK!5W=9`KnX@oD@Parh)WY>5w*<9y_v%~q5tJWIrB-FUfSiWQUI#ACBM z-vdkRL!SvG40w&L){7f1jooYjKod*PTR#u>3bY6aXPpt{YQN7V9ph&`k1=H|?5igN zF)DzvL0oKhuBArMycY!Azl(!h_Bc7^-TtO!Ea-dd0^v&`Z4&wWECG+eg4xEa&il=( zHQqXY?0Nsm=j-OpC(@(dZRK2lZ5u;b$V(QtH2?IKit5=Hd5@@eDSg@5ffz~*m{;GE zfmG9OE>9sAw1+eFsE1D{$<y$o;Plx!G;ax_hx_(A6&2;xPB*{C>2m!hBapO7;I?5p z#`FbnKyC-&O-~QE$PCV%3;2r*17<|0Uce{axP6{^vTF9y**$j55`Hasm8l)Pvl^y8 z@`Rm-e&Pv0^acD{ONm{SIaP5WVJJoT_9@6y`qTdN?qvV#-Cj?Yo2}OerosWhLEh`g zF#Kl|T?Rtu-p^mRV7n0ez-c)EZp;vhX_3ag3H}To7}O@@8AK>dq4bz2#yelhxWQ2i z46xlNiI(x#OZyUHiI}Y<JvC_D)rbK3+1}V92_OA7YKo@dmq0c0x(WQ;fTZ0+<f_ca zRm<-nMyxGi&z@*vs#y^;I>~;L@>|6}PW{#NvI%fAGHn-?p~#~m`^*dmO~c&il*rZg zgs2yako3L?0oDo%fvXGqru?Ckyy6~_;_HzK_(w<)4d9F3bznopP!2|rxE75l*xmr= zMJt_Da+i`glF!J(=}>m3uHyatuPWQk9CkOE)J<4u-05_kJdcI1_USiYR14~u)$C74 zZn)KpLvq+$M{)bbcUJf~@gqcJmd@Gq%prpb=dd)JqN1Q+OZ7-X8=`)3e^%%Q6|_c7 z<kcBVa8Zc`R3aEi>?OD+m#i&uG5s1Vwgqv}kN3~)jzg67CXR5zeoOk5jk?$wQ<?c< zz#AmEQ!oggWzS)bKfp5cj44B3aUClQc)cDUowwK;m$Xr4MkpNrlVZX?FBD0?V)Q-? zp(q)yl}C^x9*a`>;<KuNusq99fzw!A$Mq&d#`M+;eLhuj1FJQH0*V``tEcLtB{mKy z+qHxo*HV>}LzSim$@V)yz<5YME?8CoT^}*SmpYS4Klk1IPYU~`aO;5%LyD}>!nOeX zaXt5NDO&@fN&Cmy#^X4X&xa8QH^YVFBcNZ}hpwgNJoRY(uGgq~ou{pBOs5%38_zzQ zta*9)f=^VEX2D{7K&ZEIop}>t)+#hsb1eRBbAL6aUM*(cGsr{HiD3onV-d8i`kiCB z$+#wxv#!0W(&!KMb6<yBNVY+DlxcNA;Z;&+e^qdjTRI!nk8YRVF|kAHUi2BK18_|M z!+`7*C3$xSNAl|IS7u}}1pY)hLW1%{1U6YhYM8~)!~(uQCj@y0fxkuZ`LFnfMpHzh z<;Brmyvd#9nLSPNLbP=D9cOjg5jfuQw8Fc+fuw=FctXZipON8-ijQ$N+nKR?<qv~% z(AUS~c(U6OnXNWbBAdn-+w&AIyXsD~<V1>$P{0fCNg);GPJ$y+8wX-Vc_lL1`b32i z4@c!>`Z+TEr1^vc5b{EUpT1v9bz|EJ=~3e5)DOFrIhQ)RN+G#LXCNUs`YDv`C;URn z@@f?*1LXN(nltF^WRS8#d`Ud^pbynv`<l4ak)So*z^OQd{M16_8DQi&2Ww57)vj6; z;qpSLvlxOLO$d2e!H$s!yoHIpUNv(fejL%YkbG!PN@9u%YW%A-C1NH`f>Kx&kyv>y zT~V8<IqzbA<`i)=@hIO95+s+XUVF~I)j8WQMM2o8RZuC%U7EbGp^`$e23SK&$~gt7 z_Po-P=G&XH6XFqv6IMV3A~jFd6nXZVHTZ;#l{CY<1ccn=JRtQ2g*de;=N#%8_Jp9@ zD`jIJsc<==`Jzh|7kz?>F83u?WPWEoa?d)Gm8NrT`o{uLDRJ+b{EUu92i~T)^Ta4u z|Dqky8+Y_7>7tAGS$K$XX44A|DGMFhwHdd%Gqw7;aiIf?L9PtRx20BAh4ZZ9o#cbP zNY!0|n^0Egyd>AVsZCNUPC#u2O=0&t`))%Joeic*Z)09z5r;EqwoQMpn6!_8&)J&! zGpB7lSa1=M&iwIRQ%A;=RP=t}yS>{#f7UvE4y>lIscdV<HpD4C+n_Ta8W=|NX}y=u z6Cm7|GKU@dBaRJFbXm}%IS7YwiMgZlOHt#_@N%7EaJ)zz6>>Yr5X~2pW`|aP+Uccr zM^i{f#8VXpAv!eMEiL0kxh@FvyCYZ=w2#bUzIDjh)OW8h$!M0SE8DED$VQz1a3KDT zI{vJW?o|&Nvw=-~5A3{YaT$ULC!FO>W3oWmUY<D}6calEp!%ieD8hZl;MO0oPr7{h z)mS`YbX%?g`f6w^<mTd~65*&qz9F%OkepF{oS$d(Xkf@pVt>^NF8kYj)L+*-fL29g zD}LPheh{{?ftfje$wG9$a${kc*x^e;LKCksZh*_SKjMW*T|1^ZslI|BC|)@)(`y;2 zX=xc4cbP0csig!U&d;uvKt>C`Z!<R6fLhf8r2>-2hFpD-&BooS&X!euX;170^5Z#a zPLgVA?ux>bOa=%=8X4VNaS0Qi2F4W!a!%Ic;TLn9Pq`+71ulEontBKv_}6o9L|bP1 zLHsT=yxczjY3BfL`QnQ)WP_QSYW`2pkUU55G;3ai7;W_f%yf0`@@=!KnIh=UB%siY zXH<f@RScdvOr>gpS@iNt6-Y~@H<Npr@YFwtZ*>DPacyvJI{ubd?^yW=SLde3$^7RA zTSXGTAvS8O1T1Ty&vj<Y;|qMqLXDjTP*#tR7y#*Tms@eQ@kqUCZa;}uB!-X4cysRX zxG`M~@Pghc%kC0dsmlc9_>Z#A3TRlOUknO{#jMUv^W@*3480ypf-P*-h+8_qY$4yn zYSKM95d@hP=>4}_9A{v5tLrh*h@YzPL)7=t>X*QIf=X+Eg2+I)*p58w+l09dlvLhN zOwy>f`n0tyl(80XMIBF#>_5mGz;<NzC9^J9Ii?{ku8dg~ZXV2qnXKlrJ#FVn_fR9L zp)@UyK7#{YhLMG?R!=86FfZTN-fu&=SjJwtI&M9u*Dh^M+2Cp`xRt|<FDa*`<YJ2C zz$eCG2eh_RKleN}0zitLlBBa(n-TqyLO8^wQ2w+x7je%mMPgNA3Jg=!8Y^~JpT8hB zBPOZ>e_ldUowL=32L|&v#LufPBxkm|3rCx%J)*EleMmD*tEZ0!PV-vPxIG>r^+Kz| zf+dLKTQDI|Jx7)YteIy!8nsufjU^P!D&r-KYPbaou8rkaa;}XjNPeE-UJ{Ak+=6@a zVcktka&h3<05Wy@0~S}h9T8W-dP2c^f)*QoR*l6rM<@u%EbC!6t7GprAVx2gN7>34 z1}fNiAgi}iQE7rgil5t|KAZ(e@>ek1DHV7v(W$4mz*z0+H*{_FE|OIN-RfM~et!(q zx;E9@UuT^ap{WebJ^=lIv1v_fyD_~lGh>x=pmCwG-b!cF<P=AeST-{xH;YBcpN?<t zEcKns;w8RByurkJ2{ww=bH|o}$-ZZg6VW>WKj?+@N-bsn&bXV{lqk<ZI=zt(e~Jk- za3CG!j7XD8+aNvPt)C35cl_L~OI!<=&>)J<FFa9T)z!~Kak0}5Tr!{e2<=?my<sFe z`vnC%9R3s7FbsKp;jG?j(wGqK(9!={vTvsMFnN<fKhJE3Cvfq=lf(?kKjnbRK8J7R zfe6C$h0hL&A6A=$ma6aJlJC&Y_4r2AxXQR3krB_GJrq5TSrJ-o+1YH7m3X}Km}r{D z*}8M=Oewdt%`RB2+p+R4TR)YGKH*5yNhDII5izMquB!BI*5~EbO}NJ5P?PEyl&&Hm z_DVY@B!7LEyv_4KK?+7RE9-I-Z<|smj_sBW7K?oe68GZ;=#4TO&odaW-`!4Mp2jXL z(mSdW(}|fUU61z=?48pWAu2N!A!al*=O;`{4giX2L6YI-fhh0do3zpouxl#9V(eYo z9@ToY7PcOBXthp?L8sn?#TQW???0Xr76rehz^<dOcg929kXdrz9RYl}%W+dOVa%`D z!BEk>@ROTOSj%WfeTWXzV*sToS4}X2>5rbHcFHcj@WO@pl!W+jSlgz|4EEmSz%uwl z-X|Z?$FHKISGiGipC%r-9TvEv@`PMB%r{$S8Sz-Ge75R}{jh~U_1QryfUY^~{5eoE znXQKbbO{W6jf-LLLCb&(wpg)m4u(83@b<5Z=s|GMb)Ws<t%J#1M5O0e+Ut1j2cf}Z zGaV#L)>t^+E-qbC5ee}UxI7&L)nS*(xOkT=w_XiD9@p(jH%XFihOfRp_n*Eno{aBm zRtFn^rz%R|%ZQyAwS0^~@oo7vNt%3%ik9XOg9`4s%!2dTR5BV)Kn|8>(U?`TyuJ(m z?`}MGX&a879D;Hdg4=lT8u+p&!+ueHORYA;4oJxuU8e#tC_6~=E@J<)m{>n|ob39i znAkm52`<e8)|b@*A~?h+&@7wds~asK%3>U1jPIsBaJc<_mo0+-b^IGT04f0aeYgjT zOq8IkBTF)FaOo2{PcTc2*apFyj+@}NjDfj%UXT$u*+VfaXx2WskAfc&qT>)KlbHy? zj+z4o`?Lt^Jx{(_tWP6`mULF*FrHVg_FAtVVCDUOoi*(o-+MfdpTibC4iSu*;sE(O z4<G4o<Z$UeDI*&kkRCcsn-F-|3h`lt8H#hn<sMIz2Sto|s_WLKggut?lL4$aYAg=P zK{s61e_PNXK+351QvkqGYy<$9R8L?6H0mj$0d#0E9I!8-Bf;XlQR=QbxZe=c{s5GN zNln)N5!l$ZW(gFtlFH@hveY@QY#>Ls1Q=vj^JURwkjt`Z=4Q)DFTnNPRMgh6L7QH) z=<hiYxmme=uLfy&J_ouytbYEhzqCY%{&D59Ltg{ZM0^2LizW7YG?sk7D1sTbiTiu0 zVPHXR1dP6FeP&itL2pq}EvcOtr$i*hx0Y}WVd#>CT@wrU;>2Va^7G$RSu#6UnR3)n zeBy3u4slcPKtyCU^9#x|#l~<)YkeZe*bS(N{7F&KQ>7XDr@4UGz;%rKq-Rpj+^p1F zgCCOgds|Da3VoyF$Vc3FS66>AE+~o7&}rH-d|2`nnl|eWQmX4ppFJU5gV=>$s8@s+ z4Ij|JmXH{f`$krdeWk|LxkghL_G&FFk1c-qCvs^#%>)fUxDmh0km&DPk$b%<$<Zq< zx<pCI-7Q1-#4m~Ec7a|Z+s=~p&WlVJu#Z_=N87E7dw4jGkKUcVI+HY;Y4G2j)?X)o zD1ETqUELros=<3~+&sKC@d5|Z9)Tg#TF6_R*NyF?$RfQvEHg$QE^p3<S1V2jPit&_ z8l=HA^1Iu3pOSoz*Op+C<3ya78yh9LxU^GPuHu`=3+5!Y=@k0MIwtk@Xd*whK&gHt zHGAu3@GIN#>;Ms9zYkQz&n4svxP5fTzOfNO@`o}|f*2+t5rI<{1m$AI#WRZH;tD!O zUL&0foODJ!y$l|T|D`GHZ#@&Bw^L8_&|BHG?w4r>;JW3q_Nude6L{CBcNx$=2LeV; z*+ibIqJ(P{TM17FAMFpOkF5h?v02FSD;XxMP7>Rzf4ZwIXx(AQ82w);iW?Q7#$@*v zS=lGrnzDY`c_)7XIC@D`T*q7@s?wjzQ2L3pil+uDprA_JVW<mVfZ5W#v!Sg}J4>Q$ ziqzk#B4<mMOe9oRVitTm#y+zj2vyGBN+V09qY6c+G%wr~CJ$EwLQY12UD!THUOb0e z^)$Z+cX%a`Afl~|q^$I3t|j_H!7q(GGFW9{*jbM4p-V~G&jQ}YL{U>QC<Td-K)iw) zt(hC<#|%u$yx^g8f3h}P^jSfJg*lQnFa~B+LSq+3)CXm5ZB#E1H#poM0Q@8o@X!k4 z;L2}$@yHqpmflE23-XG*5$==><BM<&pz0=dvY(q{=hb5LWv1#=--i|hGqo#s7!M7c zjR^)kJeMXK=L|6TM`&Pz)cnJlW7u(n?}Iv_Dw;LIpkl*Hay<rD63`eaUV5iaZ<nS3 zS1;=onD-#l{O|V8v>rK9o9c&g2uRj58fmL4y}+#mvg>GIWKTcnZyWcrk`~%vZOrVd zT)#(!<Soxk&R3O~w|NgVDyUhDv~A~9Y(%#|f{g+bEe+teg(P(pigR~eh61pqV8`!> z0fL5rRt!@;3_7o|_#ibfPI31?kfh!0(Bs?ZW@6UBm33t{Jp{E7LU`1^2eRwCa^2gP zQNo+OFV~fBv-mhof0^>@Q@evNa>eWIZEen1_--yQLr|I(xy|;dJey2M>e!j%<<;EF z=N>=zy>Mi_mX6QW>mHe!PW5~7#>us4%B+c5ri{rcJC8KzaK){u(f{_qrx&(HT^GRW z+GWW4ZB3(J3+_bL*<DEvDH8gG4njzW*<Msl-Cn;BvJCS9Tt@<vQgh)`a6R#(B)P|z z*&kylb6(YKy#Zin1TNJjidgvvcxYzkoMCVskC4u{UuYeN2bBZ2QE8A4Ta0QP6LSwu zz!FDlJEZ;jTi3L@Un;mD3HmJgt5xbw)qQ~>VG(_*CFX*SW|ki5sOR04z>>WBVQYht zXMBqg)U65vBYBOy46o(*R^ie2fa8{?=MBteDsI)>8wxNtOXTg&Xta?sQ2V}1Y<(lA zu1@XLlmY8rHiC|>eD)VB#fS(8`6UJSV$E&}A};kr?w|yRS5;Ef{EgjK`~nZ=#@Fh1 zzwisFtG(8UaSe@v7Kw7uZT_LlAug9ku!KE6fiGrgpQw+kAFAFT)CAl0T>iL;^GQM+ zlah5+7g_K0UBfO$o}&wQI<J{SBvG%!JtsRIV6;JsX(!9w$_E}puH)y@m9dqy%lo_6 z<gJIc29HC^p<C(A8eOVzsG<61@V~?HFO)+DmaGgZ3bFDR!)A*{J~Nb@=ASxk%lTmz z&_<kpR8fbc!%F{gKj7&9lkShf{L9?UpzSs*$+`6-JXWTUi5CBDXIW++f$bEzBu~4w zE*2d=U}^VCgw-Ni-emF~Fx1eGS7(C`D&exr;R?~s%(ZzdJsUFI0>9QkhS<Hqf8_qq zo?}B<_8^OWLV2rzzm1XKgMkX`dkagptud}lc1t>2@RgaWaQzb4IFxHUOd18lZU?j2 zsv5}W1~^yjNW$(+1MMUt%aqLzy21FQE9MGIRYWIs^Cfbo@20gus@S1XV%GOH1K5!W z(BhoYrG~rfZ5nSiz{wBApZRoq)kgHV96sKe!~4e=KRwDWzWA5c3|m=uwfD&UwunXN zPPqITXN}z%gkwkDY&vCRGq2e8i<q^HLT6OZoY&;*>VJ5vHTS3hfiC2hv)d}EoH<C% zKvW2WJo*6<M)!_DKVbkAf@eWq&We}UQp~71=~N>@KuUH)!o9)_z8;F)WsRc+28*~8 z^NAO*ATbl(sd2AlNd^0f9jd4Kqr(w?uF;qBgx7$?EAC`ktPzW;fzg^-btFKv+CV{4 z{`q6ZQlI#1nqG~Fcfc_sxS*$3ymyDoU>W%WH2TFYa@!aOPO99?!+OioXP$;afl!^= zEDWK-&Ls1Vw95rPpSpwELXf*hmVuYf>RUswA>MpzhymK<;2dn;8KvbTkghERxVchC zs&>3N4N7e7)f}Rt5T>fX6hxK9P94hj61iy*Z#Y`2OzmJsXMvy7W5z+n)~~Q4zb^#k ztF&)vFxQMYUTt3Ct`w!y!OIF@Q?vsvspePZVl$~3qClHvXjd`PhfU*vzIL{W8H<jE zGY}za(|KJX<NlCm7wjgniB-20CZxJTG?coQ!aGmSLMBT5bqfm>l;>ciZ6zYwXWl@} zsbSRoPeo90CK$Z*9|i({BhF0*P}GdMlKHoPpnP!BJMGKp4u$@K1-wLIYet!rUn|jT zEuQ4kUp9$y-gxauJOkWg%)B`fH_`U#x}C^hx)WyZiTaz{oE0TIEtNO3=d#Mh1I#-L zwf-+xfCg0SU#<YLS+2l8Tmh<)Z-~DGHN+B%xNcc&bI3R2v|jt{Fp>dgiF_Y)ghB#P zP8)%`lyzKd!3|LLjRZ`~WS&7UfkVq2S`GcdvbBHjDrbfz;5h{+WA154BiPGjpEk6W zgeolDVSA1GYQVqPwYqBK(mfstA^QpE_WYpr$I!xRj!z<MQX{)!+gqcmAiaR$^Z8@j z=lv6Zf6Ee&xjp5PB}e-AGWcQ~ds<a@oj*J)A<Z1XNXBq->o><Q{9>PP{fpztAq)ZO zpn0dc-(IOc+|EUYB&3F$1yCA=7r?z%UVZs_;4D#^ro1?^66mb20Ky_RJZ=h0;=ivT z;M}`|eR|Mg#C98pd@@fqt>UKu=Wkxz6C|zTHNe(GV}j{m7KOuw>WRVnCi?U&REUF* zk|l(@&SA`pes;x9kLpbM;Ca1g>(IckCrMx90|(%xbfd^-eq($?Gcu6nR6!gI1P=!O z3<&5*y<TT-m?_v#rV>Vo{6m-^g}^*8dQU)4aKPER{+hV8xgGQ*H7TSmcTWn)<amj+ zd<c@Y1t{N1neM3k(a+uHpOg*2E{NajGXCKR^lWA4z<{$L;{PFl9Ctu`9cMtG81lF$ zSu~?+Af4;Ibu3>>`8SHs^NRpT=@hB`LIBX3YYW#4)&+Os0{4phnLP?d2LZnqKfhv; ze)Me!j3OP3jB7#V|78dO_b;_cIG&B+jyoa4zzMb7wHwCnc$`_UX}Y>ZEv-gH;KBI9 zU2U9raTYnR3AG`Rx&}sLUFAEuL!<@Vj9?^-4a4odsD77m>yHD?NKH%rX85yT|LF&C zeJV2W&#ed<cWV8M;r~pp#J3de?4rLA^cvu0>qQ{=0Hu9?Uw`>^Sgt3KoFMb=EbDHb z-Kj#-5{ZNdbYLE@u71D)qMyScUT584AD%DHUUsQilB2&Uy(o^AwZ~QZPc{!KKDtSl zZ*@7c+d+m$EewE-FxmgTN|&&rkm#2E6Z^kFd4t%0hw|LGHt@3g>j|4?k9CeKnAiN> z?-$qlDL#(#Ye4Uy(KO?B7Ceo|=I899(t5|e!8GB}#NR$||G2<!E-mN3vD}a+u*;a) zPR{nCNs5Jk;S*DsN1J)-!2QYfao=)jpHU~bwBvu~a`XoRo}A-G+KF_RQ7P!s`?+>B zbJf)5)O!1G`=KI3aSLf{q&@oG7uwhI8o6FvTqYRq@S%SA5)>&A!AKEegpyPcPEizE zfQg9IES8-;@V6A<{T6DLFHPt-kNcpj{3)<}o)Uy_-|aii>vkq|epX6H@fociI_g91 zoO6%9)WVL^EwvYziMSy39$${C(c2#~Y)~p%Ma{H-N)oyXXJ??!XC*JB70U_dXVILf zAPp7-Qr}xZ6{gJlDHH9EwY3W~7xBm+N`$rb<?203Ijn=aIEDuyO+UOg4QiwFFCLe$ z>6OqcJIR4o>ebi+r5`gTVv!Dt76Ve0lXap{<oh@$wa|B#EFB3fD-5aySil}TfIu{- zc-?uEt8!4yDRbGf8ovu)PRb)!Qbdg6YcPN&{9`6MEDEP64!HnM<%QC+kCBdGD5sJn z$dp8yc;TPsXe_Z%&^uN_=zhGuk_kDMjZ%_~1W7HXXMP$x6M)hL&Av61^-Dl#VJ1au zMiBjyD9todJxy?(cc_SH;5@o0Z)<G0JTHb|I(Hw0H`MS(Pfz@`$DBvfUf&{qQieZJ zJsiqZPDaSMb<MAd_e>IPtXm`XgNZ^IRcibN2Qa>79$P7+$a7)}CeSrzI;~aN9Yz3R zH7J)(LU#5@uDCz8t477|!I?@9kO7g&u^Pi;&Yz5wXN5v#YmJRy-OG7Qn3GSzcFn!h z1OLao^CJROpkaFbqfvO{m5}8L^n4H?W#>F^S2Eu0bc1z&J8%Y7NkDvrj=|GbTHI5_ zGTXh*c~Qa66uLJ*n{MD<e@Iox)g988eh=UQ869_u%*%H>=Y3N;%~Tqc$oV;;t=8m_ zjg$E*z2Z928*&@tRIA|wN!i^EeVJqnqfu(9mxoC2_{rWwgxaiD#x=(3qp5)YRbC_N z_ZoMRb!tND7=9dixuA~T`UG~wNL!ibommJq_Q;GtI_5U-2@YMy!2$ulTkRN#sgS_A z{TmTJJ~dZ!Towv|+3INB5($SwQzf5$Ri|G;A$iOiNLbVHX^~2^hXveP=iRJZ_4=8n zBOF}&=AB&ech!aN&;2$WEiG+z)rsDqv&_~nV7CWrjZrGuJh;xK^-s4$IHF@P>Uw<Q z`r7GU#bHS%S)S;}kI^oC)|^>;SjF)>DQf(rsoL_x&VdI~JbWl(UHWH}-1+lAjk=q# z@9_`EI<JeRjOGE2`lb>#aQJknr*j>X1S<712t9?Ei+cj}N`ujCb*}O}Tn`Ox8IGL{ zoI%h-k#fJ>n0p_Op||_DfEr@(4HATQ<vt-@4B6Dy%crfCkUyUJ)vyjfk%VZxUM`Ww zD|)Hw%WqOz5)h?}U(YagR<#=$>K{W=gSo*$HXCtF*l?QQ?_S5G)+HB9thO-%%pd3G zQ2Y<0uu=-;_xG^uZf5KNP@sp9-ctk=Ern-$R#q0&<v%_f6^`C(Q5cKwa-<F03UdYb z=SiaM?}-=&#)oMKR3mf}dVdKJ|3(khEK+vmQU=h<$-?FP9i^T^s$lS&-O63T&}WF- z-w429vgWC+(66f{x9O<1qR|g+=R^fmUAw`@3f4vW&<)Xcc*y@;2FP_u?@Xj6>MO+# z+XnR~=qR7#dd!V~gNDrQG)Qe&Y$3>^=5|nk&-;$hrZhF}dhr9-OaEgdBa=k+kS&vb ziwpT!4@*jibwO`>N+a`i6H*x0k=5(K{NB(>^i+d8;MzRl(AQi`OtD<_8wj4qOHE8K zJdg-pQ5Dx9#x>mRk0c&svIW^0R}hr<lvcM9d<1;}*?le;e=xwbx2KaIfKa5z^E4hZ zfX{WPWx-xCmUi^3-yUn|CwDB()Y=v2FvLlN3vm=clsckraw!ws0&5Lx$dI2rmJ(~M zv@9&>ui9!TsHN9)duB{9gCsg4P)i*8k46J|7a~1Kpz<Eq<pz=XIvDM_wQHKVg>4ih z#f8OrYp_AOVIDOiU#T`Bf$x)6#k$v7wFa?G*U=m~tGm0@4%*HJSvEe+TI8C$u;WTn z@mW>N1Rcx>pY%?X{WgQV20P&1-Kh9O^rF)-`(eBFTg$N>O%m5gDmJ0%r;&Si1>_t( z2ga+DVxwP)UArx-u)`Iee|94bn`dJhHw*`iN;}(BS8@Evs9lvd#U{kG%pv2<d-=z8 z^DMBQ;lJzABaJa6Qm=+&nDl*E=crsryq@jU=%It{Tb)b}xP2VHWdmH!-}CizRO?Hi zeODK-68a{5kQ*X%@5$}<rSSm;?R?7&J#Dv3i*a=@TvamSq3pFb{(17|D$)1b+Y2h8 z8YiPAbQ^KEWZ`g=axoW#+s(5ZTSpEYq2FKasLmW*o9$d(N)Q|N0}fD(lI6%nFLyzp z<F5BRCb3vta-rT)fP_L4ok~WQ1?U`6^>jeD5iI4DE_F4<IrCAmNIAKy4d(~$Y*6aM zDh{paVc!(IV6v=3)JF9FbSt+w0Ly=*x5GwQ_Mb5twf~6Gzz*+OKpZpy20>x)Ba~d9 zKjA@_Q9|v>PC7|rBX7qr*dn|h*fe#kdfPZoJmvy8m{dKb=5LsxQ1|UCpG`#--L#m! z-6eCuZqVJL&r|fE`1Z%4ZseXc*l~cJ17QL)a#-ci%Hk3jSeogMMm@1|33o{uu%=@I z3gZ!yz{}ajWE9o982Rmlqer6>9;e7Q+BiS1Z(cDF^G6qYJm&z~N8Z?b%>f%u9#zUL z*>qE@%t^^(ek1Y~kM~!MoeeX5x|ZY{c7NG_nRYJ)C;;o9hVsk5Hh|Z|*;lce&9aRE z=@JP#?BrBCKgK!b745GRhN~05f{Fb*BiA5aN|SK0zy(OaeW5Jtr5)ug|GM4|==FVP z;<#@%YvMpyp<mmShL=yh;9I9_H!j}(9HUcm<b|nW1Caj&%+N}Li<crpy(yqCihK7W z%ueXe_~Lwh=IPeNNJN(ThGZ({o=-(H_Ee&XO0FM*Zfpr6TLdtAp1jB?1k+$~QVO#; zu1mA4D8l2IP{j~Ju=>d0xVU7h<8b}L?rkvMvuxWWyOqPg<H;rM#eCzbJHkPFj*GX4 zW(~itHPBGk{Mth!>1xCXvwh=r3{ZZiJ1kpx`!nEd2ztgxk^Gz%I-wosEdaQhOK=pc zq6>?Ko0@1gZ-+n;2HS0r<5Jc~lSCFL2rN0S`w{kt50oRRo_eiLodN5ZTSYr}r#4E6 z6pMd=lT*9QJlTx}hx}tC4n0y)qv+rqT=KYaN$Wse<x;gOy=3k0QFriv8Fl*(K4oHe z#th##>=B_Jj)qGQM?KB5bAe3uQoUkqXEX%3a-&V}RIEDm4IshD{f)`#)c-l^_INKn z3M^=hn22vQ7WgYRGl^p$p`YMC+<h=F8sp|0NiA5hyi%>j$vLDVIJ(gz(?3QQ`ooKd zrkO$D(0j)aKcFzT%uGy<pSa$aJU{Tf%ji`Q;(PA6fo~Q|Nf{bT=&=~TqSwC6;jVDq z7jf*#pK#TlGF7mL<`wru><j%~MS#vA|38p<nT`H$WX@;!ugHwT@ZXVn*H{t0L1wq~ z$@;0uWef9Oq<^;8t$Ch@_52<@AYwertcwd@^RewCzr4K3?Q}RxfSKC;SlMtBh8AAy z(ev=)!N~&wDFV)G)_yN<XU!^owDgPa^`_2_Y`J~79^a%MulNP3dEk#>4by8mw4=_8 zOO@56E~cBI%dCme%9$Jb(PaBUTbiQ#sTLDc#l-rA8rw@Jw6Zj%4dhjUw!u?!WZOT0 zd7h<8=zjss%aw%pc!n8~ZU^LrjyKJ-h0<feSCaQN?cNzQuNLU~Av)}mH^1NQU1>CD zB{q*wwi;(4k||k0I#;y!o;EfiG?=X=g*A-Qv}P$>bky#vN{Htf!UN=A<3Y;E9s36- z)b&M4a!94M^a_Z^ZVyU|cX6k9iwW}iAmjx5-|(kt)efJ_^VC;~Zzzsb-$tJ=&OSkv zoiNPXq-{qCzkQ|v8bw3Wq(O1MNQShLeslg|62LO@5_f(Pz7LD;g#74aCoRyD{F8ty zk=7|azi{%_ChBP_ZI$pmML8ixu-Rzpz>;D@Tw*p^3Q}48ihH@8Xah_BSRpMXq(#MK z*(PZ7xm0R7;x<V+!T)cAYrKo&|NFr;T=>5Yu7StTHm}%In;ed*3CP#88f~O1y#UPx zL_DfYCdFxK<Ejsr%YRL-Une6RL;pEG*;`)eY&IT=SZd!=IKL>_aX#L&Gz~mBNs7_> zgPbhAVIJgI%80jNDxQha0*!9!ddK8sjHdoXPV!?%NJO)R<Ug>I7yWwV+T#4_COWen z4i=tk=KeVxS7!eGwXct~K8<gcu}C(8KE@=jJ%v!*a?8qfclQNJn{m#g;*IqDWsj!w z(a;$?6}&=Z8s59EtL4ts`(lgd_Vz3awMBIw{r$C`A^Q^VyzOE%u7GxE>73PE`fc%g z?*)VGm!!2>-Mk9P!{Cb4@8q(G+P}J8;#V1HHJ+oOYki@u>#S!fMWrA7HziUB=J+X} z;6Ln0J1g<I<<r<H(u%V{OjFhBCl0C|6PBeLY#Eu6q8GRBG5W0!ebgg5qH+wgH*C0A zLImb7V@{qbNwX)NB~bWB>YP^&u~|GF8!$W*F-WE^YY^^#oR8X7m<<uyht7o<q;QJ{ zCZQ!XhK(i`vm_>JSh}0vjO8;URbP0Iz(>zUK@jC$n#b0r+AoT)j~O3Q%=a}L@1{G_ zqt&Z7Es<+Pq%?z3Xt=RTj4R_crdr|_1PH;elggjGR&n2?W$Y_Z=%_GO`m$3SSR~g% zuQd+!LFIw$huc3z?IuvgPW*^X?s1aP^=m#u=w1Bb=<?l?w?Lk{a5f+P77y#YhkWhJ zxLGcfyN4$yo{rCtc|P12&hQ>qcYAx4Zcakg!fW8?1Yn|VF6(2qejrZY3A|+JLep98 zd{Z75NLb~X2`d-G-{cEsDcAC;Xcy^L-nCBkmQUs4_Y$1lej_2FKFKe2+qWgQkhouS z<3KTMhH4nm@gEdzT254}7D7~)zSwBi6Zs%Wo@8?1kYr$tmQzQ^#){+p)PZ>h)><4> z<^IE<D+d&~!Q~fSR<FFYaxyn{Fx*0eG7^Y)ZO-!6mUTE>f0UBb9tkBjB8xBFm5o0p zOE(L1EwRnBgXCW_v7Tic3ldg%@`+uTTXnj&zdIww6uY8h4)y?D3A<8-C*$~f+*O2e z>!cc&lRO`>=+r{AKG*04^oA`70;n6Bb}>LMduydZ`bMcf;k)QdTfcceJsk*FL&*<7 zHe8q6J)|YCfwV<DXdYv$4q4UqZQQZ@Iy&*1-~Qrlx&fYP97~M;DWGOLN8TWh($ou9 zg%)vxA>#F}GQc$?xqMRn6V_)T=&}M!3(>->d0}opnt>f@o3!0xr4uP+oKu25^`&c* z=-T69!?Pq!rZ<{Sk)le1bgV;(ZT)^Sq!jsdb<v}~l_lfKl_3J1o5=K^gv>=Mt}a%S z8m!qDLu!IqNR$=gR9|9PhpKW1>%ZX<!w^7I#mKJj0DU<yS2q}aR{K4oi0TymF$iVi zb`N8>Ml)XNJ@JWEDNG=`?FR8E_g&a((|Rr)+MWTa$Fqoz)i5C&{I5gHw~WCkb+$=8 z{KAlLsPFw1>Ew_1+gm<5rIG6$&0BPcH+({ZqR(&qFtBY^?TLaziCGwC&{-lG(Tde9 z`uC{(oCrz2U<zLkkIe(;C7mwKxNiyfi{$`Na2FOz*wbNblY4Y%v7Nk7KykN?+>G1J zX;0O(iV9Gui4gW$IlQHwT5~$0#Tw8-+9GyRT`T+h#}A!bs!R5`f=+DKi_qt*<@BOT zu7OYW^Zdq!3rk%koupvA5K>RFO5)5zO)a4isitMC{bPj`@?az>>x8<P{jA_l;vzG~ z(&SWqHl$fYI+PFDU%)QL5lV%wkjW3u0b~gi#o_!Aw_gNd#8CCbjOg5$VBf(nUmFBd zyuQchDsB!QKExSjnNOTA(fECUyUXv8?wtq=MpUB4TM|sD0Mv*E&A3=d4ZXbBFb9Gf zSTL;OLwRX<cDlwOF!5Z089dY86AEf5{MJEDFV+}OT$-zmPz2^nR4#f)PF@Hm33?r> zkbd%#qqUnl9Ar+vaFcZhp)lN~JV+?UcStK?1(6XyqzL(hw74#e5ilGevq^ze3%{!f zpjq?KU{{#!E_iDK^XA)YQ$cR?=^&ptw$9W~*mi2-)l|t$f;qzF&@y&*vUm`{E=+;n z$>&vr=Y1JotH!FG7sRq9l+Q~8XwZa4{NkD>sg+-A1C4JfY`~H496Nk7+M&g6d8Ipj zkse2G8I#!J$k-1o&*#8w$fmm8w}9SWKzi6HVkmQ9Y-knY2b-Xk8h?2PzmOQgPoCr# z{bF{4-GNbwnk~3WYqGF%5j))lr@_At`(Gjx8CUFg++74+^-Awd_^zraE!V#zR}0gI zx*-&-t4p)7vSs2T0)<hCM2uZ!>knjniZj6;81C*ygdr98!OOzVQ|86INWYfDsI`ZZ zRVp6?kIV0!|DnBNJSRda+KY=lnunVynKp4AGC-)k&lGLG^GG^q5%1uSiWu~@c{&Cb zN5bRki>u(-Dt;CuN;San*19dy&t#oZ@Y@1UG<MKfNJ&XrrU`J86E_+@>MDn7XYO*P z=IJoov+SFqqd}-9%$x7YE9!qN21y%>%WmUL9D^im)YFx#rI6t~U&`(WVEaPHW{(T# zuM9;4mgx(8fj#Rwxa#S>#5__GEx6;c`|d*{sh;l;5r*rxM}L--k%t<HEwfokdh(3z zD4oQ2uYT&kbk5SRhX5gDw{Dq4_ZQ1GK*VTNa<HTg?H654YdkXA0-8`4DfCbPtPoSR z2+W%8JHzaNGJu&nukq^Su=iX>)g#JScMPA>GumMFuTDVF-S?=F{#(T%;3**nQt8du zq<iy&<`>aHDB8NqkafWSF_6^Vn}sQU7Vt+DS87>Dtrt840o}~ED)SO1DVm(5P)76@ z=Va?%flx64w67b&q+dW+Ja--0;(z9mvf=(ckEHCpcV1o>W0n@6J>BC24+ea@d_J>X zv}*kXcJa?75*tQJz;~^oVF2s9)^Ph*t-)5~e^YC?Wc{nwU<Du{FZFk=0Ve|?il0-> z6v3K~I|mXf)+7L;P|Vbx6PDZ~<Uhhl*I)L2yp`b5HmiCoqB2pvwCs@SBpnaW@<^z{ zG?238K}>@HDgT~D@{I;cN4bS0e_;~ttz&cPJo-W2-zzmxydc_ls~PxN2V<yy`^hQx zdjyIK>QvXRPH9~(hlByBI4WEYY2LtGwk{=t{f9@8_jj!!tw0E<I<3!)XRlO?-6<^t z4zQLF=Lp-wYW}@^myW_8N6oo7jf&KSNB6b3@zQ<1&3@Q^Q}7~)XyZkTf%m%8iN%Vh zqh0vyd`Ji$tRmoFE`|vLda0rmnhLvqN6gYGp(&iU<}kq>E=TCG!Hw-?8rKg=ie6J8 z^?>oFTF6{Nrbv*uCcEI_Y$#^Yw6>9-xE4)w_3?}=TXan%cwr`C;#Qjq$R(abqI6DV z6f37hn8yb(9Q8B?-S)<vd2LU%q|81erLhnh4bQA9mm3e@hQv=<tv5!7VtPR$IZ!*B z$&MsP;3XUIIHx&QNM&hg`cR|sedomC<b;=Pzr2V7OA7@qV;DtIQOhqOD!$tdf&a^P zL(wzDi9a+Z#dTOn_*`%BAaU37U%m&U$Zd)dk<whys?bS}<jEAqX?&*3{zT&Y7O24J z0E&%<ADZi_y9>E0NENzMdvoXAR1ObTG~85s=4Y>7F%O2O=A-1@#mi3J@&&$@R^y}u z&m&Hq#|%d^(V6kTQb{@gnM$g;{U50$GHw!=fqz&ZyIX3RFipZfPJWkEUsH{hm_LbQ z&S_pdkUe7dziSS^pX=hpX*;=!|7tk&55#c2{Y%Py^sok1?0NTq@-jb%sgV}`5D2+_ z^?{TP1|by0L<Oo7hl~S8o$Hg05*5QLh=wC#7j_N1|A(9-{4veadYu`D=j;?SFXVH< ze}2soNb#wU4(8Aj8N_o#VDCOP+i8)H_*2Om!o9W==jE;yTd#g7YSgq`vYv|l@RBNG z3)N|P!^RWSOAJT}rEOQ=n3|phX$GmdicTKU$jyFX{u<6CM<I5WAdoz7_ao-`cZL1C zl3XQ0?su1!U=Zi|cV3&1pAv3xS`{*medymV2&$TxQLQ{eeq_<uaJHhX?1Or;|0~Z9 zvK9Fl=dWZ)C5ecgdtow>+u;28JoqmBL-r6*%DjJ69h6>iv_AdV9~c!o6N)2|O5l}W z$!&+}nF&Yoswl(EDJ96)L76Pv-emdzzi7IZX8+8rn*SF~XZdfME};KR3*<YDbXe*2 zoM|<&=JI=~E4U$7L8*x{ag)%VtNc0l$A7EqES#cX_clzoAR$OEy)U?gbjSjd(p}Q9 zECNdiNJt}HQqmzv=Tg$0OGrqHq%_EaEWI4w_xsMAnKN@{p85R^&&+jS_syW%S^d?1 zG_!MEI9HoN5zPQ$-?d=#ty*B56ls$SLwtNw(^;>3NM5#PvbRB!mrzW~@My!Pk8LPh zWe+!E_0q@deTbP_KeX`USd{7n$aTHtoB|~{ZCZW9!EiNQ-JjVfy;rPF#w;{IbFK8^ z88qPMoFpdi@kn*Afi~llym3p<UE<n=Q?LwYp=_IhA8n}%E;M^wOV1aajJgO<@{ie6 z<3lL*RC90!%I;rZKXgnuj70nT24}GNnwQ6(1k9hhZ|*pbIKq#g-oQ3Qk)Y*47!F0C zMx-1i=#_rdbl8+=$FauaQ<z1dF9@sN#nde_yzpp%<FDPl4`1Z@uc~qF;zCX%RJe&B ztv1;lw)LNrAP6=EF7~g&yAC&qCM4}N^A`9Fl$})Z!URi+zO&uo#TIDv!mp4(3uAo| z5|C|jsb|<BOP<*L{PHVf^XVC4lME>OCGm1*<7L0@DRwVu6&!A;s_HrY{1>tcqbx1T zaZ!ZpnB+Tvtbhuab3DxGRsqr7Y6tM(j+Ex%?$3RguAmBr?FA%L2kMNaZ6vfu_J}CM z>ek5|8}ynxIw2dJvX<JQgaAv?qM{I+*S7+Ew}c&qu$iSdNsR;n(L-`lf3#YSE6%+N z6$NgG4MkyjD@}SM1z`<j^De!~nW1MBmN5wIk(W$tfqDm2Mz8f6ZTtYWoL_=aboQ$$ zCpQwg@*+6LrXDJw{q_3YH238RqMe>4+*;qjI=zOj_Yrj&XWTq*JFIECM|3XWN~uTX ze3!{3WHWYAxNq&OYP@S{*}WHE-U-s$Iu6>qxnrd`k>CX|1n-}fFux&sZjMqWdlYSG z35&QLR_l-RAe%Wgi%zxc+78wP%<?ea+J4%<5)2B!b7?$x^YHhVWO&io;bu5D=xJi8 z@VSY%yos02EmGmpZuT6BAFnyxZVY`ZIq9?UJ|;m8WJHrT-Q=R;6+2!h<I+|Gt$Nl} z18o&xs9vbhAxky>dcGo|gD5M;Qb>IawB-hLc4Zl9=&{qcF-LYgh9c^%Fq~bDC)X%4 z+0ML>nQ^=a4O;Z((T={=;WW<f+E90g?8OCS%+B<DbAvvoX+_fz)Gzk$qo%^`oZyqY zpV>4NS=9B@Z4Q+_I@rDuJdaAZ@55MPs-I?>fz2SzW;au1fron_kk8VG)uj-fuK8M= zWsZ7u+`2F7nOEeVt%#sECF3^Bc^q<0QMVhX>_@FsL^U8iL(W;aZ0gNv%RfCVc%%+q zPIg=04728wszM)!nR}R*1dXSa%8XJsv(lITa;`c}^Ki+SRS)AP9f^Jo(*CY8d&~aK zI<>?{qHZbg>Ze(ij<9Y%R)NVvxLP`O*(7$aNdYnlfQNoVW%^M+Zfsng0_5(K$wk@X zzfm`PnAuziyZ<ctlp*(`wIinITl;SFDyoepr&%df`@Y=Y&9kvXh%@ys*ZekzLS<i2 ziX+NL(N`GTrKI|W@DF}uf#jejZW4}Kwo{vIE9yFnhyb)EN_p~UeRW9LTV%4~^^QZX zTJ^hsg#HWBt=ZU;voF#eGBr?j?Xa{hVO95@PT<H}kd*%CO;*Kw%E;+M!64j>e;`CX z;{PFp;M4TG|3C;pDdYh{Aj<w1gs7z@X!v(l2m3+i!x-0~-zC<=hgZ3YZ2SWus14My z!7pemCkR=5B18PPgyK4Qcw%F{*Sp;h{$ucla|J&bykW!|N<S-2KmEZluJ<`eK3{f0 zq<SRl4KjD#-z2Qw+x*BH?}O0HkeYb>m%$sSu(oM`mZ>B7x5c}snji#Nk4~mup@(1s zxG{wOPTgN8v}X%5u99lc(oHo3`{wZfws^7oUtAn{YxExSJ8@VS5q24T|1St3`hE#= zzt#<XC;39zt_k0{?~tUm<KdgDtAO9n5-Xl~N@lrN?vd#9yezULPT=pr{meCZ5GWH* zZ>7(b6JRw<wY?UK>rZtd0jaP-kxEA358gZYuc&!<Uj}whe+2}_i{mIIt>VyfbOp#G z@WHN0t6;ubp~n=phvRu0##_D56k5_PuyD>MCO%m7MGGLfy37H~jSv+va+&HCDJ8+M z0WB4=aZ$IU*C8?Dk^QgpXJ0X0Ga2`ne|mJ^gDuTdo~@KJkABMl+5pm!ynWX>jNd1* zPcs|Hm{7t|<lkRDxc~>-M^uXUP7WLO4xbWW9&c>~5NaP@wycpk9Stj3mK3Y3Jpr-@ z3p=7;<R)k*5<`YUz4?9GeV)p$iNz-}+)~e844-ewd~UW6fjhGo&}^x!sV&gZgNitl z*HmG-sdC7BjL`+!a%mIVeV0pO>BYUNTNk(K_hF5tSF5_acr98jU74Q*SEEN+R}1;< zw823OT|B!k)OYncd?};~XP}cul^%JB4JF+Qr>9vvy(tq41J)(B)_iiy+?I6IH%!5n zJbZM`!bX?%@XI{e2q4E5wuf#fjj^pFgPqN%vpTJc;i5%xHaA7`8BVv~5cEQ3sytdo ztS#Ggp;WY{w3{CdR_0K?C|1X5x5AJ)3ANeGV!LEu3efE345C8yLB(GVh0|l+Hg`?_ z!dG~v8zKy4ZXkma8f~l%1--D(Q!1>Uag(?Tk+zR6aIBIU#?}r@c(iNDmAA6W+xB7= z&U~mKi>ah^K>6)wT97Ln)*SD}MA`0Q2r@^F;gTwC<`(XtP5quITCM`mPe03D%JC!C zDPhS#PNwEAY))vX=T6UPqPWA>_-h_f^r%ME%hSJ<)9qHIuc+9!o;BftR|i^nd1=R> z<8_zWPxR?Ekdykc?HXt&QRhrB!Xs;Y(o3&q{x?mWy+KL_L|_tv8$NUVi_*uSy5Z%e zVWMlcrkM9KNI9KRX)fOLrUwyoO%V-$d-_c%h7$5?WNJ#0ZBsq^Y=_d<aYBesat=bf zcj4$2eqYOYVOO6pQWA6p_tzfuKdXd-)YECII0(;TwR<m(4M1DB{D_i)GPuqcF@5_g zJ!9!-8mUKLH}n?Gc{EbZ9HVuAam-I?+iNBA6I(~eAlRPFNC6Y6HYwCnRlV~p=%Vd= z?p9g}&(sXFzvZMpU#T7kCp6xZs~$)+fp3ki?hpF9A%}r?0W}pzf!xvyC%1#$bGxG9 zn?Jh*PC60vHcR36ttS@0<LbO^j9f_C$<GF5&P2l{yZmhW6CJlZ1%??pFJG!gVqGS@ zYNPtVv}r@lltPbjvo>IRh)){gBV&-(^5jPg)6M!2xyWsu1u>#0oEvq(WTo3Gyo}!- zfKU4n6n3?iit8NwZeOmhA4ZCfhyge*^k=r!|EfbWjUSWqBI5)I9}@-liw-{4gFtD~ zbz~c9wCH}v1WAA>sA07isEd1k;^`Eh@6CdI2h?{?QN0AM;MpPdHE?n~9=dIZLq z!`dZHJojP7e>|$9`Oeja^4j6up^|iwP*wyq7d3@mNMH?&?`so!ZIZm~@dZ-FG?~w4 zgj-};K%N6(K283r!5g2Z76B})>$tQILyvjNi2hy+6ne*()wc3wC3MIxaFoyy)iv2r ziH$qWdfmdB>8$Z1UyRpzOB5d;pWPw(sO@lb29upeHMnMblO&#=7cxh25kq#TGfJGX ze(VADi<XcO1RhB{PP58*G_lWal1qm0iU!F291FA=^Pl9}ZgbMLRYcxe!p5N)PS@+$ z^zB=$ZG>{u?U?(I25X&Uun}&XC+T4uA)vbY6D%+2vY1a;r~C~m-2cswf&SVI>Y0Jq z?{(mp$;!~%*y^YZB-oaXC@ECn>eC(md{l9f;QcFmex`H_8?fAlRQ`Z{5vFYtodV^# z4pXCZ7W{+yyufq;F%<#Frgf#*sY;%%PCTjlMC!1+(VJjeO9|9pH!9-?Bu@pdkh_gY zuv~k>%GFwYc96Ggn2E|mLCq@4Y*N+&5QIgbi2WPhFobOasu1R*x$u+Xqz%G!Hq?O{ zSY)Yj>PQXgQ93C~i@4qg<l!3Ygmd1hIwT7w12RqNbTww@S1p5g|B;I-6uhSo@EcOw z4I_;l&brloC3!NFCXxtl1_y5#DjigYGTSS3i#G%dqBI?1tMVIElrHnWGHic%W=?M9 zUBJbRl6~bCpxzsVE;|q#=5ct~{*Zlcys*#Wp;UrkjTs<?qAqUIj}?ZCJ%<k=H<!39 zoKK!VjI<YLhw%&I7AN`s($R(EQH^ZLD_RDJ;o_oa1g;_>6=1}87_2#qLkQkGX$5oE z2shS9|3s_w+BU^w1^egNA{PRawBII?EiEORBXx1F6E*<?M60ywzzS`2M&3;SIsAjS z*kT*UqRPPX5tjqc7JEX;z1v%LLvGL;f5rSckm3$Q<QE1Hy^NupI7y$5IL@Z7co>Vm zIDh^AmZ4{>`>#^lvY7c6r#Atm5rrw6QS=z13%c)Xjmpz{JAZTdO!k(K4&3$_eF4Pk z?`RV2*cniAizd_RXg=`~ORIrfNTF5MojzTA$8rWdWH*${Z3?IIb5e#pGki(iS$&!D zgPr&}wtyjY&juw&a6To7R|dDby3ifP6KKDJyv76~BHyu|64Lh4%Co&pPRI27f<3^7 zo$i~?e%i&l+p0-ty6}}^93&fh^)c;_xX%E1%gm%(%|}f<k)O#fQ%+bOsKFhs!BD25 zX6O6udo4N&8_jWQ6yA4wt3PbU(f&bGe@8_kg`Gu-eSjDzhovYR%R0|e?qrEV*yd4n zqL61nET_114!M|zYuj`3&vZynYi9^?K$}m>Fp)_$KMkrw&x<&NqBM5~2jO+!3EL)> zt9hgeJip1Qj#WvPS~=9A%cs=}Opup`3Mxd-e60Vx1z`K#NHnGM+!+Tjj{C$EwcMN8 z5eT4{9InMalTF3~!&w{V4<vVwC6ge>_XauLHL=yvJmG-$Rf(wliEMu^#`H1#_~uKa z^DlL;<k6#6)-%HRLFwN`RYMy(Q{s1gozmDkW9Jwe6%IP6#tzgCUbqi4e4_wo@zx|@ zTYcEH#<?%nvDlahSfYq{4>yUM4J<N2MKHP1I6Uq<dy9?~eG|?ql^{^O4S7r_TS<pi zGOz%&G-csFCJ`)L9+BYxS;mR^-nXBnnrhs#n`2LXxj`(~nBh;9GeuvF0MJye=p*pJ zdRbP9vNKQTyGvA*^?RuLU~l?wuu*UX*}T5KU<Sz=TNB@if%d#@Z?jYv?0H^>H7L;u z0+M^Gf(A+chWbk#$n96#zK`Tqjjc?oO6B|jv%^K{RwdFrMPioXIQI$xmN?MNXucdh z<Crl9vG?KdR9r0!79p<Jqi~|R<f6GyxUVH_r!A=L?6cl3M?R1p;NJ9ujAguXc+0b2 z?cM6PWdc1Cs?kk(50&)Die$ncJGiN_<}j}jJTVwu{B}KOCt`p^%OzGwUT8UTJxNy4 zoH}2b#Y`hF?J#sPjgUf9Yu^r;Rqp9S&Ngq>5w5MqwKL3GMdIeZ!RiMrOm(D_Q=%sI gA&3!FP;2|yI?a4H^?xr<DF7X~nzlEEaiWUxFB?OrXaE2J diff --git a/Documentation/index.html b/Documentation/index.html index 753f598..e42b661 100644 --- a/Documentation/index.html +++ b/Documentation/index.html @@ -51,7 +51,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Enums.html">Enums</a> + <a href="Enums.html">Enumerations</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Enums/CipherTextType.html">CipherTextType</a> @@ -68,16 +68,19 @@ <a href="Functions.html">Functions</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF">getFingerprint(identity:stableIdentifier:iterations:)</a> + <a href="Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF">getFingerprint(identity:stableIdentifier:iterations:)</a> </li> <li class="nav-group-task"> - <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF">getLogicalKey(for:)</a> + <a href="Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF">getLogicalKey(for:)</a> </li> </ul> </li> <li class="nav-group-name"> <a href="Protocols.html">Protocols</a> <ul class="nav-group-tasks"> + <li class="nav-group-task"> + <a href="Protocols/GroupKeyStore.html">GroupKeyStore</a> + </li> <li class="nav-group-task"> <a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a> </li> @@ -102,7 +105,7 @@ </ul> </li> <li class="nav-group-name"> - <a href="Structs.html">Structs</a> + <a href="Structs.html">Structures</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Structs/CipherTextMessage.html">CipherTextMessage</a> @@ -191,9 +194,6 @@ <li class="nav-group-task"> <a href="Structs/SessionSignedPreKeyPublic.html">SessionSignedPreKeyPublic</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalAddress.html">SignalAddress</a> - </li> <li class="nav-group-task"> <a href="Structs/SignalCommonCrypto.html">SignalCommonCrypto</a> </li> @@ -203,16 +203,13 @@ <li class="nav-group-task"> <a href="Structs/SignalMessage.html">SignalMessage</a> </li> - <li class="nav-group-task"> - <a href="Structs/SignalSenderKeyName.html">SignalSenderKeyName</a> - </li> <li class="nav-group-task"> <a href="Structs/SymmetricParameters.html">SymmetricParameters</a> </li> </ul> </li> <li class="nav-group-name"> - <a href="Typealiases.html">Typealiases</a> + <a href="Typealiases.html">Type Aliases</a> <ul class="nav-group-tasks"> <li class="nav-group-task"> <a href="Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira">RatchetIdentityKeyPair</a> @@ -239,7 +236,7 @@ <h2 id='purpose' class='heading'>Purpose</h2> <h2 id='installation' class='heading'>Installation</h2> <p>You can install <code>LibSignalProtocolSwift</code> through <a href="https://cocoapods.org">Cocoapods</a>, by adding the following to your <code>Podfile</code>:</p> -<pre class="highlight ruby"><code><span class="n">pod</span> <span class="s1">'LibSignalProtocolSwift'</span> +<pre class="highlight ruby"><code><span class="n">pod</span> <span class="s1">'LibSignalProtocolSwift'</span><span class="p">,</span> <span class="s1">'~> 1.3'</span> </code></pre> <p>After installation the Framework can be accessed by importing it:</p> @@ -249,16 +246,19 @@ <h2 id='prerequisites' class='heading'>Prerequisites</h2> <h3 id='local-storage' class='heading'>Local storage</h3> <p>The Signal Protocol needs local storage for message keys, identities and other state information. -You can provide this functionality by implementing the protocol <code>KeyStore</code>, which requires -five delegates for the individual data stores:</p> +You can provide this functionality by implementing the protocol <code><a href="Protocols/KeyStore.html">KeyStore</a></code>, which requires +four delegates for the individual data stores:</p> <ul> -<li><code>IdentityKeyStore</code> for storing and retrieving identity keys</li> -<li><code>PreKeyStore</code> for storing and retrieving pre keys</li> -<li><code>SenderKeyStore</code> for storing and retrieving sender keys</li> -<li><code>SessionStore</code> for storing and retrieving the sessions</li> -<li><code>SignedPreKeyStore</code> for storing and retrieving signed pre keys</li> +<li><code><a href="Protocols/IdentityKeyStore.html">IdentityKeyStore</a></code> for storing and retrieving identity keys</li> +<li><code><a href="Protocols/PreKeyStore.html">PreKeyStore</a></code> for storing and retrieving pre keys</li> +<li><code><a href="Protocols/SessionStore.html">SessionStore</a></code> for storing and retrieving the sessions</li> +<li><code><a href="Protocols/SignedPreKeyStore.html">SignedPreKeyStore</a></code> for storing and retrieving signed pre keys</li> </ul> +<h4 id='optional' class='heading'>Optional</h4> + +<p>There is a feature for group updates, where only one administrator can send, and the others can only receive. If you want this functionality, then implement the <code><a href="Protocols/GroupKeyStore.html">GroupKeyStore</a></code> protocol, with the additional delegate <code><a href="Protocols/SenderKeyStore.html">SenderKeyStore</a></code> for storing and retrieving sender keys.</p> +<h3 id='sample-implementation' class='heading'>Sample implementation</h3> <p>You can have a look at the <a href="https://github.com/christophhagen/LibSignalProtocolSwift/tree/master/Tests/Test%20Implementation">test implementation</a> for inspiration.</p> <h3 id='server-for-message-delivery' class='heading'>Server for message delivery</h3> @@ -266,8 +266,8 @@ <h3 id='server-for-message-delivery' class='heading'>Server for message delivery <p>The server that stores the messages for retrieval needs to store the following data for each <code>SignalAddress</code>:</p> <ul> -<li><code>Public Identity Key Data</code>: The public part of the identity key of the device</li> -<li><code>Signed Pre Key Data</code>: The current signed pre key</li> +<li><code>Public Identity Key</code>: The public part of the identity key of the device</li> +<li><code>Signed Pre Key</code>: The current signed pre key</li> <li><code>Pre Keys</code>: A number of unsigned pre keys</li> <li><code>Messages</code>: The messages to deliver to that address, including the sender</li> </ul> @@ -285,16 +285,21 @@ <h2 id='usage' class='heading'>Usage</h2> <h3 id='creating-identity-and-keys' class='heading'>Creating identity and keys</h3> <p>Before any secure communication can happen, at least one user needs to upload all necessary ingredients for a <code>PreKeyBundle</code> to the server.</p> -<pre class="highlight swift"><code><span class="c1">// Create the identity key and store it (only done once)</span> -<span class="k">let</span> <span class="nv">identity</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">createIdentityKey</span><span class="p">()</span> +<pre class="highlight swift"><code><span class="c1">// Create the identity key ata install time</span> +<span class="k">let</span> <span class="nv">identity</span> <span class="o">=</span> <span class="k">try</span> <span class="kt">SignalCrypto</span><span class="o">.</span><span class="nf">generateIdentityKeyPair</span><span class="p">()</span> + +<span class="c1">// Store the data in the key store</span> + +<span class="c1">// Get the public key from the store</span> +<span class="k">let</span> <span class="nv">publicKey</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">getPublicIdentityKey</span><span class="p">()</span> <span class="c1">// Create pre keys and save them in the store</span> -<span class="k">let</span> <span class="nv">preKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt">Data</span><span class="p">]</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">createPreKeys</span><span class="p">(</span><span class="nv">start</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="nv">count</span><span class="p">:</span> <span class="mi">10</span><span class="p">)</span> +<span class="k">let</span> <span class="nv">preKeys</span><span class="p">:</span> <span class="p">[</span><span class="kt">Data</span><span class="p">]</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">createPreKeys</span><span class="p">(</span><span class="nv">count</span><span class="p">:</span> <span class="mi">10</span><span class="p">)</span> <span class="c1">// Create a signed pre key and save it in the store</span> -<span class="k">let</span> <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">createSignedPrekey</span><span class="p">(</span><span class="nv">id</span><span class="p">:</span> <span class="mi">1</span><span class="p">)</span> +<span class="k">let</span> <span class="nv">signedPreKey</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="k">try</span> <span class="n">bobStore</span><span class="o">.</span><span class="nf">updateSignedPrekey</span><span class="p">()</span> -<span class="c1">// Upload identity, preKeys, and signedPreKey to the server</span> +<span class="c1">// Upload publicKey, preKeys, and signedPreKey to the server</span> </code></pre> <h3 id='creating-a-session-from-a-prekeybundle' class='heading'>Creating a session from a PreKeyBundle</h3> @@ -325,7 +330,7 @@ <h3 id='creating-a-session-from-a-received-prekeysignalmessage' class='heading'> <pre class="highlight swift"><code><span class="c1">// Get the message from the server</span> <span class="c1">// Create the session</span> -<span class="k">let</span> <span class="nv">session</span> <span class="o">=</span> <span class="kt">Session</span><span class="p">(</span><span class="nv">for</span><span class="p">:</span> <span class="n">aliceAddress</span><span class="p">)</span> +<span class="k">let</span> <span class="nv">session</span> <span class="o">=</span> <span class="kt">SessionCipher</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="n">bobStore</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="n">aliceAddress</span><span class="p">)</span> <span class="c1">// Process the message</span> <span class="k">let</span> <span class="nv">decryptedMessage</span> <span class="o">=</span> <span class="k">try</span> <span class="n">session</span><span class="o">.</span><span class="nf">decrypt</span><span class="p">(</span><span class="n">preKeyMessage</span><span class="p">)</span> @@ -337,12 +342,18 @@ <h4 id='sending' class='heading'>Sending</h4> <pre class="highlight swift"><code><span class="c1">// Compose a message</span> <span class="k">let</span> <span class="nv">message</span> <span class="o">=</span> <span class="s">"Hello there"</span><span class="o">.</span><span class="nf">data</span><span class="p">(</span><span class="nv">using</span><span class="p">:</span> <span class="o">.</span><span class="n">utf8</span><span class="p">)</span><span class="o">!</span> +<span class="c1">// Send message to Bob</span> +<span class="k">let</span> <span class="nv">session</span> <span class="o">=</span> <span class="kt">SessionCipher</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="n">aliceStore</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="n">bobAddress</span><span class="p">)</span> + <span class="c1">// Encrypt</span> <span class="k">let</span> <span class="nv">encryptedMessage</span> <span class="o">=</span> <span class="k">try</span> <span class="n">session</span><span class="o">.</span><span class="nf">encrypt</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> </code></pre> <h4 id='receiving' class='heading'>Receiving</h4> <pre class="highlight swift"><code><span class="c1">// Get message from the server</span> +<span class="c1">// Receive message from Alice</span> +<span class="k">let</span> <span class="nv">session</span> <span class="o">=</span> <span class="kt">SessionCipher</span><span class="p">(</span><span class="nv">store</span><span class="p">:</span> <span class="n">bobStore</span><span class="p">,</span> <span class="nv">remoteAddress</span><span class="p">:</span> <span class="n">aliceAddress</span><span class="p">)</span> + <span class="c1">// Decrypt</span> <span class="k">let</span> <span class="nv">decryptedMessage</span> <span class="o">=</span> <span class="k">try</span> <span class="n">session</span><span class="o">.</span><span class="nf">decrypt</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> </code></pre> @@ -358,7 +369,7 @@ <h4 id='verifying-identity-keys' class='heading'>Verifying identity Keys</h4> <span class="k">let</span> <span class="nv">display</span> <span class="o">=</span> <span class="n">fingerprint</span><span class="o">.</span><span class="n">displayText</span> <span class="c1">// ... or transmit the scannable data to the other client...</span> -<span class="k">let</span> <span class="nv">scanData</span> <span class="o">=</span> <span class="k">try</span> <span class="n">fingerprint</span><span class="o">.</span><span class="n">scannable</span><span class="o">.</span><span class="nf">data</span><span class="p">()</span> +<span class="k">let</span> <span class="nv">scanData</span> <span class="o">=</span> <span class="k">try</span> <span class="n">fingerprint</span><span class="o">.</span><span class="n">scannable</span><span class="o">.</span><span class="nf">protoData</span><span class="p">()</span> <span class="c1">// ... or compare to a received fingerprint</span> <span class="n">fingerprint</span><span class="o">.</span><span class="nf">matches</span><span class="p">(</span><span class="n">scannedFingerprint</span><span class="p">)</span> @@ -384,9 +395,11 @@ <h4 id='client-identifiers' class='heading'>Client identifiers</h4> </code></pre> <h4 id='providing-a-custom-crypto-implementation' class='heading'>Providing a custom crypto implementation</h4> -<p>It is possible for any custom implementation of the <code>SignalCryptoProvider</code> protocol +<p>It is possible for any custom implementation of the <code><a href="Protocols/SignalCryptoProvider.html">SignalCryptoProvider</a></code> protocol to serve as the cryptographic backbone of the protocol. This can be done by -setting the static <code>provider</code> variable of the <code>SignalCrypto</code> class.</p> +setting the static <code>provider</code> variable of the <code><a href="Structs/SignalCrypto.html">SignalCrypto</a></code> class:</p> +<pre class="highlight swift"><code><span class="kt">SignalCrypto</span><span class="o">.</span><span class="n">provider</span> <span class="o">=</span> <span class="kt">MyCustomCryptoProvider</span><span class="p">()</span> +</code></pre> <p>The elliptic curve functions are handled by the same C code that is deployed in <a href="https://github.com/signalapp/libsignal-protocol-c">libsignal-protocol-c</a> @@ -410,8 +423,8 @@ <h4 id='disclaimer' class='heading'>Disclaimer</h4> </section> </section> <section id="footer"> - <p>© 2018 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2018-02-13)</p> - <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.8.3</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p> + <p>© 2019 <a class="link" href="https://github.com/christophhagen" target="_blank" rel="external">Christoph Hagen</a>. All rights reserved. (Last updated: 2019-04-19)</p> + <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.9.6</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external">Realm</a> project.</p> </section> </article> </div> diff --git a/Documentation/js/jazzy.js b/Documentation/js/jazzy.js index 3965b5f..4ff9455 100755 --- a/Documentation/js/jazzy.js +++ b/Documentation/js/jazzy.js @@ -38,9 +38,3 @@ $(".token").click(function(event) { } event.preventDefault(); }); - -// Dumb down quotes within code blocks that delimit strings instead of quotations -// https://github.com/realm/jazzy/issues/714 -$("code q").replaceWith(function () { - return ["\"", $(this).contents(), "\""]; -}); diff --git a/Documentation/js/jquery.min.js b/Documentation/js/jquery.min.js index ab28a24..4d9b3a2 100755 --- a/Documentation/js/jquery.min.js +++ b/Documentation/js/jquery.min.js @@ -1,4 +1,2 @@ -/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; -if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px") -},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m}); +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w}); diff --git a/Documentation/search.json b/Documentation/search.json index 4a29688..7d9e1c2 100644 --- a/Documentation/search.json +++ b/Documentation/search.json @@ -1 +1 @@ -{"Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira":{"name":"RatchetIdentityKeyPair","abstract":"<p>An elliptic key pair specifically used for identification in a ratchet</p>"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV5storexv":{"name":"store","abstract":"<p>The store to save and retrieve keys from</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzv":{"name":"remoteAddress","abstract":"<p>The address of the other party</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderVACyxG7AddressQz06remoteE0_x5storetcfc":{"name":"init(remoteAddress:store:)","abstract":"<p>Constructs a session builder.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7processs6UInt32VSgAA06PreKeyA7MessageV03prehaI0_AA0C6RecordC07sessionK0tKF":{"name":"process(preKeySignalMessage:sessionRecord:)","abstract":"<p>Build a new session from a received PreKeySignalMessage.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LLs6UInt32VSgAA06PreKeyA7MessageV03prepaQ2V3_AA0C6RecordC6recordtKF":{"name":"process(preKeySignalMessageV3:record:)","abstract":"<p>Build a new session from a received PreKeySignalMessage.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7processyAA0C12PreKeyBundleV03pregH0_tKF":{"name":"process(preKeyBundle:)","abstract":"<p>Build a new session from a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SessionPreKeyBundle.html\">SessionPreKeyBundle</a></code> retrieved from a server.</p>","parent_name":"SessionBuilder"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvZ":{"name":"keyInfo","abstract":"<p>Bytes used as input for the KDF</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivZ":{"name":"secretSize","abstract":"<p>The number of bytes for the root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVv":{"name":"key","abstract":"<p>The current root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV3key_tcfc":{"name":"init(key:)","abstract":"<p>Create a new root key from the components</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV11createChainAC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V05theircE0_AA07PrivateE0V03ourcE0tKF":{"name":"createChain(theirRatchetKey:ourRatchetKey:)","abstract":"<p>Create a new root key and chain key.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV9protoData10Foundation0G0VyF":{"name":"protoData()","abstract":"<p>Return the serialized root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyVAC10Foundation4DataV4from_tcfc":{"name":"init(from:)","abstract":"<p>Deserialize a root key.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV1loiSbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two root keys.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two root keys for equality.</p>","parent_name":"RatchetRootKey"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV7groupIdSSv":{"name":"groupId","abstract":"<p>The group identifier (such as the name)</p>","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV6senderAA0A7AddressVv":{"name":"sender","abstract":"<p>The contact</p>","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameVACSS7groupId_AA0A7AddressV6sendertcfc":{"name":"init(groupId:sender:)","abstract":"<p>Create a new <code>SignalSenderKeyName</code></p>","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two <code>SignalSenderKeyName</code>. Two <code>SignalSenderKeyName</code> objects are","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV9hashValueSiv":{"name":"hashValue","abstract":"<p>A hash value of the address, constructed by summing the","parent_name":"SignalSenderKeyName"},"Structs/SignalSenderKeyName.html#/s:14SignalProtocol0A13SenderKeyNameV11descriptionSSv":{"name":"description","abstract":"<p>A String representation of the sender key name.</p>","parent_name":"SignalSenderKeyName"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivZ":{"name":"cipherKeyLength","abstract":"<p>The length of cipher keys in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivZ":{"name":"macKeyLength","abstract":"<p>The length of the mac key in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivZ":{"name":"ivLength","abstract":"<p>The length of the initialization vector in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivZ":{"name":"derivedMessageSecretsSize","abstract":"<p>The length of cipher key, mac key, and iv</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVv":{"name":"cipherKey","abstract":"<p>The cipher key to encrypt/decrypt a message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVv":{"name":"macKey","abstract":"<p>The mac key of a message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVv":{"name":"iv","abstract":"<p>The initialization vector</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vv":{"name":"counter","abstract":"<p>The counter of the message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV6cipher_AF3macAF2ivs6UInt32V7countertKcfc":{"name":"init(cipher:mac:iv:counter:)","abstract":"<p>Create the message keys from the components</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysVAC10Foundation4DataV8material_tKcfc":{"name":"init(material:)","abstract":"<p>Create the message keys from generated bytes.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVv":{"name":"protoObject","abstract":"<p>The message keys converted to a ProtoBuf object</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysVAcA0A8_SessionV5ChainV0D3KeyV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create message keys from a ProtoBuf object.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two message keys for equality.</p>","parent_name":"RatchetMessageKeys"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVv":{"name":"key","abstract":"<p>The key material of length <code>KeyPair.keyLength</code></p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV5point_tKcfc":{"name":"init(point:)","abstract":"<p>Create a private key from a curve point.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV15unverifiedPoint_tKcfc":{"name":"init(unverifiedPoint:)","abstract":"<p>Create a private key. Only checks the length, nothing else.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVACyKcfc":{"name":"init()","abstract":"<p>Create a new random private key.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4sign10Foundation4DataVAG7message_tKF":{"name":"sign(message:)","abstract":"<p>Calculate the signature for the given message.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV7signVRF10Foundation4DataVAG7message_tKF":{"name":"signVRF(message:)","abstract":"<p>Calculates a unique Curve25519 signature for the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV18calculateAgreement10Foundation4DataVAA06PublicD0V06publicD0_tKF":{"name":"calculateAgreement(publicKey:)","abstract":"<p>Calculate the shared agreement between the private key and the given public key.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVv":{"name":"data","abstract":"<p>The serialized data of the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two private keys for equality.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a private key from a byte record.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV9protoData10Foundation0F0VyF":{"name":"protoData()","abstract":"<p>Convert the key to serialized data</p>","parent_name":"PrivateKey"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivZ":{"name":"macLength","abstract":"<p>The length of the MAC for a message in bytes</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vv":{"name":"senderRatchetKey","abstract":"<p>The public key of the sending ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV7counters6UInt32Vv":{"name":"counter","abstract":"<p>The current counter of the ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vv":{"name":"previousCounter","abstract":"<p>The counter of the previous ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVv":{"name":"cipherText","abstract":"<p>The encrypted text</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVv":{"name":"mac","abstract":"<p>The mac of the message</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageVAC10Foundation4DataV6macKey_AA06PublicG0V013senderRatchetG0s6UInt32V7counterAL15previousCounterAF10cipherTextAI0i8IdentityG0AI08receiverqG0tKcfc":{"name":"init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)","abstract":"<p>Create a SignalMessage from its components.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL10Foundation4DataVAA9PublicKeyV014senderIdentityQ0_AJ08receiversQ0AH03macQ0AH7messagetKF":{"name":"getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)","abstract":"<p>Calculate the MAC of the message. The length of the MAC is specified by <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivZ\">SignalMessage.macLength</a></code></p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9verifyMacSbAA9PublicKeyV014senderIdentityG0_AF08receiveriG010Foundation4DataV03macG0tKF":{"name":"verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)","abstract":"<p>Verify the MAC of the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV04baseC0AA010CipherTextC0VyKF":{"name":"baseMessage()","abstract":"<p>Return the serialized version of the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vv":{"name":"protoObject","abstract":"<p>Convert signal message to a ProtoBuf object</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageVAcA0a1_aC0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signal message from a ProtoBuf object.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9protoData10Foundation0E0VyKF":{"name":"protoData()","abstract":"<p>Serialize the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signal message from serialized data.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalMessages for equality.</p>","parent_name":"SignalMessage"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivZ":{"name":"length","abstract":"<p>The length of a fingerprint</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvZ":{"name":"version","abstract":"<p>The version of the fingerprint</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVv":{"name":"localFingerprint","abstract":"<p>The fingerprint data of the local party</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVv":{"name":"remoteFingerprint","abstract":"<p>The fingerprint data of the remote party</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc":{"name":"init(localFingerprint:remoteFingerprint:)","abstract":"<p>Create a new ScannableFingerprint Version 1.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintVAcA0a1_D0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a fingerprint from a ProtoBuf object.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vv":{"name":"protoObject","abstract":"<p>The fingerprint converted to a ProtoBuf object</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV7matchesSbACF":{"name":"matches(_:)","abstract":"<p>Compare if fingerprints match, i.e. the local fingerprint matches the remote fingerprint and vice versa.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two Fingerprints for equality.</p>","parent_name":"ScannableFingerprint"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgv":{"name":"preKeyId","abstract":"<p>The id of the pre key, if one was used</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vv":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vv":{"name":"baseKey","abstract":"<p>The base key used for the outgoing pre key message</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVv":{"name":"protoObject","abstract":"<p>Create a ProtoBuf object for serialization.</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyVAcA0A8_SessionVABV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a pending pre key from a ProtoBuf object.</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two pending pre keys for equality.</p>","parent_name":"PendingPreKey"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vv":{"name":"id","abstract":"<p>The id of the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vv":{"name":"iteration","abstract":"<p>The current chain iteration of the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVv":{"name":"chainKey","abstract":"<p>The chain key used for the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vv":{"name":"signatureKey","abstract":"<p>The signature key used for signing the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV04baseF0AA010CipherTextF0VyKF":{"name":"baseMessage()","abstract":"<p>Create a serialized message from the distribution message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageVACs6UInt32V2id_AE9iteration10Foundation4DataV05chainD0AA06PublicD0V09signatureD0tcfc":{"name":"init(id:iteration:chainKey:signatureKey:)","abstract":"<p>Create a distribution message.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two distribution messages.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vv":{"name":"protoObject","abstract":"<p>Convert the distribution message to a ProtoBuf object</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageVAcA0a1_cdeF0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a distribution message from a ProtoBuf object.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvZ":{"name":"infoMaterial","abstract":"<p>The info used when creating the keys from the seed</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ":{"name":"ivLength","abstract":"<p>The length of the initialization vector</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ":{"name":"cipherKeyLength","abstract":"<p>The length of the key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivZ":{"name":"secretLength","abstract":"<p>The combined length of iv and key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vv":{"name":"iteration","abstract":"<p>The iteration of the message key in the chain</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVv":{"name":"iv","abstract":"<p>The initialization vector</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVv":{"name":"cipherKey","abstract":"<p>The encryption/decryption key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVv":{"name":"seed","abstract":"<p>The seed used to derive the key and iv</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyVACs6UInt32V9iteration_10Foundation4DataV4seedtKcfc":{"name":"init(iteration:seed:)","abstract":"<p>Create a message key from the components.</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVv":{"name":"protoObject","abstract":"<p>Convert the sender chain key to a ProtoBuf object</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyVAcA0a1_cE5StateVABV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a message key from a ProtoBuf object.</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender message keys for equality.</p>","parent_name":"SenderMessageKey"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgv":{"name":"preKeyId","abstract":"<p>The pre key id of the one time key from the other party</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vv":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key used for the message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vv":{"name":"baseKey","abstract":"<p>The base key used for the message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vv":{"name":"identityKey","abstract":"<p>The identity key of the sender</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vv":{"name":"message","abstract":"<p>The message included in the pre key message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageVACs6UInt32VSg03preD2Id_AE06signedcdH0AA06PublicD0V04baseD0AJ08identityD0AA0aE0V7messagetcfc":{"name":"init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)","abstract":"<p>Create a new pre key message.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV04baseE0AA010CipherTextE0VyKF":{"name":"baseMessage()","abstract":"<p>Get the serialized message.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV13asProtoObjectAA0a1_cdaE0VyKF":{"name":"asProtoObject()","abstract":"<p>Convert the message to a ProtoBuf object for serialization.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageVAcA0a1_cdaE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a <code>PreKeySignalMessage</code> from a ProtoBuf object.</p>","parent_name":"PreKeySignalMessage"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vv":{"name":"id","abstract":"<p>The id of the pre key</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vv":{"name":"key","abstract":"<p>The key pair of the pre key</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicVACs6UInt32V2id_AA0fE0V3keytcfc":{"name":"init(id:key:)","abstract":"<p>Create a public pre key from the components</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVv":{"name":"protoObject","abstract":"<p>Convert the public pre key to a ProtoBuf object</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicVAcA0a1_dE0V0F4PartV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a public pre key from a ProtoBuf object.</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvZ":{"name":"mediumMaxValue","abstract":"<p>The upper bound (inclusive) of the pre key id</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVv":{"name":"publicKey","abstract":"<p>The public data of the pre key (id and public key)</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vv":{"name":"privateKey","abstract":"<p>The private key of the pre key</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyVACs6UInt32V2id_AA0E4PairV03keyH0tcfc":{"name":"init(id:keyPair:)","abstract":"<p>Create a pre key from the components</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyVACs6UInt32V5index_tKcfc":{"name":"init(index:)","abstract":"<p>Create a new pre key with the index.</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vv":{"name":"keyPair","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vv":{"name":"protoObject","abstract":"<p>Convert the pre key to a ProtoBuf object</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyVAcA0a1_dE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a pre key from a ProtoBuf object.</p>","parent_name":"SessionPreKey"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV6random10Foundation4DataVSi5bytes_tKF":{"name":"random(bytes:)","abstract":"<p>Create a number of random bytes</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtF":{"name":"hmacSHA256(for:with:)","abstract":"<p>Create a HMAC authentication for a given message</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV6sha51210Foundation4DataVAG3for_tKF":{"name":"sha512(for:)","abstract":"<p>Create a SHA512 digest for a given message</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with AES</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with AES</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3cbc_AH3keyAH2ivSb7encrypttKF":{"name":"process(cbc:key:iv:encrypt:)","abstract":"<p>Process (encrypt/decrypt) a message with AES in CBC mode and pkcs7 padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF":{"name":"encrypt(ctr:key:iv:)","abstract":"<p>Encrypt a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivtKF":{"name":"decrypt(ctr:key:iv:)","abstract":"<p>Decrypt a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVAH3ctr_AH3keyAH2ivSb7encrypttKF":{"name":"process(ctr:key:iv:encrypt:)","abstract":"<p>Process (encrypt/decrypt) a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL10Foundation4DataVSv4from_Si5counttF":{"name":"toArray(from:count:)","abstract":"<p>Create an array from an unsafe pointer.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoVACycfc":{"name":"init()","abstract":"<p>Create an instance.</p>","parent_name":"SignalCommonCrypto"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVv":{"name":"signature","abstract":"<p>The consistency signature</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vv":{"name":"generation","abstract":"<p>The generation of the consistency message</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageVAcA0cD12CommitmentV0V10commitment_AA7KeyPairV011identitykeyJ0tKcfc":{"name":"init(commitment:identitykeyPair:)","abstract":"<p>Create a new consistency message.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vv":{"name":"object","abstract":"<p>The message converted to a protocol buffer object.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageVAcA0a1_cd4CodeE0V4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityL0tKcfc":{"name":"init(from:commitment:identityKey:)","abstract":"<p>Create a consistency message from a protocol buffer object.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV4data10Foundation4DataVyKF":{"name":"data()","abstract":"<p>The message serialized through a protocol buffer.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageVAC10Foundation4DataV4from_AA0cD12CommitmentV0V10commitmentAA9PublicKeyV08identityM0tKcfc":{"name":"init(from:commitment:identityKey:)","abstract":"<p>Create a consistency message from a serialized protocol buffer record.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVv":{"name":"ratchetKey","abstract":"<p>The key pair of the ratchet</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vv":{"name":"chainKey","abstract":"<p>The current chain key of the ratchet</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainVAcA7KeyPairV07ratchetE0_AA07RatchetdE0V05chainE0tcfc":{"name":"init(ratchetKey:chainKey:)","abstract":"<p>Create a sender chain from the components.</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vv":{"name":"protoObject","abstract":"<p>The sender chain converted to a protobuf object</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainVAcA0A8_SessionV0D0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender chain from a protobuf object.</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender chains for equality.</p>","parent_name":"SenderChain"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxv":{"name":"store","abstract":"<p>The store where the keys are stored</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzv":{"name":"address","abstract":"<p>The id of the remote client</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherVACyxG0C7AddressQz7address_x5storetcfc":{"name":"init(address:store:)","abstract":"<p>Create a GroupCipher.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7processyAA0D11TextMessageV7message_tKF":{"name":"process(message:)","abstract":"<p>Create a GroupCipher.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7processyAA28SenderKeyDistributionMessageV012distributionI0_tKF":{"name":"process(distributionMessage:)","abstract":"<p>Create a new group session from a distribution message.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV13createSessionAA28SenderKeyDistributionMessageVyKF":{"name":"createSession()","abstract":"<p>Create a new session and generate a distribution message.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF":{"name":"encrypt(_:)","abstract":"<p>Encrypt a message for the recipient.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7decrypt10Foundation4DataVAA16SenderKeyMessageV10ciphertext_tKF":{"name":"decrypt(ciphertext:)","abstract":"<p>Decrypt a message from the group member.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV10loadRecord33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLAA09SenderKeyF0CyKF":{"name":"loadRecord()","abstract":"<p>Load the record for the remote address.</p>","parent_name":"GroupCipher"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvZ":{"name":"codeVersion","abstract":"<p>The version of the consistency implementation</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvZ":{"name":"version","abstract":"<p>An identifier used when hashing the identity keys</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vv":{"name":"generation","abstract":"<p>The generation of the message</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVv":{"name":"serialized","abstract":"<p>The hash of the public keys</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0VACs6UInt32V10generation_SayAA9PublicKeyVG08identityJ4ListtKcfc":{"name":"init(generation:identityKeyList:)","abstract":"<p>Create a new commitment.</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCodeSSSayAA0cD9SignatureVG3for_tKF":{"name":"generateCode(for:)","abstract":"<p>Generate a String which can be used to compare the consistency across multiple devices.","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOv":{"name":"type","abstract":"<p>The type of the message</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVv":{"name":"data","abstract":"<p>The encrypted message</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageVAcA0cD4TypeO4type_10Foundation4DataV4datatcfc":{"name":"init(type:data:)","abstract":"<p>Create a message from the components.</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol0B18BufferSerializableP9protoData10Foundation0F0VyKF":{"name":"protoData()","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a <code>CipherTextMessage</code> from a serialized record.</p>","parent_name":"CipherTextMessage"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ":{"name":"messageKeySeed","abstract":"<p>The seed used as input material for the KDF to derive the message keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ":{"name":"chainKeySeed","abstract":"<p>The seed used as input material for the KDF to derive the chain keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvZ":{"name":"keyMaterialSeed","abstract":"<p>The seed used as info material for the KDF to derive the message keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivZ":{"name":"secretSize","abstract":"<p>The size of the chain key</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivZ":{"name":"hashOutputSize","abstract":"<p>The size of the HKDF expand output</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVv":{"name":"key","abstract":"<p>The current key of the ratchet chain, 32 byte</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyVAC10Foundation4DataV3key_s6UInt32V5indextcfc":{"name":"init(key:index:)","abstract":"<p>Create a ratchet chain key from the components</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVAH4seed_tKF":{"name":"getBaseMaterial(seed:)","abstract":"<p>Get the SHA256 HMAC of the seed.</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV11messageKeysAA0c7MessageG0VyKF":{"name":"messageKeys()","abstract":"<p>Get a set of message keys for the Ratchet</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV4nextACyKF":{"name":"next()","abstract":"<p>Return the next chain key</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vv":{"name":"protoObject","abstract":"<p>The chain key converted to a ProtoBuf object</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyVAcA0A8_SessionV0D0V0dE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a chain key from a ProtoBuf object.</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalMessages for equality.</p>","parent_name":"RatchetChainKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvZ":{"name":"basePoint","abstract":"<p>The base point for the Curve25519 elliptic curve</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVv":{"name":"key","abstract":"<p>The key material of length <code>KeyPair.keyLength</code></p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV5point_tKcfc":{"name":"init(point:)","abstract":"<p>Create a public key from a UInt8 array. Checks","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyVAcA07PrivateD0V07privateD0_tKcfc":{"name":"init(privateKey:)","abstract":"<p>Generate a public key from a given private key.","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV6verifySb10Foundation4DataV9signature_AG3fortF":{"name":"verify(signature:for:)","abstract":"<p>Verify that the signature corresponds to the message.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF":{"name":"verify(vrfSignature:for:)","abstract":"<p>Verify that the vrf signature corresponds to the message.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV18calculateAgreement10Foundation4DataVAA07PrivateD0V07privateD0_tKF":{"name":"calculateAgreement(privateKey:)","abstract":"<p>Calculate the shared agreement between the given private key and the public key.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV1loiSbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two public keys.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two public keys for equality. The keys are equal if all bytes match.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVv":{"name":"data","abstract":"<p>The serialized data of the public key</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a public key from a serialized record.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV9protoData10Foundation0F0VyF":{"name":"protoData()","abstract":"<p>Return a byte representation of the public key</p>","parent_name":"PublicKey"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV10identifierSSv":{"name":"identifier","abstract":"<p>The unique identifier of a user (such as a phone number)</p>","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV8deviceIds6UInt32Vv":{"name":"deviceId","abstract":"<p>The identifier for the individual device of a user</p>","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressVACSS10identifier_s6UInt32V8deviceIdtcfc":{"name":"init(identifier:deviceId:)","abstract":"<p>Create a <code>SignalAddress</code>.</p>","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalAddresses. Two <code>SignalAddress</code> objects are","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV9hashValueSiv":{"name":"hashValue","abstract":"<p>A hash value of the address, constructed by summing the","parent_name":"SignalAddress"},"Structs/SignalAddress.html#/s:14SignalProtocol0A7AddressV11descriptionSSv":{"name":"description","abstract":"<p>A description of the SignalAddress.</p>","parent_name":"SignalAddress"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvZ":{"name":"DJBType","abstract":"<p>Type declaration (only needed for compatibility)</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vv":{"name":"publicKey","abstract":"<p>The public part of the key pair</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vv":{"name":"privateKey","abstract":"<p>The private part of the key pair</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairVAcA06PublicC0V06publicC0_AA07PrivateC0V07privateC0tcfc":{"name":"init(publicKey:privateKey:)","abstract":"<p>Create a key pair from existing public and private keys</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairVACyKcfc":{"name":"init()","abstract":"<p>Create a new random key pair.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV4sign10Foundation4DataVAG7message_tKF":{"name":"sign(message:)","abstract":"<p>Calculate the signature for the given message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV7signVRF10Foundation4DataVAG7message_tKF":{"name":"signVRF(message:)","abstract":"<p>Calculates a unique Curve25519 signature for the private key</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA06PublicC0V06publicC0_tKF":{"name":"calculateAgreement(publicKey:)","abstract":"<p>Calculate the shared agreement between the private key and the given public key.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV6verifySb10Foundation4DataV9signature_AG3fortF":{"name":"verify(signature:for:)","abstract":"<p>Verify that the signature corresponds to the message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV6verify10Foundation4DataVAG12vrfSignature_AG3fortKF":{"name":"verify(vrfSignature:for:)","abstract":"<p>Verify that the vrf signature corresponds to the message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV18calculateAgreement10Foundation4DataVAA07PrivateC0V07privateC0_tKF":{"name":"calculateAgreement(privateKey:)","abstract":"<p>Calculate the shared agreement between the given private key and the public key.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairVAcA0a1_cD0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a key pair from a protobuf object.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vv":{"name":"protoObject","abstract":"<p>The key pair converted to a ProtoBuf object</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two key pairs for equality. The keys are equal if public and private keys match.</p>","parent_name":"KeyPair"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVv":{"name":"ourIdentityKey","abstract":"<p>The identity of the local party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVv":{"name":"ourBaseKey","abstract":"<p>The base key for the ratchet of the local party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVv":{"name":"ourRatchetKey","abstract":"<p>The initial key used for the ratchet</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vv":{"name":"theirBaseKey","abstract":"<p>The base key of the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vv":{"name":"theirRatchetKey","abstract":"<p>The ratchet key used by the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vv":{"name":"theirIdentityKey","abstract":"<p>The identity of the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV7isAliceSbv":{"name":"isAlice","abstract":"<p>Indicate if the session was initialized as Alice</p>","parent_name":"SymmetricParameters"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV7versions5UInt8VvZ":{"name":"version","abstract":"<p>The version of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV6lengthSivZ":{"name":"length","abstract":"<p>The length of a fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivZ":{"name":"iterations","abstract":"<p>The number of iterations for the creation of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vv":{"name":"displayable","abstract":"<p>The displayable part of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vv":{"name":"scannable","abstract":"<p>The scannable part of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV11displayTextSSv":{"name":"displayText","abstract":"<p>The string to show the user</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_10Foundation4DataV0D8IdentitySS06remoteeF0AG0jI0Si10iterationstKcfc":{"name":"init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_AA9PublicKeyV0D8IdentitySS06remoteeF0AF0jI0Si10iterationstKcfc":{"name":"init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintVACSS21localStableIdentifier_SayAA9PublicKeyVG0D12IdentityListSS06remoteeF0AG0kiJ0Si10iterationstKcfc":{"name":"init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV7matchesSb10Foundation4DataVKF":{"name":"matches(_:)","abstract":"<p>Compare the fingerprint to scanned fingerprint data.</p>","parent_name":"Fingerprint"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVv":{"name":"publicKey","abstract":"<p>The public data of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vv":{"name":"privateKey","abstract":"<p>The private key of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_s6UInt64V9timestampAA0F4PairV03keyK010Foundation4DataV9signaturetcfc":{"name":"init(id:timestamp:keyPair:signature:)","abstract":"<p>Create a signed pre key from its components.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyVACs6UInt32V2id_AA07PrivateF0V09signatureF0s6UInt64V9timestamptKcfc":{"name":"init(id:signatureKey:timestamp:)","abstract":"<p>Create a signed pre key.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vv":{"name":"keyPair","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vv":{"name":"protoObject","abstract":"<p>Convert the signed pre key to a ProtoBuf object</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyVAcA0a1_deF0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signed pre key from a ProtoBuf object.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two signed pre keys for equality.</p>","parent_name":"SessionSignedPreKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ":{"name":"messageKeySeed","abstract":"<p>The seed value for the message key when deriving the next key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvZ":{"name":"chainKeySeed","abstract":"<p>The seed value for the chain key when deriving the next key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vv":{"name":"iteration","abstract":"<p>The current iteration of the chain</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVv":{"name":"chainKey","abstract":"<p>The current chain key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyVACs6UInt32V9iteration_10Foundation4DataV05chainE0tcfc":{"name":"init(iteration:chainKey:)","abstract":"<p>Create a new chain key from the components.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV07messageE0AA0c7MessageE0VyKF":{"name":"messageKey()","abstract":"<p>Advance the chain and return the generated message key.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVv":{"name":"protoObject","abstract":"<p>Convert the sender chain key to a ProtoBuf object</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyVAcA0a1_cE5StateVABV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a chain key from a ProtoBuf object.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender chain keys for equality.</p>","parent_name":"SenderChainKey"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxv":{"name":"store","abstract":"<p>The local data store to use for state information</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzv":{"name":"remoteAddress","abstract":"<p>The address of the remote party</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherVACyxGx5store_7AddressQz06remoteF0tcfc":{"name":"init(store:remoteAddress:)","abstract":"<p>Construct a session cipher for encrypt/decrypt operations on a session.","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7encryptAA0D11TextMessageV10Foundation4DataVKF":{"name":"encrypt(_:)","abstract":"<p>Encrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0D11TextMessageVKF":{"name":"decrypt(_:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA06PreKeyA7MessageV03preiaJ0_tKF":{"name":"decrypt(preKeySignalMessage:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt10Foundation4DataVAA0A7MessageV06signalH0_tKF":{"name":"decrypt(signalMessage:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7processyAA0C12PreKeyBundleV03pregH0_tKF":{"name":"process(preKeyBundle:)","abstract":"<p>Build a new session from a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SessionPreKeyBundle.html\">SessionPreKeyBundle</a></code> retrieved from a server.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV04loadC033_A7B7CE7E72D1FD6B1E024448F80198D3LLAA0C6RecordCyKF":{"name":"loadSession()","abstract":"<p>Load the session record for the remote address</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C6RecordC4from_AA0A7MessageV3andtKF":{"name":"decrypt(from:and:)","abstract":"<p>Try to decrypt a SignalMessage with one of the stored sessions in the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SessionRecord.html\">SessionRecord</a></code>. If a session can decrypt the message it will be promoted to the active session.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA0C5StateC4from_AA0A7MessageV3andtKF":{"name":"decrypt(from:and:)","abstract":"<p>Try to decrypt a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SignalMessage.html\">SignalMessage</a></code> with a specific <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SessionState.html\">SessionState</a></code>.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA9PublicKeyV14theirEphemeralAA0t5ChainX0V05chainX0s6UInt32V7countertKF":{"name":"getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)","abstract":"<p>Retrieve previously stored message keys or create them from the chain.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LLAA07RatchethI0VAA0C5StateC5state_AA06PublicI0V14theirEphemeraltKF":{"name":"getOrCreateChainKey(state:theirEphemeral:)","abstract":"<p>Retrieve the chain key for a state and receiver chain key.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH9plaintexttKF":{"name":"getCiphertext(messageKeys:plaintext:)","abstract":"<p>Encrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL10Foundation4DataVAA18RatchetMessageKeysV07messageU0_AH10ciphertexttKF":{"name":"getPlaintext(messageKeys:ciphertext:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vv":{"name":"id","abstract":"<p>The id of the signed pre key</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vv":{"name":"key","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vv":{"name":"timestamp","abstract":"<p>The time when the key was created</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVv":{"name":"signature","abstract":"<p>The signature of the public key of the key pair</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicVACs6UInt32V2id_s6UInt64V9timestampAA0gF0V3key10Foundation4DataV9signaturetcfc":{"name":"init(id:timestamp:key:signature:)","abstract":"<p>Create a public signed pre key from its components.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVv":{"name":"protoObject","abstract":"<p>Convert the public signed pre key to a ProtoBuf object</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicVAcA0a1_deF0V0G4PartV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signed pre key from a ProtoBuf object.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two public signed pre keys for equality.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vv":{"name":"preKeyId","abstract":"<p>The id of the pre key that was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgv":{"name":"preKeyPublic","abstract":"<p>The pre key, if a pre key was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vv":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vv":{"name":"signedPreKeyPublic","abstract":"<p>The signed pre key that was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVv":{"name":"signedPreKeySignature","abstract":"<p>The signature of the signed pre key</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vv":{"name":"identityKey","abstract":"<p>The identity key of the remote party</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleVACs6UInt32V03preE2Id_AA06PublicE0VSg0heJ0AE06signeddeI0AH0kdeJ010Foundation4DataV0kdE9SignatureAH08identityE0tcfc":{"name":"init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleVAcA0cdE6PublicV03preE0_AA0c6SigneddeG0V06signeddE0AA0gE0V08identityE0tcfc":{"name":"init(preKey:signedPreKey:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleVAC10Foundation4DataV03preE0_AF06signeddE0AF08identityE0tKcfc":{"name":"init(preKey:signedPreKey:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vv":{"name":"keyId","abstract":"<p>The id of the key that was used</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vv":{"name":"iteration","abstract":"<p>The iteration of the chain key</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVv":{"name":"cipherText","abstract":"<p>The encrypted ciphertext</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVv":{"name":"signature","abstract":"<p>The signature of the message</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV04baseE0AA010CipherTextE0VyKF":{"name":"baseMessage()","abstract":"<p>Return the message serialized</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageVACs6UInt32V5keyId_AE9iteration10Foundation4DataV10cipherTextAA07PrivateD0V09signatureD0tKcfc":{"name":"init(keyId:iteration:cipherText:signatureKey:)","abstract":"<p>Create a <code>SenderKeyMessage</code> from the components.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV6verifySbAA06PublicD0V09signatureD0_tKF":{"name":"verify(signatureKey:)","abstract":"<p>Verify that the signature matches the message.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vv":{"name":"protoObject","abstract":"<p>Convert the sender key message to a ProtoBuf object</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageVAcA0a1_cdE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender key message from a ProtoBuf object.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9protoData10Foundation0G0VyKF":{"name":"protoData()","abstract":"<p>Serialize the message.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageVAC10Foundation4DataV4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender key message from serialized data.</p>","parent_name":"SenderKeyMessage"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVv":{"name":"signature","abstract":"<p>The signature data</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVv":{"name":"vrfOutput","abstract":"<p>The output of the VRF verification</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureVAC10Foundation4DataV9signature_AF9vrfOutputtcfc":{"name":"init(signature:vrfOutput:)","abstract":"<p>Create a new signature</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV1loiSbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two consistency signatures.</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two consistency signatures for equality.</p>","parent_name":"DeviceConsistencySignature"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivZ":{"name":"derivedRootSecretsSize","abstract":"<p>The total number of bytes to derive when creating a new root and chain key</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvZ":{"name":"iterationStartOffset","abstract":"<p>The offset for the expand iterations</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV13deriveSecrets10Foundation4DataVAG8material_AG4saltAG4infoSi12outputLengthtKFZ":{"name":"deriveSecrets(material:salt:info:outputLength:)","abstract":"<p>Derive new secrets from the KDF.</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL10Foundation4DataVAH3prk_AH4infoSi12outputLengthtKFZ":{"name":"expand(prk:info:outputLength:)","abstract":"<p>Expand the bytes to create enough output bytes.</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV15chainAndRootKeyAA07RatchetfG0V04rootG0_AA0h5ChainG0V0dG0t10Foundation4DataV8material_AM4saltAM4infotKFZ":{"name":"chainAndRootKey(material:salt:info:)","abstract":"<p>Create a new chain key and root key.</p>","parent_name":"HKDF"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV5localSSv":{"name":"local","abstract":"<p>Fingerprint String of the local device</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV6remoteSSv":{"name":"remote","abstract":"<p>Fingerprint String of the remote device</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSv":{"name":"displayText","abstract":"<p>Displaytext</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintVACSS5local_SS6remotetcfc":{"name":"init(local:remote:)","abstract":"<p>Create a displayable fingerprint from local and remote fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintVAC10Foundation4DataV05localD0_AF06remoteD0tKcfc":{"name":"init(localFingerprint:remoteFingerprint:)","abstract":"<p>Create a displayable fingerprint from local and remote fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELLSS10Foundation4DataV11fingerprint_tFZ":{"name":"createDisplayString(fingerprint:)","abstract":"<p>Create a display string from fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two displayable fingerprints for equality.</p>","parent_name":"DisplayableFingerprint"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvZ":{"name":"provider","abstract":"<p>This variable can be set to provide a custom crypto provider.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6random10Foundation4DataVSi5bytes_tKFZ":{"name":"random(bytes:)","abstract":"<p>Create a number of secure random bytes.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV10hmacSHA25610Foundation4DataVAG3for_AG4withtKFZ":{"name":"hmacSHA256(for:with:)","abstract":"<p>Authenticate a message with the HMAC based on SHA256.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6sha51210Foundation4DataVAG3for_tKFZ":{"name":"sha512(for:)","abstract":"<p>Return the SHA512 message digest.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with the given scheme.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKFZ":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with the given scheme.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV23generateIdentityKeyPair10Foundation4DataVyKFZ":{"name":"generateIdentityKeyPair()","abstract":"<p>Generate an identity key pair. Clients should only do this once, at install time.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV15generatePreKeysSayAA07SessionE3KeyVGs6UInt32V5start_Si5counttKFZ":{"name":"generatePreKeys(start:count:)","abstract":"<p>Generate a list of PreKeys.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV20generateSignedPreKeyAA07SessionefG0VAA07PrivateG0V08identityG0_s6UInt32V2ids6UInt64V9timestamptKFZ":{"name":"generateSignedPreKey(identityKey:id:timestamp:)","abstract":"<p>Generate a signed pre key.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV19generateSenderKeyIds6UInt32VyKFZ":{"name":"generateSenderKeyId()","abstract":"<p>Generate a sender key ID.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV17generateSenderKey10Foundation4DataVyKFZ":{"name":"generateSenderKey()","abstract":"<p>Generate a sender key.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV24generateSenderSigningKeyAA0G4PairVyKFZ":{"name":"generateSenderSigningKey()","abstract":"<p>Generate a sender signing key pair</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoVACyc33_D8858E66F8480749A0F433B505F180AFLlfc":{"name":"init()","abstract":"<p>SignalCrypto only has static functions and there is no need to create any instances</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html":{"name":"SignalCrypto","abstract":"<p>The <code>SignalCrypto</code> struct exposes all necessary cryptocraphic functions to the protocol."},"Structs/DisplayableFingerprint.html":{"name":"DisplayableFingerprint","abstract":"<p>A Fingerprint to verify the keys specifically for displaying to the user</p>"},"Structs/HKDF.html":{"name":"HKDF","abstract":"<p>The Key derivation function used for the Ratchet.</p>"},"Structs/DeviceConsistencySignature.html":{"name":"DeviceConsistencySignature","abstract":"<p>A signature used for device consistency checks</p>"},"Structs/SenderKeyMessage.html":{"name":"SenderKeyMessage","abstract":"<p>A sender key message is used to send an encrypted message in an existing group session.</p>"},"Structs/SessionPreKeyBundle.html":{"name":"SessionPreKeyBundle","abstract":"<p>Pre key bundles are used to establish new sessions.</p>"},"Structs/SessionSignedPreKeyPublic.html":{"name":"SessionSignedPreKeyPublic","abstract":"<p>A public signed pre key is used as part of a session bundle to establish a new session."},"Structs/SessionCipher.html":{"name":"SessionCipher","abstract":"<p>The main entry point for Signal Protocol encrypt/decrypt operations.</p>"},"Structs/SenderChainKey.html":{"name":"SenderChainKey","abstract":"<p>A key in the sender chain.</p>"},"Structs/SessionSignedPreKey.html":{"name":"SessionSignedPreKey","abstract":"<p>A signed pre key is used as part of a session bundle to establish a new session."},"Structs/Fingerprint.html":{"name":"Fingerprint","abstract":"<p>A fingerprint can be used to ensure that the identities of a communication channel"},"Structs/SymmetricParameters.html":{"name":"SymmetricParameters","abstract":"<p>All parameters needed to establish a session</p>"},"Structs/KeyPair.html":{"name":"KeyPair","abstract":"<p>A pair of public and private key for elliptic curve cryptopgraphy</p>"},"Structs/SignalAddress.html":{"name":"SignalAddress","abstract":"<p>A <code>SignalAddress</code> identifies a single device of a Signal user, with a user"},"Structs/PublicKey.html":{"name":"PublicKey","abstract":"<p>The public part of an elliptic curve key pair."},"Structs/RatchetChainKey.html":{"name":"RatchetChainKey","abstract":"<p>A chain key for the ratchet.</p>"},"Structs/CipherTextMessage.html":{"name":"CipherTextMessage","abstract":"<p>A <code>CipherTextMessage</code> encapsulates an encrypted message and the type-</p>"},"Structs/DeviceConsistencyCommitmentV0.html":{"name":"DeviceConsistencyCommitmentV0","abstract":"<p>Create commitments that are hashes of the identity keys of different devices."},"Structs/GroupCipher.html":{"name":"GroupCipher","abstract":"<p>Use a <code>GroupCipher</code> to encrypt and decrypt group messages for already"},"Structs/SenderChain.html":{"name":"SenderChain","abstract":"<p>The sender chain of a ratchet used to encrypt messages for sending.</p>"},"Structs/DeviceConsistencyMessage.html":{"name":"DeviceConsistencyMessage","abstract":"<p>Device consistency messages can be sent between multiple devices to verify that the"},"Structs/SignalCommonCrypto.html":{"name":"SignalCommonCrypto","abstract":"<p>Implementation of the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/SignalCryptoProvider.html\">SignalCryptoProvider</a></code> protocol using"},"Structs/SessionPreKey.html":{"name":"SessionPreKey","abstract":"<p>A pre key used to esatblish a session. A unique pre key is used for"},"Structs/SessionPreKeyPublic.html":{"name":"SessionPreKeyPublic","abstract":"<p>A pre key used to esatblish a session. A unique pre key is used for"},"Structs/PreKeySignalMessage.html":{"name":"PreKeySignalMessage","abstract":"<p>A <code>PreKeySignalMessage</code> can be used to establish a new session.</p>"},"Structs/SenderMessageKey.html":{"name":"SenderMessageKey","abstract":"<p>A message key in a chain to encrypt/decrypt messages</p>"},"Structs/SenderKeyDistributionMessage.html":{"name":"SenderKeyDistributionMessage","abstract":"<p><code>SenderKeyDistributionMessage</code>s are used to establish group sessions.</p>"},"Structs/PendingPreKey.html":{"name":"PendingPreKey","abstract":"<p>A pre key sent out as a pre key message, until a message is received from the other party</p>"},"Structs/ScannableFingerprint.html":{"name":"ScannableFingerprint","abstract":"<p>A fingerprint optimised to be scanned through e.g. a QR Code</p>"},"Structs/SignalMessage.html":{"name":"SignalMessage","abstract":"<p>A <code>SignalMessage</code> is used to send an encrypted message in an established session.</p>"},"Structs/PrivateKey.html":{"name":"PrivateKey","abstract":"<p>The private part of an elliptic curve key pair."},"Structs/RatchetMessageKeys.html":{"name":"RatchetMessageKeys","abstract":"<p>The keys needed to encrypt/decrypt a message</p>"},"Structs/SignalSenderKeyName.html":{"name":"SignalSenderKeyName","abstract":"<p>A representation of a (group + sender + device) tuple</p>"},"Structs/RatchetRootKey.html":{"name":"RatchetRootKey","abstract":"<p>A root key is within a ratchet to derive new sender and receiver chain keys.</p>"},"Structs/SessionBuilder.html":{"name":"SessionBuilder","abstract":"<p>Session builder is responsible for setting up encrypted sessions."},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP06signeddE010Foundation4DataVs6UInt32V3for_tKF":{"name":"signedPreKey(for:)","abstract":"<p>Provide a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP5storey10Foundation4DataV06signeddE0_s6UInt32V3fortKF":{"name":"store(signedPreKey:for:)","abstract":"<p>Store a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP08containscdE0Sbs6UInt32V3for_tKF":{"name":"containsSignedPreKey(for:)","abstract":"<p>Indicate if a Signed Pre Key exists for an id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP06removecdE0ys6UInt32V3for_tKF":{"name":"removeSignedPreKey(for:)","abstract":"<p>Remove a Signed Pre Key.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP6allIdsSays6UInt32VGyKF":{"name":"allIds()","abstract":"<p>Get all Ids for the SignedPreKeys in the store.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vv":{"name":"lastId","abstract":"<p>The id of the last SignedPreKey that was stored.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStorePAAE5storeyAA07SessioncdE0V06signeddE0_tKF":{"name":"store(signedPreKey:)","abstract":"<p>Store a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP6random10Foundation4DataVSi5bytes_tKF":{"name":"random(bytes:)","abstract":"<p>Create a number of secure random bytes.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP10hmacSHA25610Foundation4DataVAG3for_AG4withtKF":{"name":"hmacSHA256(for:with:)","abstract":"<p>Authenticate a message with the HMAC based on SHA256.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP6sha51210Foundation4DataVAG3for_tKF":{"name":"sha512(for:)","abstract":"<p>Return the SHA512 message digest.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP7encrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with the given scheme.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP7decrypt10Foundation4DataVAG7message_AA0A16EncryptionSchemeO4withAG3keyAG2ivtKF":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with the given scheme.</p>","parent_name":"SignalCryptoProvider"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7Address":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP03getcD4Data10Foundation0G0VyKF":{"name":"getIdentityKeyData()","abstract":"<p>Return the identity key pair. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataV08identitydH0_tKF":{"name":"store(identityKeyData:)","abstract":"<p>Save the identity key pair.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP8identity10Foundation4DataVSg7AddressQz3for_tKF":{"name":"identity(for:)","abstract":"<p>Return the identity for the given address, if there is any.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP5storey10Foundation4DataVSg8identity_7AddressQz3fortKF":{"name":"store(identity:for:)","abstract":"<p>Store a remote client’s identity key as trusted.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE03getcD0AA0D4PairVyKF":{"name":"getIdentityKey()","abstract":"<p>Return the identity key pair. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE5storeyAA0D4PairV08identityD0_tKF":{"name":"store(identityKey:)","abstract":"<p>Save the identity key pair.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE03getcD10PublicData10Foundation0H0VyKF":{"name":"getIdentityKeyPublicData()","abstract":"<p>Return the public identity key data.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSb10Foundation4DataV8identity_7AddressQz3fortKF":{"name":"isTrusted(identity:for:)","abstract":"<p>Determine whether a remote client’s identity is trusted. The convention is","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrustedSbAA06PublicD0V8identity_7AddressQz3fortKF":{"name":"isTrusted(identity:for:)","abstract":"<p>Determine whether a remote client’s identity is trusted. The convention is","parent_name":"IdentityKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP03preD010Foundation4DataVs6UInt32V3for_tKF":{"name":"preKey(for:)","abstract":"<p>Provide a Pre Key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP5storey10Foundation4DataV03preD0_s6UInt32V3fortKF":{"name":"store(preKey:for:)","abstract":"<p>Store a pre key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP08containscD0Sbs6UInt32V3for_tF":{"name":"containsPreKey(for:)","abstract":"<p>Indicate if a pre key exists for an id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP06removecD0ys6UInt32V3for_tKF":{"name":"removePreKey(for:)","abstract":"<p>Remove a pre key.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vv":{"name":"lastId","abstract":"<p>Return the id of the last stored pre key.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStorePAAE5storeyAA07SessioncD0V03preD0_tKF":{"name":"store(preKey:)","abstract":"<p>Store a pre key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7Address":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"SenderKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP06senderD010Foundation4DataVSg7AddressQz3for_tF":{"name":"senderKey(for:)","abstract":"<p>Returns a copy of the sender key record corresponding to the address tuple.</p>","parent_name":"SenderKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP5storey10Foundation4DataV06senderD0_7AddressQz3fortKF":{"name":"store(senderKey:for:)","abstract":"<p>Stores the sender key record.</p>","parent_name":"SenderKeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7Address":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP12GroupAddress":{"name":"GroupAddress","abstract":"<p>The type that distinguishes different groups and devices/users</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4Type":{"name":"IdentityKeyStoreType","abstract":"<p>The type of the identity key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP06SendercD4Type":{"name":"SenderKeyStoreType","abstract":"<p>The type of the sender key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4Type":{"name":"SessionStoreType","abstract":"<p>The type of the session key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzv":{"name":"identityKeyStore","abstract":"<p>The Identity Key store that stores the records for the identity key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pv":{"name":"preKeyStore","abstract":"<p>The Pre Key store that stores the records for the pre key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP06sendercD006SendercD4TypeQzv":{"name":"senderKeyStore","abstract":"<p>The Sender Key store that stores the records for the sender key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzv":{"name":"sessionStore","abstract":"<p>The Session store that stores the records for the session module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pv":{"name":"signedPreKeyStore","abstract":"<p>The Signed Pre Key store that stores the records for the signed pre key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE014createIdentityC010Foundation4DataVyKF":{"name":"createIdentityKey()","abstract":"<p>Create a new identity key pair and store it.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE18createSignedPrekey10Foundation4DataVs6UInt32V2id_s6UInt64V9timestamptKF":{"name":"createSignedPrekey(id:timestamp:)","abstract":"<p>Create a signed pre key with the given id and store it.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE13createPreKeysSay10Foundation4DataVGs6UInt32V5start_Si5counttKF":{"name":"createPreKeys(start:count:)","abstract":"<p>Create a number of pre keys and store them.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE11fingerprintAA11FingerprintV7AddressQz3for_AH05localG0tKF":{"name":"fingerprint(for:localAddress:)","abstract":"<p>Create a fingerprint to compare keys with someone.</p>","parent_name":"KeyStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7Address":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP04loadC010Foundation4DataVSg7AddressQz3for_tKF":{"name":"loadSession(for:)","abstract":"<p>Load a session for a given address.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP5storey10Foundation4DataV7session_7AddressQz3fortKF":{"name":"store(session:for:)","abstract":"<p>Store a session record for a remote client.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP08containsC0Sb7AddressQz3for_tF":{"name":"containsSession(for:)","abstract":"<p>Indicate if a record exists for the client address</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP06deleteC0y7AddressQz3for_tKF":{"name":"deleteSession(for:)","abstract":"<p>Delete a session for a remote client.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html":{"name":"SessionStore","abstract":"<p>Implement the <code>SessionStore</code> protocol to handle the session records of the"},"Protocols/KeyStore.html":{"name":"KeyStore","abstract":"<p>Provide all local storage delegates.</p>"},"Protocols/SenderKeyStore.html":{"name":"SenderKeyStore","abstract":"<p>Implement the <code>SenderKeyStore</code> protocol to handle the sender key storage of the"},"Protocols/PreKeyStore.html":{"name":"PreKeyStore","abstract":"<p>Implement the <code>PreKeyStore</code> protocol to handle the pre key storage of the"},"Protocols/IdentityKeyStore.html":{"name":"IdentityKeyStore","abstract":"<p>Implement the <code>IdentityKeyStore</code> protocol to handle the identity keys of the"},"Protocols/SignalCryptoProvider.html":{"name":"SignalCryptoProvider","abstract":"<p>The <code>SignalCryptoProvider</code> protocol can be implemented to provide a custom"},"Protocols/SignedPreKeyStore.html":{"name":"SignedPreKeyStore","abstract":"<p>Implement the <code>SignedPreKeyStore</code> protocol to handle the signed pre key storage of the"},"Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVSayAA06PublicE0VG3for_tF":{"name":"getLogicalKey(for:)","abstract":"<p>Serialize the list of public keys by first sorting the keys and then"},"Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL10Foundation4DataVAF8identity_SS16stableIdentifierSi10iterationstKF":{"name":"getFingerprint(identity:stableIdentifier:iterations:)","abstract":"<p>Calculate the fingerprint for identity data and identifier.</p>"},"Enums/SignalEncryptionScheme.html#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5A2CmF":{"name":"AES_CBCwithPKCS5","abstract":"<p>Encrypt/decrypt with AES in CBC mode with PKCS5 padding</p>","parent_name":"SignalEncryptionScheme"},"Enums/SignalEncryptionScheme.html#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingA2CmF":{"name":"AES_CTRnoPadding","abstract":"<p>Encrypt/decrypt with AES in CTR mode with no padding</p>","parent_name":"SignalEncryptionScheme"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO6signalA2CmF":{"name":"signal","abstract":"<p>A ‘normal’ message in an established session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO6preKeyA2CmF":{"name":"preKey","abstract":"<p>A pre key message to establish a new session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO9senderKeyA2CmF":{"name":"senderKey","abstract":"<p>A normal message in an established group session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionA2CmF":{"name":"senderKeyDistribution","abstract":"<p>A distribution message to establish a new group session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO11descriptionSSv":{"name":"description","abstract":"<p>A String representation of the type</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVv":{"name":"data","abstract":"<p>Encode the type into a string</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeOACSg10Foundation4DataV4from_tcfc":{"name":"init(from:)","abstract":"<p>Extract the <code>CipherTextType</code> from data.</p>","parent_name":"CipherTextType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO7unknownA2CmF":{"name":"unknown","abstract":"<p>Unknown errors should only be thrown of no other, more descriptive error type exists</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO05curveC0A2CmF":{"name":"curveError","abstract":"<p>Curve25519 functions returned an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO07storageC0A2CmF":{"name":"storageError","abstract":"<p>The local storage implementation produced an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageA2CmF":{"name":"duplicateMessage","abstract":"<p>A message was received that was previously decrypted, or is too old</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO07invalidD0A2CmF":{"name":"invalidType","abstract":"<p>The message type does not match</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO10invalidKeyA2CmF":{"name":"invalidKey","abstract":"<p>An invalid key produced an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9invalidIdA2CmF":{"name":"invalidId","abstract":"<p>The (key) id is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO10invalidMacA2CmF":{"name":"invalidMac","abstract":"<p>The authentication failed</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO14invalidMessageA2CmF":{"name":"invalidMessage","abstract":"<p>The message structure is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13invalidLengthA2CmF":{"name":"invalidLength","abstract":"<p>The length of a message or stored object is incorrect</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13legacyMessageA2CmF":{"name":"legacyMessage","abstract":"<p>A message from an older implementation of the protocol is received</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9noSessionA2CmF":{"name":"noSession","abstract":"<p>No valid session exists for the address</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityA2CmF":{"name":"untrustedIdentity","abstract":"<p>The identity of the recipient is untrusted</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureA2CmF":{"name":"invalidSignature","abstract":"<p>The signature of the message is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufA2CmF":{"name":"invalidProtoBuf","abstract":"<p>A serialized record or message is not in valid protocol buffer format</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchA2CmF":{"name":"fPIdentityMismatch","abstract":"<p>The identity of two fingerprints is not equal</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16noCryptoProviderA2CmF":{"name":"noCryptoProvider","abstract":"<p>There is no crypto provider set</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesA2CmF":{"name":"noRandomBytes","abstract":"<p>Random bytes could not be created</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO04hmacC0A2CmF":{"name":"hmacError","abstract":"<p>There was an error calculating the HMAC of a message</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO06digestC0A2CmF":{"name":"digestError","abstract":"<p>There was an error calculating a digest</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO010encryptionC0A2CmF":{"name":"encryptionError","abstract":"<p>An error occured during encryption</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO010decryptionC0A2CmF":{"name":"decryptionError","abstract":"<p>An error occured during decryption</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html":{"name":"SignalErrorType","abstract":"<p>The different types of errors that can occur using the SignalProtocolSwift library.</p>"},"Enums/CipherTextType.html":{"name":"CipherTextType","abstract":"<p>The <code>CipherTextType</code> enum describes the different types of messages.</p>"},"Enums/SignalEncryptionScheme.html":{"name":"SignalEncryptionScheme","abstract":"<p>Specifies the type of algorithm to use for encryption and decryption.</p>"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivZ":{"name":"maxStates","abstract":"<p>The maximum number of different states that are saved</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGv":{"name":"states","abstract":"<p>The states that are saved by the record, sorted by most recent</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgv":{"name":"state","abstract":"<p>The active state is the most recent, if any states exist</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC7isEmptySbv":{"name":"isEmpty","abstract":"<p>Indicate if there are any states in this record</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordCACycfc":{"name":"init()","abstract":"<p>Create a fresh session record without any states.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgs6UInt32V3for_tF":{"name":"state(for:)","abstract":"<p>Get the state for an id.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC03setcD0ys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedM0tF":{"name":"setSenderKey(id:iteration:chainKey:signatureKeyPair:)","abstract":"<p>Set a new sender key state and delete all previous states.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA06PublicD0V09signaturenD0AA07PrivateD0VSg0opD0tF":{"name":"addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)","abstract":"<p>Add a new sender key state.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC8addStateys6UInt32V2id_AF9iteration10Foundation4DataV05chainD0AA0D4PairV09signaturedN0tF":{"name":"addState(id:iteration:chainKey:signatureKeyPair:)","abstract":"<p>Add a new sender key state.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vv":{"name":"protoObject","abstract":"<p>The record converted to a ProtoBuf object for storage</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordCAcA0a1_cdE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a record from a ProtoBuf object.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two records.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivZ":{"name":"messageKeyMaximum","abstract":"<p>The maximum number of message keys stored</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vv":{"name":"keyId","abstract":"<p>The current key id</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vv":{"name":"chainKey","abstract":"<p>The chain key of the state used for key generation</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vv":{"name":"signaturePublicKey","abstract":"<p>The signature key</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgv":{"name":"signaturePrivateKey","abstract":"<p>The private part of the signature key, optional</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGv":{"name":"messageKeys","abstract":"<p>Dictionary of message keys indexed by iteration</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateCACs6UInt32V5keyId_AA0c5ChainD0V05chainD0AA06PublicD0V09signaturekD0AA07PrivateD0VSg0lmD0tcfc":{"name":"init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)","abstract":"<p>Create a new session state.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC3addyAA0c7MessageD0V07messageD0_Sb15removingOldKeystF":{"name":"add(messageKey:removingOldKeys:)","abstract":"<p>Add a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SenderMessageKey.html\">SenderMessageKey</a></code> to the keys which are stored to decrypt old (out of order) messages.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC07messageD0AA0c7MessageD0VSgs6UInt32V3for_tF":{"name":"messageKey(for:)","abstract":"<p>Get the message key for the iteration, if it exists.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC20removeOldMessageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLyyF":{"name":"removeOldMessageKeys()","abstract":"<p>Remove old message keys if the number is higher then the maximum.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC06senderD0AA0c7MessageD0Vs6UInt32V3for_tKF":{"name":"senderKey(for:)","abstract":"<p>Get the sender key for the iteration of the chain.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateCAcA0a1_cdE0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a SenderKeyState from a ProtoBuf object.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vv":{"name":"protoObject","abstract":"<p>The state converted to a ProtoBuf object</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare tow states for equality</p>","parent_name":"SenderKeyState"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vv":{"name":"ratchetKey","abstract":"<p>The current ratchet key</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vv":{"name":"chainKey","abstract":"<p>The current chain key</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGv":{"name":"messageKeys","abstract":"<p>The stored message keys for out-of-order messages</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainCAcA9PublicKeyV07ratchetF0_AA07RatchetdF0V05chainF0tcfc":{"name":"init(ratchetKey:chainKey:)","abstract":"<p>Create a receiver chain from the components.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC3addyAA18RatchetMessageKeysV10messageKey_tF":{"name":"add(messageKey:)","abstract":"<p>Add a message key to the stored message keys.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC3hasSbAA18RatchetMessageKeysV10messageKey_tF":{"name":"has(messageKey:)","abstract":"<p>Check if a message key already exists.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10messageKeyAA18RatchetMessageKeysVSgs6UInt32V3for_tF":{"name":"messageKey(for:)","abstract":"<p>Get a message key if it exists.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC16removeMessageKeyAA07RatchetF4KeysVSgs6UInt32V3for_tF":{"name":"removeMessageKey(for:)","abstract":"<p>Remove a message key and return it.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vv":{"name":"protoObject","abstract":"<p>The receiver chain converted to a protobuf object</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainCAcA0A8_SessionV0D0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a receiver chain from a protobuf object.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two receiver chains for equality.</p>","parent_name":"ReceiverChain"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivZ":{"name":"maxReceiverChains","abstract":"<p>The maximum number of receiver chains for the remote party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvZ":{"name":"keyInfo","abstract":"<p>The info material used for the derivation of chain and root keys</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vv":{"name":"previousCounter","abstract":"<p>The last counter in the previous sender chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgv":{"name":"localIdentity","abstract":"<p>The identity key of the local party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgv":{"name":"remoteIdentity","abstract":"<p>The identity key of the remote party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgv":{"name":"rootKey","abstract":"<p>The root key of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgv":{"name":"senderChain","abstract":"<p>The sender chain of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGv":{"name":"receiverChains","abstract":"<p>The receiver chains of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgv":{"name":"pendingPreKey","abstract":"<p>An optional pending pre key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgv":{"name":"aliceBaseKey","abstract":"<p>The base key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateCACycfc":{"name":"init()","abstract":"<p>Create a new sender state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13receiverChainAA08ReceiverF0CSgAA9PublicKeyV3for_tF":{"name":"receiverChain(for:)","abstract":"<p>Find a receiver chain for a sender key.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3addyAA13ReceiverChainC08receiverG0_tF":{"name":"add(receiverChain:)","abstract":"<p>Add a receiver chain to the state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV05chainH0_AA06PublicH0V3fortKF":{"name":"set(chainKey:for:)","abstract":"<p>Set the chain key for a given sender key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3setyAA18RatchetMessageKeysV07messageH0_AA9PublicKeyV3fortF":{"name":"set(messageKeys:for:)","abstract":"<p>Set the message keys for a given sender key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC17removeMessageKeysAA07RatchetfG0VSgAA9PublicKeyV3for_s6UInt32V3andtF":{"name":"removeMessageKeys(for:and:)","abstract":"<p>Remove message keys</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC16receiverChainKeyAA07RatchetfG0VSgAA06PublicG0V3for_tF":{"name":"receiverChainKey(for:)","abstract":"<p>Find the chain key of a receiver chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3setyAA15RatchetChainKeyV08receivergH0_AA06PublicH0V3fortKF":{"name":"set(receiverChainKey:for:)","abstract":"<p>Set the chain key of a receiver chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC15aliceInitializeyAA7KeyPairV011ourIdentityG0_AF0i4BaseG0AA06PublicG0V05theirjG0AJ0m9SignedPreG0AJSg0m7OneTimeoG0AJ0m7RatchetG0tKF":{"name":"aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13bobInitializeyAA7KeyPairV011ourIdentityG0_AF0i9SignedPreG0AFSg0i7OneTimelG0AF0i7RatchetG0AA06PublicG0V05theirjG0AM0q4BaseG0tKF":{"name":"bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC19symmetricInitializeyAA19SymmetricParametersV10parameters_tKF":{"name":"symmetricInitialize(parameters:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LLAA14RatchetRootKeyV04rootS0_AA0q5ChainS0V05chainS0t10Foundation4DataV6secret_tKF":{"name":"calculateDerivedKeys(secret:)","abstract":"<p>Create the root and chain key from the secret.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vv":{"name":"protoObject","abstract":"<p>The state converted to a protobuf object</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateCAcA0a1_C0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a state from a protobuf object.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare tow session states.</p>","parent_name":"SessionState"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOv":{"name":"type","abstract":"<p>The error type</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC7messageSSSgv":{"name":"message","abstract":"<p>A decribing message accompaning the error</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC5causeACSgv":{"name":"cause","abstract":"<p>If the error occured in a subfunction, then this variable can be used to construct an error trace.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSv":{"name":"function","abstract":"<p>The function were the error occured</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSv":{"name":"file","abstract":"<p>The file that the error occured in</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorCAcA0aC4TypeO_SSSgACSg5causeSS4fileSS8functiontcfc":{"name":"init(_:_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code>.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorCACSS_AC5causeSS4fileSS8functiontcfc":{"name":"init(_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code> using an already exisiting <code>SignalError</code> from a subroutine.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorCACSS_s0C0_p5causeSS4fileSS8functiontcfc":{"name":"init(_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code> using an already exisiting <code>Error</code> from a subroutine.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC11descriptionSSv":{"name":"description","abstract":"<p>A decription of the error, including all contained errors, without function and file names</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC16shortDescriptionSSv":{"name":"shortDescription","abstract":"<p>A short decription of the error without the contained errors</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSv":{"name":"longDescription","abstract":"<p>A decription of the error, including all contained errors, as well as function and file names</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSv":{"name":"trace","abstract":"<p>The trace of the error which is used to build the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSv\">longDescription</a></code></p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSv":{"name":"localizedDescription","abstract":"<p>The description of the error</p>","parent_name":"SignalError"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivZ":{"name":"archivedStatesMax","abstract":"<p>The maximum number of archived states</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCv":{"name":"state","abstract":"<p>The current session</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGv":{"name":"previousStates","abstract":"<p>A list of previous sessions, sorted by most recent</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC7isFreshSbv":{"name":"isFresh","abstract":"<p>Indicates if the session was just created</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordCAcA0C5StateCSg5state_tcfc":{"name":"init(state:)","abstract":"<p>Create a new session record for a session.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC03hasC5StateSbAA9PublicKeyV04baseH0_tF":{"name":"hasSessionState(baseKey:)","abstract":"<p>Check if the session record contains a specific state.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC19archiveCurrentStateyyF":{"name":"archiveCurrentState()","abstract":"<p>Create a new state and archive the old one.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC12promoteStateyAA0cF0C5state_tF":{"name":"promoteState(state:)","abstract":"<p>Make a state the currently active state.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LLyAA9PublicKeyV3for_tF":{"name":"removeState(for:)","abstract":"<p>Remove a state from the previous states.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vv":{"name":"protoObject","abstract":"<p>Convert the record to a ProtoBuf object for storage</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordCAcA0a1_D0V4from_tKcfc":{"name":"init(from:)","abstract":"<p>Create a session record from a ProtoBuf object.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC2eeoiSbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two session records for equality.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html":{"name":"SessionRecord","abstract":"<p>The record of a session (and previous sessions) with another party.</p>"},"Classes/SignalError.html":{"name":"SignalError","abstract":"<p>All errors thrown by <code>SignalProtocolSwift</code> are <code>SignalError</code> objects.</p>"},"Classes/SessionState.html":{"name":"SessionState","abstract":"<p>A session state contains all data needed for communicating with a remote party.</p>"},"Classes/ReceiverChain.html":{"name":"ReceiverChain","abstract":"<p>A receiver chain is the part of the ratchet that creates the message keys for the received messages.</p>"},"Classes/SenderKeyState.html":{"name":"SenderKeyState","abstract":"<p>A state of a group message session with a recipient,"},"Classes/SenderKeyRecord.html":{"name":"SenderKeyRecord","abstract":"<p>Stores the states for a session.</p>"},"Classes.html":{"name":"Classes","abstract":"<p>The following classes are available globally.</p>"},"Enums.html":{"name":"Enums","abstract":"<p>The following enums are available globally.</p>"},"Functions.html":{"name":"Functions","abstract":"<p>The following functions are available globally.</p>"},"Protocols.html":{"name":"Protocols","abstract":"<p>The following protocols are available globally.</p>"},"Structs.html":{"name":"Structs","abstract":"<p>The following structs are available globally.</p>"},"Typealiases.html":{"name":"Typealiases","abstract":"<p>The following typealiases are available globally.</p>"}} \ No newline at end of file +{"Typealiases.html#/s:14SignalProtocol22RatchetIdentityKeyPaira":{"name":"RatchetIdentityKeyPair","abstract":"<p>An elliptic key pair specifically used for identification in a ratchet</p>"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV14ourIdentityKeyAA0G4PairVvp":{"name":"ourIdentityKey","abstract":"<p>The identity of the local party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV10ourBaseKeyAA0G4PairVvp":{"name":"ourBaseKey","abstract":"<p>The base key for the ratchet of the local party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV13ourRatchetKeyAA0G4PairVvp":{"name":"ourRatchetKey","abstract":"<p>The initial key used for the ratchet</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV12theirBaseKeyAA06PublicG0Vvp":{"name":"theirBaseKey","abstract":"<p>The base key of the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV15theirRatchetKeyAA06PublicG0Vvp":{"name":"theirRatchetKey","abstract":"<p>The ratchet key used by the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV16theirIdentityKeyAA06PublicG0Vvp":{"name":"theirIdentityKey","abstract":"<p>The identity of the remote party</p>","parent_name":"SymmetricParameters"},"Structs/SymmetricParameters.html#/s:14SignalProtocol19SymmetricParametersV7isAliceSbvp":{"name":"isAlice","abstract":"<p>Indicate if the session was initialized as Alice</p>","parent_name":"SymmetricParameters"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2ids6UInt32Vvp":{"name":"id","abstract":"<p>The id of the signed pre key</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV3keyAA0gF0Vvp":{"name":"key","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV9timestamps6UInt64Vvp":{"name":"timestamp","abstract":"<p>The time when the key was created</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV9signature10Foundation4DataVvp":{"name":"signature","abstract":"<p>The signature of the public key of the key pair</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2id9timestamp3key9signatureACs6UInt32V_s6UInt64VAA0gF0V10Foundation4DataVtcfc":{"name":"init(id:timestamp:key:signature:)","abstract":"<p>Create a public signed pre key from its components.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV6verify4withSbAA0gF0V_tF":{"name":"verify(with:)","abstract":"<p>Verify that the signed key is valid.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV11protoObjectAA0a1_deF0V0G4PartVvp":{"name":"protoObject","abstract":"<p>Convert the public signed pre key to a ProtoBuf object</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV4fromAcA0a1_deF0V0G4PartV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signed pre key from a ProtoBuf object.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKeyPublic.html#/s:14SignalProtocol25SessionSignedPreKeyPublicV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two public signed pre keys for equality.</p>","parent_name":"SessionSignedPreKeyPublic"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV06publicF0AA0cdeF6PublicVvp":{"name":"publicKey","abstract":"<p>The public data of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV07privateF0AA07PrivateF0Vvp":{"name":"privateKey","abstract":"<p>The private key of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV2id9timestamp7keyPair9signatureACs6UInt32V_s6UInt64VAA0fJ0V10Foundation4DataVtcfc":{"name":"init(id:timestamp:keyPair:signature:)","abstract":"<p>Create a signed pre key from its components.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV2id09signatureF09timestampACs6UInt32V_AA07PrivateF0Vs6UInt64VtKcfc":{"name":"init(id:signatureKey:timestamp:)","abstract":"<p>Create a signed pre key.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV7keyPairAA0fH0Vvp":{"name":"keyPair","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV11protoObjectAA0a1_deF0Vvp":{"name":"protoObject","abstract":"<p>Convert the signed pre key to a ProtoBuf object</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV4fromAcA0a1_deF0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signed pre key from a ProtoBuf object.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionSignedPreKey.html#/s:14SignalProtocol19SessionSignedPreKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two signed pre keys for equality.</p>","parent_name":"SessionSignedPreKey"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV2ids6UInt32Vvp":{"name":"id","abstract":"<p>The id of the pre key</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV3keyAA0fE0Vvp":{"name":"key","abstract":"<p>The key pair of the pre key</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV2id3keyACs6UInt32V_AA0fE0Vtcfc":{"name":"init(id:key:)","abstract":"<p>Create a public pre key from the components</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV11protoObjectAA0a1_dE0V0F4PartVvp":{"name":"protoObject","abstract":"<p>Convert the public pre key to a ProtoBuf object</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyPublic.html#/s:14SignalProtocol19SessionPreKeyPublicV4fromAcA0a1_dE0V0F4PartV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a public pre key from a ProtoBuf object.</p>","parent_name":"SessionPreKeyPublic"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Ids6UInt32Vvp":{"name":"preKeyId","abstract":"<p>The id of the pre key that was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE6PublicAA0hE0VSgvp":{"name":"preKeyPublic","abstract":"<p>The pre key, if a pre key was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE2Ids6UInt32Vvp":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE6PublicAA0hE0Vvp":{"name":"signedPreKeyPublic","abstract":"<p>The signed pre key that was used</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV06signeddE9Signature10Foundation4DataVvp":{"name":"signedPreKeySignature","abstract":"<p>The signature of the signed pre key</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV08identityE0AA06PublicE0Vvp":{"name":"identityKey","abstract":"<p>The identity key of the remote party</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE2Id0gE6Public06signeddeH00jdeI00jdE9Signature08identityE0ACs6UInt32V_AA0iE0VSgAkM10Foundation4DataVAMtcfc":{"name":"init(preKeyId:preKeyPublic:signedPreKeyId:signedPreKeyPublic:signedPreKeySignature:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AcA0cdE6PublicV_AA0c6SigneddeJ0VAA0jE0Vtcfc":{"name":"init(preKey:signedPreKey:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKeyBundle.html#/s:14SignalProtocol19SessionPreKeyBundleV03preE006signeddE008identityE0AC10Foundation4DataV_A2ItKcfc":{"name":"init(preKey:signedPreKey:identityKey:)","abstract":"<p>Create a pre key bundle from its components.</p>","parent_name":"SessionPreKeyBundle"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV14mediumMaxValues6UInt32VvpZ":{"name":"mediumMaxValue","abstract":"<p>The upper bound (inclusive) of the pre key id</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV06publicE0AA0cdE6PublicVvp":{"name":"publicKey","abstract":"<p>The public data of the pre key (id and public key)</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV07privateE0AA07PrivateE0Vvp":{"name":"privateKey","abstract":"<p>The private key of the pre key</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV2id7keyPairACs6UInt32V_AA0eH0Vtcfc":{"name":"init(id:keyPair:)","abstract":"<p>Create a pre key from the components</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV5indexACs6UInt32V_tKcfc":{"name":"init(index:)","abstract":"<p>Create a new pre key with the index.</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV7keyPairAA0eG0Vvp":{"name":"keyPair","abstract":"<p>The key pair of the signed pre key</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV11protoObjectAA0a1_dE0Vvp":{"name":"protoObject","abstract":"<p>Convert the pre key to a ProtoBuf object</p>","parent_name":"SessionPreKey"},"Structs/SessionPreKey.html#/s:14SignalProtocol13SessionPreKeyV4fromAcA0a1_dE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a pre key from a ProtoBuf object.</p>","parent_name":"SessionPreKey"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV5storexvp":{"name":"store","abstract":"<p>The store to save and retrieve keys from</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV13remoteAddress0F0Qzvp":{"name":"remoteAddress","abstract":"<p>The address of the other party</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV13remoteAddress5storeACyxG0F0Qz_xtcfc":{"name":"init(remoteAddress:store:)","abstract":"<p>Constructs a session builder.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7process06preKeyA7Message13sessionRecords6UInt32VSgAA03PregaH0V_AA0cJ0CtKF":{"name":"process(preKeySignalMessage:sessionRecord:)","abstract":"<p>Build a new session from a received PreKeySignalMessage.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7process33_F6D411A86E796CC268F629D07027DC59LL06preKeyA9MessageV36records6UInt32VSgAA03PreoaP0V_AA0C6RecordCtKF":{"name":"process(preKeySignalMessageV3:record:)","abstract":"<p>Build a new session from a received PreKeySignalMessage.</p>","parent_name":"SessionBuilder"},"Structs/SessionBuilder.html#/s:14SignalProtocol14SessionBuilderV7process12preKeyBundleyAA0c3PregH0V_tKF":{"name":"process(preKeyBundle:)","abstract":"<p>Build a new session from a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SessionPreKeyBundle.html\">SessionPreKeyBundle</a></code> retrieved from a server.</p>","parent_name":"SessionBuilder"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV03preE2Ids6UInt32VSgvp":{"name":"preKeyId","abstract":"<p>The id of the pre key, if one was used</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV06signeddE2Ids6UInt32Vvp":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV04baseE0AA06PublicE0Vvp":{"name":"baseKey","abstract":"<p>The base key used for the outgoing pre key message</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV11protoObjectAA0A8_SessionVABVvp":{"name":"protoObject","abstract":"<p>Create a ProtoBuf object for serialization.</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV4fromAcA0A8_SessionVABV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a pending pre key from a ProtoBuf object.</p>","parent_name":"PendingPreKey"},"Structs/PendingPreKey.html#/s:14SignalProtocol13PendingPreKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two pending pre keys for equality.</p>","parent_name":"PendingPreKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV12infoMaterial33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvpZ":{"name":"infoMaterial","abstract":"<p>The info used when creating the keys from the seed</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV8ivLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ":{"name":"ivLength","abstract":"<p>The length of the initialization vector</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE6Length33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ":{"name":"cipherKeyLength","abstract":"<p>The length of the key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV12secretLength33_C2D7C30424D899CE3A7DA1F602A47A16LLSivpZ":{"name":"secretLength","abstract":"<p>The combined length of iv and key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV9iterations6UInt32Vvp":{"name":"iteration","abstract":"<p>The iteration of the message key in the chain</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV2iv10Foundation4DataVvp":{"name":"iv","abstract":"<p>The initialization vector</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV06cipherE010Foundation4DataVvp":{"name":"cipherKey","abstract":"<p>The encryption/decryption key</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV4seed33_C2D7C30424D899CE3A7DA1F602A47A16LL10Foundation4DataVvp":{"name":"seed","abstract":"<p>The seed used to derive the key and iv</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV9iteration4seedACs6UInt32V_10Foundation4DataVtKcfc":{"name":"init(iteration:seed:)","abstract":"<p>Create a message key from the components.</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV11protoObjectAA0a1_cE5StateVABVvp":{"name":"protoObject","abstract":"<p>Convert the sender chain key to a ProtoBuf object</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV4fromAcA0a1_cE5StateVABV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a message key from a ProtoBuf object.</p>","parent_name":"SenderMessageKey"},"Structs/SenderMessageKey.html#/s:14SignalProtocol16SenderMessageKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender message keys for equality.</p>","parent_name":"SenderMessageKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV07messageE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ":{"name":"messageKeySeed","abstract":"<p>The seed value for the message key when deriving the next key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV05chainE4Seed33_AFBC729FBC2F089067D4A10FB87CC508LL10Foundation4DataVvpZ":{"name":"chainKeySeed","abstract":"<p>The seed value for the chain key when deriving the next key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV9iterations6UInt32Vvp":{"name":"iteration","abstract":"<p>The current iteration of the chain</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV05chainE010Foundation4DataVvp":{"name":"chainKey","abstract":"<p>The current chain key</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV9iteration05chainE0ACs6UInt32V_10Foundation4DataVtcfc":{"name":"init(iteration:chainKey:)","abstract":"<p>Create a new chain key from the components.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV07messageE0AA0c7MessageE0VyKF":{"name":"messageKey()","abstract":"<p>Advance the chain and return the generated message key.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV11protoObjectAA0a1_cE5StateVABVvp":{"name":"protoObject","abstract":"<p>Convert the sender chain key to a ProtoBuf object</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV4fromAcA0a1_cE5StateVABV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a chain key from a ProtoBuf object.</p>","parent_name":"SenderChainKey"},"Structs/SenderChainKey.html#/s:14SignalProtocol14SenderChainKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender chain keys for equality.</p>","parent_name":"SenderChainKey"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV10ratchetKeyAA0F4PairVvp":{"name":"ratchetKey","abstract":"<p>The key pair of the ratchet</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV8chainKeyAA07RatchetdF0Vvp":{"name":"chainKey","abstract":"<p>The current chain key of the ratchet</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV10ratchetKey05chainF0AcA0F4PairV_AA07RatchetdF0Vtcfc":{"name":"init(ratchetKey:chainKey:)","abstract":"<p>Create a sender chain from the components.</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV11protoObjectAA0A8_SessionV0D0Vvp":{"name":"protoObject","abstract":"<p>The sender chain converted to a protobuf object</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV4fromAcA0A8_SessionV0D0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender chain from a protobuf object.</p>","parent_name":"SenderChain"},"Structs/SenderChain.html#/s:14SignalProtocol11SenderChainV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two sender chains for equality.</p>","parent_name":"SenderChain"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV7keyInfo33_D8FE5E878D186547DB71B3F048BFB123LL10Foundation4DataVvpZ":{"name":"keyInfo","abstract":"<p>Bytes used as input for the KDF</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV10secretSizeSivpZ":{"name":"secretSize","abstract":"<p>The number of bytes for the root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV3key10Foundation4DataVvp":{"name":"key","abstract":"<p>The current root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV3keyAC10Foundation4DataV_tcfc":{"name":"init(key:)","abstract":"<p>Create a new root key from the components</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV11createChain05theircE003ourcE0AC04rootE0_AA0cgE0V05chainE0tAA06PublicE0V_AA07PrivateE0VtKF":{"name":"createChain(theirRatchetKey:ourRatchetKey:)","abstract":"<p>Create a new root key and chain key.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV9protoData10Foundation0G0VyF":{"name":"protoData()","abstract":"<p>Return the serialized root key</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV4fromAC10Foundation4DataV_tcfc":{"name":"init(from:)","abstract":"<p>Deserialize a root key.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV1loiySbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two root keys.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetRootKey.html#/s:14SignalProtocol14RatchetRootKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two root keys for equality.</p>","parent_name":"RatchetRootKey"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV15cipherKeyLengthSivpZ":{"name":"cipherKeyLength","abstract":"<p>The length of cipher keys in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV12macKeyLengthSivpZ":{"name":"macKeyLength","abstract":"<p>The length of the mac key in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV8ivLengthSivpZ":{"name":"ivLength","abstract":"<p>The length of the initialization vector in bytes</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV07derivedD11SecretsSizeSivpZ":{"name":"derivedMessageSecretsSize","abstract":"<p>The length of cipher key, mac key, and iv</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV9cipherKey10Foundation4DataVvp":{"name":"cipherKey","abstract":"<p>The cipher key to encrypt/decrypt a message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV6macKey10Foundation4DataVvp":{"name":"macKey","abstract":"<p>The mac key of a message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV2iv10Foundation4DataVvp":{"name":"iv","abstract":"<p>The initialization vector</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV7counters6UInt32Vvp":{"name":"counter","abstract":"<p>The counter of the message</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV6cipher3mac2iv7counterAC10Foundation4DataV_A2Js6UInt32VtKcfc":{"name":"init(cipher:mac:iv:counter:)","abstract":"<p>Create the message keys from the components</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV8materialAC10Foundation4DataV_tKcfc":{"name":"init(material:)","abstract":"<p>Create the message keys from generated bytes.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV11protoObjectAA0A8_SessionV5ChainV0D3KeyVvp":{"name":"protoObject","abstract":"<p>The message keys converted to a ProtoBuf object</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV4fromAcA0A8_SessionV5ChainV0D3KeyV_tKcfc":{"name":"init(from:)","abstract":"<p>Create message keys from a ProtoBuf object.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetMessageKeys.html#/s:14SignalProtocol18RatchetMessageKeysV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two message keys for equality.</p>","parent_name":"RatchetMessageKeys"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV07messageE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ":{"name":"messageKeySeed","abstract":"<p>The seed used as input material for the KDF to derive the message keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV05chainE4Seed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ":{"name":"chainKeySeed","abstract":"<p>The seed used as input material for the KDF to derive the chain keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV15keyMaterialSeed33_44AEAEB24A63A38BEDBADB02FDC83859LL10Foundation4DataVvpZ":{"name":"keyMaterialSeed","abstract":"<p>The seed used as info material for the KDF to derive the message keys</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV10secretSizeSivpZ":{"name":"secretSize","abstract":"<p>The size of the chain key</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV14hashOutputSizeSivpZ":{"name":"hashOutputSize","abstract":"<p>The size of the HKDF expand output</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV3key10Foundation4DataVvp":{"name":"key","abstract":"<p>The current key of the ratchet chain, 32 byte</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV3key5indexAC10Foundation4DataV_s6UInt32Vtcfc":{"name":"init(key:index:)","abstract":"<p>Create a ratchet chain key from the components</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV15getBaseMaterial33_44AEAEB24A63A38BEDBADB02FDC83859LL4seed10Foundation4DataVAI_tKF":{"name":"getBaseMaterial(seed:)","abstract":"<p>Get the SHA256 HMAC of the seed.</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV11messageKeysAA0c7MessageG0VyKF":{"name":"messageKeys()","abstract":"<p>Get a set of message keys for the Ratchet</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV4nextACyKF":{"name":"next()","abstract":"<p>Return the next chain key</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV11protoObjectAA0A8_SessionV0D0V0dE0Vvp":{"name":"protoObject","abstract":"<p>The chain key converted to a ProtoBuf object</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV4fromAcA0A8_SessionV0D0V0dE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a chain key from a ProtoBuf object.</p>","parent_name":"RatchetChainKey"},"Structs/RatchetChainKey.html#/s:14SignalProtocol15RatchetChainKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalMessages for equality.</p>","parent_name":"RatchetChainKey"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV22derivedRootSecretsSize33_13A39DAC40043861907177C99E190678LLSivpZ":{"name":"derivedRootSecretsSize","abstract":"<p>The total number of bytes to derive when creating a new root and chain key</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV20iterationStartOffset33_13A39DAC40043861907177C99E190678LLs5UInt8VvpZ":{"name":"iterationStartOffset","abstract":"<p>The offset for the expand iterations</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV13deriveSecrets8material4salt4info12outputLength10Foundation4DataVAK_A2KSitKFZ":{"name":"deriveSecrets(material:salt:info:outputLength:)","abstract":"<p>Derive new secrets from the KDF.</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV6expand33_13A39DAC40043861907177C99E190678LL3prk4info12outputLength10Foundation4DataVAK_AKSitKFZ":{"name":"expand(prk:info:outputLength:)","abstract":"<p>Expand the bytes to create enough output bytes.</p>","parent_name":"HKDF"},"Structs/HKDF.html#/s:14SignalProtocol4HKDFV15chainAndRootKey8material4salt4infoAA07RatchetfG0V04rootG0_AA0k5ChainG0V0dG0t10Foundation4DataV_A2PtKFZ":{"name":"chainAndRootKey(material:salt:info:)","abstract":"<p>Create a new chain key and root key.</p>","parent_name":"HKDF"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivpZ":{"name":"macLength","abstract":"<p>The length of the MAC for a message in bytes</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV16senderRatchetKeyAA06PublicF0Vvp":{"name":"senderRatchetKey","abstract":"<p>The public key of the sending ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV7counters6UInt32Vvp":{"name":"counter","abstract":"<p>The current counter of the ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV15previousCounters6UInt32Vvp":{"name":"previousCounter","abstract":"<p>The counter of the previous ratchet</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV10cipherText10Foundation4DataVvp":{"name":"cipherText","abstract":"<p>The encrypted text</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV3mac10Foundation4DataVvp":{"name":"mac","abstract":"<p>The mac of the message</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV6macKey013senderRatchetE07counter15previousCounter10cipherText0f8IdentityE008receivermE0AC10Foundation4DataV_AA06PublicE0Vs6UInt32VAqm2OtKcfc":{"name":"init(macKey:senderRatchetKey:counter:previousCounter:cipherText:senderIdentityKey:receiverIdentityKey:)","abstract":"<p>Create a SignalMessage from its components.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV6getMac33_029A73FDA84781D7F94A8B7C987F870FLL17senderIdentityKey08receiveroP003macP07message10Foundation4DataVAA06PublicP0V_An2LtKF":{"name":"getMac(senderIdentityKey:receiverIdentityKey:macKey:message:)","abstract":"<p>Calculate the MAC of the message. The length of the MAC is specified by <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9macLengthSivpZ\">SignalMessage.macLength</a></code></p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9verifyMac17senderIdentityKey08receivergH003macH0SbAA06PublicH0V_AI10Foundation4DataVtKF":{"name":"verifyMac(senderIdentityKey:receiverIdentityKey:macKey:)","abstract":"<p>Verify the MAC of the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV04baseC0AA010CipherTextC0VyKF":{"name":"baseMessage()","abstract":"<p>Return the serialized version of the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV11protoObjectAA0a1_aC0Vvp":{"name":"protoObject","abstract":"<p>Convert signal message to a ProtoBuf object</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV4fromAcA0a1_aC0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signal message from a ProtoBuf object.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV9protoData10Foundation0E0VyKF":{"name":"protoData()","abstract":"<p>Serialize the message.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a signal message from serialized data.</p>","parent_name":"SignalMessage"},"Structs/SignalMessage.html#/s:14SignalProtocol0A7MessageV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two SignalMessages for equality.</p>","parent_name":"SignalMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV5keyIds6UInt32Vvp":{"name":"keyId","abstract":"<p>The id of the key that was used</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9iterations6UInt32Vvp":{"name":"iteration","abstract":"<p>The iteration of the chain key</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV10cipherText10Foundation4DataVvp":{"name":"cipherText","abstract":"<p>The encrypted ciphertext</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9signature10Foundation4DataVvp":{"name":"signature","abstract":"<p>The signature of the message</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV04baseE0AA010CipherTextE0VyKF":{"name":"baseMessage()","abstract":"<p>Return the message serialized</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV5keyId9iteration10cipherText09signatureD0ACs6UInt32V_AI10Foundation4DataVAA07PrivateD0VtKcfc":{"name":"init(keyId:iteration:cipherText:signatureKey:)","abstract":"<p>Create a <code>SenderKeyMessage</code> from the components.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV6verify09signatureD0SbAA06PublicD0V_tKF":{"name":"verify(signatureKey:)","abstract":"<p>Verify that the signature matches the message.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV11protoObjectAA0a1_cdE0Vvp":{"name":"protoObject","abstract":"<p>Convert the sender key message to a ProtoBuf object</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV4fromAcA0a1_cdE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender key message from a ProtoBuf object.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV9protoData10Foundation0G0VyKF":{"name":"protoData()","abstract":"<p>Serialize the message.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyMessage.html#/s:14SignalProtocol16SenderKeyMessageV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a sender key message from serialized data.</p>","parent_name":"SenderKeyMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2ids6UInt32Vvp":{"name":"id","abstract":"<p>The id of the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV9iterations6UInt32Vvp":{"name":"iteration","abstract":"<p>The current chain iteration of the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV05chainD010Foundation4DataVvp":{"name":"chainKey","abstract":"<p>The chain key used for the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV09signatureD0AA06PublicD0Vvp":{"name":"signatureKey","abstract":"<p>The signature key used for signing the message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV04baseF0AA010CipherTextF0VyKF":{"name":"baseMessage()","abstract":"<p>Create a serialized message from the distribution message</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2id9iteration05chainD009signatureD0ACs6UInt32V_AI10Foundation4DataVAA06PublicD0Vtcfc":{"name":"init(id:iteration:chainKey:signatureKey:)","abstract":"<p>Create a distribution message.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two distribution messages.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV11protoObjectAA0a1_cdeF0Vvp":{"name":"protoObject","abstract":"<p>Convert the distribution message to a ProtoBuf object</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/SenderKeyDistributionMessage.html#/s:14SignalProtocol28SenderKeyDistributionMessageV4fromAcA0a1_cdeF0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a distribution message from a ProtoBuf object.</p>","parent_name":"SenderKeyDistributionMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV03preD2Ids6UInt32VSgvp":{"name":"preKeyId","abstract":"<p>The pre key id of the one time key from the other party</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV06signedcD2Ids6UInt32Vvp":{"name":"signedPreKeyId","abstract":"<p>The id of the signed pre key used for the message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV04baseD0AA06PublicD0Vvp":{"name":"baseKey","abstract":"<p>The base key used for the message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV08identityD0AA06PublicD0Vvp":{"name":"identityKey","abstract":"<p>The identity key of the sender</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV7messageAA0aE0Vvp":{"name":"message","abstract":"<p>The message included in the pre key message</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV03preD2Id06signedcdG004baseD008identityD07messageACs6UInt32VSg_AjA06PublicD0VAmA0aE0Vtcfc":{"name":"init(preKeyId:signedPreKeyId:baseKey:identityKey:message:)","abstract":"<p>Create a new pre key message.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV04baseE0AA010CipherTextE0VyKF":{"name":"baseMessage()","abstract":"<p>Get the serialized message.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV13asProtoObjectAA0a1_cdaE0VyKF":{"name":"asProtoObject()","abstract":"<p>Convert the message to a ProtoBuf object for serialization.</p>","parent_name":"PreKeySignalMessage"},"Structs/PreKeySignalMessage.html#/s:14SignalProtocol06PreKeyA7MessageV4fromAcA0a1_cdaE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a <code>PreKeySignalMessage</code> from a ProtoBuf object.</p>","parent_name":"PreKeySignalMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4typeAA0cD4TypeOvp":{"name":"type","abstract":"<p>The type of the message</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4data10Foundation4DataVvp":{"name":"data","abstract":"<p>The encrypted message</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4type4dataAcA0cD4TypeO_10Foundation4DataVtcfc":{"name":"init(type:data:)","abstract":"<p>Create a message from the components.</p>","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol0B18BufferSerializableP9protoData10Foundation0F0VyKF":{"name":"protoData()","parent_name":"CipherTextMessage"},"Structs/CipherTextMessage.html#/s:14SignalProtocol17CipherTextMessageV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a <code>CipherTextMessage</code> from a serialized record.</p>","parent_name":"CipherTextMessage"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV6length33_8480E35E3770D66B8096103692517741LLSivpZ":{"name":"length","abstract":"<p>The length of a fingerprint</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV7version33_8480E35E3770D66B8096103692517741LLs6UInt32VvpZ":{"name":"version","abstract":"<p>The version of the fingerprint</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV05localD010Foundation4DataVvp":{"name":"localFingerprint","abstract":"<p>The fingerprint data of the local party</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV06remoteD010Foundation4DataVvp":{"name":"remoteFingerprint","abstract":"<p>The fingerprint data of the remote party</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc":{"name":"init(localFingerprint:remoteFingerprint:)","abstract":"<p>Create a new ScannableFingerprint Version 1.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV4fromAcA0a1_D0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a fingerprint from a ProtoBuf object.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV11protoObjectAA0a1_D0Vvp":{"name":"protoObject","abstract":"<p>The fingerprint converted to a ProtoBuf object</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV7matchesySbACF":{"name":"matches(_:)","abstract":"<p>Compare if fingerprints match, i.e. the local fingerprint matches the remote fingerprint and vice versa.</p>","parent_name":"ScannableFingerprint"},"Structs/ScannableFingerprint.html#/s:14SignalProtocol20ScannableFingerprintV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two Fingerprints for equality.</p>","parent_name":"ScannableFingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV7versions5UInt8VvpZ":{"name":"version","abstract":"<p>The version of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV6lengthSivpZ":{"name":"length","abstract":"<p>The length of a fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV10iterationsSivpZ":{"name":"iterations","abstract":"<p>The number of iterations for the creation of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV11displayableAA011DisplayableC0Vvp":{"name":"displayable","abstract":"<p>The displayable part of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV9scannableAA09ScannableC0Vvp":{"name":"scannable","abstract":"<p>The scannable part of the fingerprint</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV11displayTextSSvp":{"name":"displayText","abstract":"<p>The string to show the user</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_10Foundation4DataVSSAKSitKcfc":{"name":"init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D8Identity06remoteeF00hG010iterationsACSS_AA9PublicKeyVSSAJSitKcfc":{"name":"init(localStableIdentifier:localIdentity:remoteStableIdentifier:remoteIdentity:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV21localStableIdentifier0D12IdentityList06remoteeF00igH010iterationsACSS_SayAA9PublicKeyVGSSAKSitKcfc":{"name":"init(localStableIdentifier:localIdentityList:remoteStableIdentifier:remoteIdentityList:iterations:)","abstract":"<p>Create a new fingerprint.</p>","parent_name":"Fingerprint"},"Structs/Fingerprint.html#/s:14SignalProtocol11FingerprintV7matchesySb10Foundation4DataVKF":{"name":"matches(_:)","abstract":"<p>Compare the fingerprint to scanned fingerprint data.</p>","parent_name":"Fingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV5localSSvp":{"name":"local","abstract":"<p>Fingerprint String of the local device</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV6remoteSSvp":{"name":"remote","abstract":"<p>Fingerprint String of the remote device</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV11displayTextSSvp":{"name":"displayText","abstract":"<p>Displaytext</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV5local6remoteACSS_SStcfc":{"name":"init(local:remote:)","abstract":"<p>Create a displayable fingerprint from local and remote fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV05localD006remoteD0AC10Foundation4DataV_AHtKcfc":{"name":"init(localFingerprint:remoteFingerprint:)","abstract":"<p>Create a displayable fingerprint from local and remote fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV19createDisplayString33_5406B071AF8426B4ED357E949299C61ELL11fingerprintSS10Foundation4DataV_tFZ":{"name":"createDisplayString(fingerprint:)","abstract":"<p>Create a display string from fingerprint data.</p>","parent_name":"DisplayableFingerprint"},"Structs/DisplayableFingerprint.html#/s:14SignalProtocol22DisplayableFingerprintV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two displayable fingerprints for equality.</p>","parent_name":"DisplayableFingerprint"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV8providerAA0aC8Provider_pvpZ":{"name":"provider","abstract":"<p>This variable can be set to provide a custom crypto provider.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6random5bytes10Foundation4DataVSi_tKFZ":{"name":"random(bytes:)","abstract":"<p>Create a number of secure random bytes.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItKFZ":{"name":"hmacSHA256(for:with:)","abstract":"<p>Authenticate a message with the HMAC based on SHA256.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV6sha5123for10Foundation4DataVAH_tKFZ":{"name":"sha512(for:)","abstract":"<p>Return the SHA512 message digest.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with the given scheme.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKFZ":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with the given scheme.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV23generateIdentityKeyPair10Foundation4DataVyKFZ":{"name":"generateIdentityKeyPair()","abstract":"<p>Generate an identity key pair. Clients should only do this once, at install time.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV15generatePreKeys5start5countSayAA07SessionE3KeyVGs6UInt32V_SitKFZ":{"name":"generatePreKeys(start:count:)","abstract":"<p>Generate a list of PreKeys.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV20generateSignedPreKey08identityG02id9timestampAA07SessionefG0VAA07PrivateG0V_s6UInt32Vs6UInt64VtKFZ":{"name":"generateSignedPreKey(identityKey:id:timestamp:)","abstract":"<p>Generate a signed pre key.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV19generateSenderKeyIds6UInt32VyKFZ":{"name":"generateSenderKeyId()","abstract":"<p>Generate a sender key ID.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV17generateSenderKey10Foundation4DataVyKFZ":{"name":"generateSenderKey()","abstract":"<p>Generate a sender key.</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoV24generateSenderSigningKeyAA0G4PairVyKFZ":{"name":"generateSenderSigningKey()","abstract":"<p>Generate a sender signing key pair</p>","parent_name":"SignalCrypto"},"Structs/SignalCrypto.html#/s:14SignalProtocol0A6CryptoVACyc33_D8858E66F8480749A0F433B505F180AFLlfc":{"name":"init()","abstract":"<p>SignalCrypto only has static functions and there is no need to create any instances</p>","parent_name":"SignalCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV6random5bytes10Foundation4DataVSi_tKF":{"name":"random(bytes:)","abstract":"<p>Create a number of random bytes</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV10hmacSHA2563for4with10Foundation4DataVAI_AItF":{"name":"hmacSHA256(for:with:)","abstract":"<p>Create a HMAC authentication for a given message</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV6sha5123for10Foundation4DataVAH_tKF":{"name":"sha512(for:)","abstract":"<p>Create a SHA512 digest for a given message</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with AES</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with AES</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3cbc3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF":{"name":"process(cbc:key:iv:encrypt:)","abstract":"<p>Process (encrypt/decrypt) a message with AES in CBC mode and pkcs7 padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7encrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF":{"name":"encrypt(ctr:key:iv:)","abstract":"<p>Encrypt a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7decrypt33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv10Foundation4DataVAK_A2KtKF":{"name":"decrypt(ctr:key:iv:)","abstract":"<p>Decrypt a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7process33_D160775F74C6E7CFC24EE3D0CD6C233BLL3ctr3key2iv7encrypt10Foundation4DataVAL_A2LSbtKF":{"name":"process(ctr:key:iv:encrypt:)","abstract":"<p>Process (encrypt/decrypt) a message with AES in CTR mode and no padding.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoV7toArray33_D160775F74C6E7CFC24EE3D0CD6C233BLL4from5count10Foundation4DataVSv_SitF":{"name":"toArray(from:count:)","abstract":"<p>Create an array from an unsafe pointer.</p>","parent_name":"SignalCommonCrypto"},"Structs/SignalCommonCrypto.html#/s:14SignalProtocol0A12CommonCryptoVACycfc":{"name":"init()","abstract":"<p>Create an instance.</p>","parent_name":"SignalCommonCrypto"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV5store33_A7B7CE7E72D1FD6B1E024448F80198D3LLxvp":{"name":"store","abstract":"<p>The local data store to use for state information</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV13remoteAddress33_A7B7CE7E72D1FD6B1E024448F80198D3LL0F0Qzvp":{"name":"remoteAddress","abstract":"<p>The address of the remote party</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV5store13remoteAddressACyxGx_0G0Qztcfc":{"name":"init(store:remoteAddress:)","abstract":"<p>Construct a session cipher for encrypt/decrypt operations on a session.","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF":{"name":"encrypt(_:)","abstract":"<p>Encrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypty10Foundation4DataVAA0D11TextMessageVKF":{"name":"decrypt(_:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt06preKeyA7Message10Foundation4DataVAA03PregaH0V_tKF":{"name":"decrypt(preKeySignalMessage:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt13signalMessage10Foundation4DataVAA0aG0V_tKF":{"name":"decrypt(signalMessage:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7process12preKeyBundleyAA0c3PregH0V_tKF":{"name":"process(preKeyBundle:)","abstract":"<p>Build a new session from a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SessionPreKeyBundle.html\">SessionPreKeyBundle</a></code> retrieved from a server.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV04loadC033_A7B7CE7E72D1FD6B1E024448F80198D3LLAA0C6RecordCyKF":{"name":"loadSession()","abstract":"<p>Load the session record for the remote address</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C6RecordC_AA0A7MessageVtKF":{"name":"decrypt(from:and:)","abstract":"<p>Try to decrypt a SignalMessage with one of the stored sessions in the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SessionRecord.html\">SessionRecord</a></code>. If a session can decrypt the message it will be promoted to the active session.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV7decrypt33_A7B7CE7E72D1FD6B1E024448F80198D3LL4from3and10Foundation4DataVAA0C5StateC_AA0A7MessageVtKF":{"name":"decrypt(from:and:)","abstract":"<p>Try to decrypt a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SignalMessage.html\">SignalMessage</a></code> with a specific <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SessionState.html\">SessionState</a></code>.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV22getOrCreateMessageKeys33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeral8chainKey7counterAA07RatchethI0VAA0C5StateC_AA06PublicX0VAA0z5ChainX0Vs6UInt32VtKF":{"name":"getOrCreateMessageKeys(state:theirEphemeral:chainKey:counter:)","abstract":"<p>Retrieve previously stored message keys or create them from the chain.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV19getOrCreateChainKey33_A7B7CE7E72D1FD6B1E024448F80198D3LL5state14theirEphemeralAA07RatchethI0VAA0C5StateC_AA06PublicI0VtKF":{"name":"getOrCreateChainKey(state:theirEphemeral:)","abstract":"<p>Retrieve the chain key for a state and receiver chain key.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV13getCiphertext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys9plaintext10Foundation4DataVAA014RatchetMessageR0V_AJtKF":{"name":"getCiphertext(messageKeys:plaintext:)","abstract":"<p>Encrypt a message.</p>","parent_name":"SessionCipher"},"Structs/SessionCipher.html#/s:14SignalProtocol13SessionCipherV12getPlaintext33_A7B7CE7E72D1FD6B1E024448F80198D3LL11messageKeys10ciphertext10Foundation4DataVAA014RatchetMessageR0V_AJtKF":{"name":"getPlaintext(messageKeys:ciphertext:)","abstract":"<p>Decrypt a message.</p>","parent_name":"SessionCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV5store33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLxvp":{"name":"store","abstract":"<p>The store where the keys are stored</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7address33_94F9BD28C9BD72E9FE0B54ABE293B8F7LL0C7AddressQzvp":{"name":"address","abstract":"<p>The id of the remote client</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7address5storeACyxG0C7AddressQz_xtcfc":{"name":"init(address:store:)","abstract":"<p>Create a GroupCipher.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7process7messageyAA0D11TextMessageV_tKF":{"name":"process(message:)","abstract":"<p>Create a GroupCipher.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7process19distributionMessageyAA021SenderKeyDistributionG0V_tKF":{"name":"process(distributionMessage:)","abstract":"<p>Create a new group session from a distribution message.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV13createSessionAA28SenderKeyDistributionMessageVyKF":{"name":"createSession()","abstract":"<p>Create a new session and generate a distribution message.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7encryptyAA0D11TextMessageV10Foundation4DataVKF":{"name":"encrypt(_:)","abstract":"<p>Encrypt a message for the recipient.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV7decrypt10ciphertext10Foundation4DataVAA16SenderKeyMessageV_tKF":{"name":"decrypt(ciphertext:)","abstract":"<p>Decrypt a message from the group member.</p>","parent_name":"GroupCipher"},"Structs/GroupCipher.html#/s:14SignalProtocol11GroupCipherV10loadRecord33_94F9BD28C9BD72E9FE0B54ABE293B8F7LLAA09SenderKeyF0CyKF":{"name":"loadRecord()","abstract":"<p>Load the record for the remote address.</p>","parent_name":"GroupCipher"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV9basePoint33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvpZ":{"name":"basePoint","abstract":"<p>The base point for the Curve25519 elliptic curve</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV3key33_D890EBC7B14EC8921E94EF9CF1CD25DALL10Foundation4DataVvp":{"name":"key","abstract":"<p>The key material of length <code>KeyPair.keyLength</code></p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV5pointAC10Foundation4DataV_tKcfc":{"name":"init(point:)","abstract":"<p>Create a public key from a UInt8 array. Checks","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV07privateD0AcA07PrivateD0V_tKcfc":{"name":"init(privateKey:)","abstract":"<p>Generate a public key from a given private key.","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV6verify9signature3forSb10Foundation4DataV_AItF":{"name":"verify(signature:for:)","abstract":"<p>Verify that the signature corresponds to the message.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV6verify12vrfSignature3for10Foundation4DataVAI_AItKF":{"name":"verify(vrfSignature:for:)","abstract":"<p>Verify that the vrf signature corresponds to the message.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV18calculateAgreement07privateD010Foundation4DataVAA07PrivateD0V_tKF":{"name":"calculateAgreement(privateKey:)","abstract":"<p>Calculate the shared agreement between the given private key and the public key.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV1loiySbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two public keys.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two public keys for equality. The keys are equal if all bytes match.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV4data10Foundation4DataVvp":{"name":"data","abstract":"<p>The serialized data of the public key</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a public key from a serialized record.</p>","parent_name":"PublicKey"},"Structs/PublicKey.html#/s:14SignalProtocol9PublicKeyV9protoData10Foundation0F0VyF":{"name":"protoData()","abstract":"<p>Return a byte representation of the public key</p>","parent_name":"PublicKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV3key33_6DE970A10F344CCAE8E0727C84D53C06LL10Foundation4DataVvp":{"name":"key","abstract":"<p>The key material of length <code>KeyPair.keyLength</code></p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV5pointAC10Foundation4DataV_tKcfc":{"name":"init(point:)","abstract":"<p>Create a private key from a curve point.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV15unverifiedPointAC10Foundation4DataV_tKcfc":{"name":"init(unverifiedPoint:)","abstract":"<p>Create a private key. Only checks the length, nothing else.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyVACyKcfc":{"name":"init()","abstract":"<p>Create a new random private key.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4sign7message10Foundation4DataVAH_tKF":{"name":"sign(message:)","abstract":"<p>Calculate the signature for the given message.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV7signVRF7message10Foundation4DataVAH_tKF":{"name":"signVRF(message:)","abstract":"<p>Calculates a unique Curve25519 signature for the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV18calculateAgreement06publicD010Foundation4DataVAA06PublicD0V_tKF":{"name":"calculateAgreement(publicKey:)","abstract":"<p>Calculate the shared agreement between the private key and the given public key.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4data10Foundation4DataVvp":{"name":"data","abstract":"<p>The serialized data of the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV7keyPairAA0dF0VyKF":{"name":"keyPair()","abstract":"<p>Create the corresponding key pair for the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV06publicD0AA06PublicD0VyKF":{"name":"publicKey()","abstract":"<p>Create the corresponding public key for the private key</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two private keys for equality.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV4fromAC10Foundation4DataV_tKcfc":{"name":"init(from:)","abstract":"<p>Create a private key from a byte record.</p>","parent_name":"PrivateKey"},"Structs/PrivateKey.html#/s:14SignalProtocol10PrivateKeyV9protoData10Foundation0F0VyF":{"name":"protoData()","abstract":"<p>Convert the key to serialized data</p>","parent_name":"PrivateKey"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV7DJBTypes5UInt8VvpZ":{"name":"DJBType","abstract":"<p>Type declaration (only needed for compatibility)</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV06publicC0AA06PublicC0Vvp":{"name":"publicKey","abstract":"<p>The public part of the key pair</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV07privateC0AA07PrivateC0Vvp":{"name":"privateKey","abstract":"<p>The private part of the key pair</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV06publicC007privateC0AcA06PublicC0V_AA07PrivateC0Vtcfc":{"name":"init(publicKey:privateKey:)","abstract":"<p>Create a key pair from existing public and private keys</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV07privateC0AcA07PrivateC0V_tKcfc":{"name":"init(privateKey:)","abstract":"<p>Create a key pair from existing public and private keys</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairVACyKcfc":{"name":"init()","abstract":"<p>Create a new random key pair.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV4sign7message10Foundation4DataVAH_tKF":{"name":"sign(message:)","abstract":"<p>Calculate the signature for the given message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV7signVRF7message10Foundation4DataVAH_tKF":{"name":"signVRF(message:)","abstract":"<p>Calculates a unique Curve25519 signature for the private key</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV18calculateAgreement06publicC010Foundation4DataVAA06PublicC0V_tKF":{"name":"calculateAgreement(publicKey:)","abstract":"<p>Calculate the shared agreement between the private key and the given public key.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV6verify9signature3forSb10Foundation4DataV_AItF":{"name":"verify(signature:for:)","abstract":"<p>Verify that the signature corresponds to the message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV6verify12vrfSignature3for10Foundation4DataVAI_AItKF":{"name":"verify(vrfSignature:for:)","abstract":"<p>Verify that the vrf signature corresponds to the message.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV18calculateAgreement07privateC010Foundation4DataVAA07PrivateC0V_tKF":{"name":"calculateAgreement(privateKey:)","abstract":"<p>Calculate the shared agreement between the given private key and the public key.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV4fromAcA0a1_cD0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a key pair from a protobuf object.</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV11protoObjectAA0a1_cD0Vvp":{"name":"protoObject","abstract":"<p>The key pair converted to a ProtoBuf object</p>","parent_name":"KeyPair"},"Structs/KeyPair.html#/s:14SignalProtocol7KeyPairV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two key pairs for equality. The keys are equal if public and private keys match.</p>","parent_name":"KeyPair"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9signature10Foundation4DataVvp":{"name":"signature","abstract":"<p>The signature data</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9vrfOutput10Foundation4DataVvp":{"name":"vrfOutput","abstract":"<p>The output of the VRF verification</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV9signature9vrfOutputAC10Foundation4DataV_AHtcfc":{"name":"init(signature:vrfOutput:)","abstract":"<p>Create a new signature</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV1loiySbAC_ACtFZ":{"name":"<(_:_:)","abstract":"<p>Compare two consistency signatures.</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencySignature.html#/s:14SignalProtocol26DeviceConsistencySignatureV2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two consistency signatures for equality.</p>","parent_name":"DeviceConsistencySignature"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV9signatureAA0cD9SignatureVvp":{"name":"signature","abstract":"<p>The consistency signature</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV10generations6UInt32Vvp":{"name":"generation","abstract":"<p>The generation of the consistency message</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV10commitment15identitykeyPairAcA0cD12CommitmentV0V_AA03KeyH0VtKcfc":{"name":"init(commitment:identitykeyPair:)","abstract":"<p>Create a new consistency message.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV6objectAA0a1_cd4CodeE0Vvp":{"name":"object","abstract":"<p>The message converted to a protocol buffer object.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAcA0a1_cd4CodeE0V_AA0cD12CommitmentV0VAA06PublicI0VtKcfc":{"name":"init(from:commitment:identityKey:)","abstract":"<p>Create a consistency message from a protocol buffer object.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV4data10Foundation4DataVyKF":{"name":"data()","abstract":"<p>The message serialized through a protocol buffer.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyMessage.html#/s:14SignalProtocol24DeviceConsistencyMessageV4from10commitment11identityKeyAC10Foundation4DataV_AA0cD12CommitmentV0VAA06PublicI0VtKcfc":{"name":"init(from:commitment:identityKey:)","abstract":"<p>Create a consistency message from a serialized protocol buffer record.</p>","parent_name":"DeviceConsistencyMessage"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V11codeVersion33_95297B804ED5EE9BFD74276EA1A50623LLs6UInt16VvpZ":{"name":"codeVersion","abstract":"<p>The version of the consistency implementation</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V7version33_95297B804ED5EE9BFD74276EA1A50623LL10Foundation4DataVvpZ":{"name":"version","abstract":"<p>An identifier used when hashing the identity keys</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generations6UInt32Vvp":{"name":"generation","abstract":"<p>The generation of the message</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10serialized10Foundation4DataVvp":{"name":"serialized","abstract":"<p>The hash of the public keys</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V10generation15identityKeyListACs6UInt32V_SayAA06PublicI0VGtKcfc":{"name":"init(generation:identityKeyList:)","abstract":"<p>Create a new commitment.</p>","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html#/s:14SignalProtocol29DeviceConsistencyCommitmentV0V12generateCode3forSSSayAA0cD9SignatureVG_tKF":{"name":"generateCode(for:)","abstract":"<p>Generate a String which can be used to compare the consistency across multiple devices.","parent_name":"DeviceConsistencyCommitmentV0"},"Structs/DeviceConsistencyCommitmentV0.html":{"name":"DeviceConsistencyCommitmentV0","abstract":"<p>Create commitments that are hashes of the identity keys of different devices."},"Structs/DeviceConsistencyMessage.html":{"name":"DeviceConsistencyMessage","abstract":"<p>Device consistency messages can be sent between multiple devices to verify that the"},"Structs/DeviceConsistencySignature.html":{"name":"DeviceConsistencySignature","abstract":"<p>A signature used for device consistency checks</p>"},"Structs/KeyPair.html":{"name":"KeyPair","abstract":"<p>A pair of public and private key for elliptic curve cryptopgraphy</p>"},"Structs/PrivateKey.html":{"name":"PrivateKey","abstract":"<p>The private part of an elliptic curve key pair."},"Structs/PublicKey.html":{"name":"PublicKey","abstract":"<p>The public part of an elliptic curve key pair."},"Structs/GroupCipher.html":{"name":"GroupCipher","abstract":"<p>Use a <code>GroupCipher</code> to encrypt and decrypt group messages for already"},"Structs/SessionCipher.html":{"name":"SessionCipher","abstract":"<p>The main entry point for Signal Protocol encrypt/decrypt operations.</p>"},"Structs/SignalCommonCrypto.html":{"name":"SignalCommonCrypto","abstract":"<p>Implementation of the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbProtocols/SignalCryptoProvider.html\">SignalCryptoProvider</a></code> protocol using"},"Structs/SignalCrypto.html":{"name":"SignalCrypto","abstract":"<p>The <code>SignalCrypto</code> struct exposes all necessary cryptocraphic functions to the protocol."},"Structs/DisplayableFingerprint.html":{"name":"DisplayableFingerprint","abstract":"<p>A Fingerprint to verify the keys specifically for displaying to the user</p>"},"Structs/Fingerprint.html":{"name":"Fingerprint","abstract":"<p>A fingerprint can be used to ensure that the identities of a communication channel"},"Structs/ScannableFingerprint.html":{"name":"ScannableFingerprint","abstract":"<p>A fingerprint optimised to be scanned through e.g. a QR Code</p>"},"Structs/CipherTextMessage.html":{"name":"CipherTextMessage","abstract":"<p>A <code>CipherTextMessage</code> encapsulates an encrypted message and the type-</p>"},"Structs/PreKeySignalMessage.html":{"name":"PreKeySignalMessage","abstract":"<p>A <code>PreKeySignalMessage</code> can be used to establish a new session.</p>"},"Structs/SenderKeyDistributionMessage.html":{"name":"SenderKeyDistributionMessage","abstract":"<p><code>SenderKeyDistributionMessage</code>s are used to establish group sessions.</p>"},"Structs/SenderKeyMessage.html":{"name":"SenderKeyMessage","abstract":"<p>A sender key message is used to send an encrypted message in an existing group session.</p>"},"Structs/SignalMessage.html":{"name":"SignalMessage","abstract":"<p>A <code>SignalMessage</code> is used to send an encrypted message in an established session.</p>"},"Structs/HKDF.html":{"name":"HKDF","abstract":"<p>The Key derivation function used for the Ratchet.</p>"},"Structs/RatchetChainKey.html":{"name":"RatchetChainKey","abstract":"<p>A chain key for the ratchet.</p>"},"Structs/RatchetMessageKeys.html":{"name":"RatchetMessageKeys","abstract":"<p>The keys needed to encrypt/decrypt a message</p>"},"Structs/RatchetRootKey.html":{"name":"RatchetRootKey","abstract":"<p>A root key is within a ratchet to derive new sender and receiver chain keys.</p>"},"Structs/SenderChain.html":{"name":"SenderChain","abstract":"<p>The sender chain of a ratchet used to encrypt messages for sending.</p>"},"Structs/SenderChainKey.html":{"name":"SenderChainKey","abstract":"<p>A key in the sender chain.</p>"},"Structs/SenderMessageKey.html":{"name":"SenderMessageKey","abstract":"<p>A message key in a chain to encrypt/decrypt messages</p>"},"Structs/PendingPreKey.html":{"name":"PendingPreKey","abstract":"<p>A pre key sent out as a pre key message, until a message is received from the other party</p>"},"Structs/SessionBuilder.html":{"name":"SessionBuilder","abstract":"<p>Session builder is responsible for setting up encrypted sessions."},"Structs/SessionPreKey.html":{"name":"SessionPreKey","abstract":"<p>A pre key used to esatblish a session. A unique pre key is used for"},"Structs/SessionPreKeyBundle.html":{"name":"SessionPreKeyBundle","abstract":"<p>Pre key bundles are used to establish new sessions.</p>"},"Structs/SessionPreKeyPublic.html":{"name":"SessionPreKeyPublic","abstract":"<p>A pre key used to esatblish a session. A unique pre key is used for"},"Structs/SessionSignedPreKey.html":{"name":"SessionSignedPreKey","abstract":"<p>A signed pre key is used as part of a session bundle to establish a new session."},"Structs/SessionSignedPreKeyPublic.html":{"name":"SessionSignedPreKeyPublic","abstract":"<p>A public signed pre key is used as part of a session bundle to establish a new session."},"Structs/SymmetricParameters.html":{"name":"SymmetricParameters","abstract":"<p>All parameters needed to establish a session</p>"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP06signeddE03for10Foundation4DataVs6UInt32V_tKF":{"name":"signedPreKey(for:)","abstract":"<p>Provide a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP5store06signeddE03fory10Foundation4DataV_s6UInt32VtKF":{"name":"store(signedPreKey:for:)","abstract":"<p>Store a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP08containscdE03forSbs6UInt32V_tKF":{"name":"containsSignedPreKey(for:)","abstract":"<p>Indicate if a Signed Pre Key exists for an id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP06removecdE03forys6UInt32V_tKF":{"name":"removeSignedPreKey(for:)","abstract":"<p>Remove a Signed Pre Key.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP6allIdsSays6UInt32VGyKF":{"name":"allIds()","abstract":"<p>Get all Ids for the SignedPreKeys in the store.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStoreP6lastIds6UInt32Vvp":{"name":"lastId","abstract":"<p>The id of the last SignedPreKey that was stored.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SignedPreKeyStore.html#/s:14SignalProtocol17SignedPreKeyStorePAAE5store06signeddE0yAA07SessioncdE0V_tKF":{"name":"store(signedPreKey:)","abstract":"<p>Store a Signed Pre Key for a given id.</p>","parent_name":"SignedPreKeyStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP7AddressQa":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP04loadC03for10Foundation4DataVSg7AddressQz_tKF":{"name":"loadSession(for:)","abstract":"<p>Load a session for a given address.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP5store7session3fory10Foundation4DataV_7AddressQztKF":{"name":"store(session:for:)","abstract":"<p>Store a session record for a remote client.</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP08containsC03forSb7AddressQz_tF":{"name":"containsSession(for:)","abstract":"<p>Indicate if a record exists for the client address</p>","parent_name":"SessionStore"},"Protocols/SessionStore.html#/s:14SignalProtocol12SessionStoreP06deleteC03fory7AddressQz_tKF":{"name":"deleteSession(for:)","abstract":"<p>Delete a session for a remote client.</p>","parent_name":"SessionStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP7AddressQa":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"SenderKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP06senderD03for10Foundation4DataVSg7AddressQz_tF":{"name":"senderKey(for:)","abstract":"<p>Returns a copy of the sender key record corresponding to the address tuple.</p>","parent_name":"SenderKeyStore"},"Protocols/SenderKeyStore.html#/s:14SignalProtocol14SenderKeyStoreP5store06senderD03fory10Foundation4DataV_7AddressQztKF":{"name":"store(senderKey:for:)","abstract":"<p>Stores the sender key record.</p>","parent_name":"SenderKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP03preD03for10Foundation4DataVs6UInt32V_tKF":{"name":"preKey(for:)","abstract":"<p>Provide a Pre Key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP5store03preD03fory10Foundation4DataV_s6UInt32VtKF":{"name":"store(preKey:for:)","abstract":"<p>Store a pre key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP08containscD03forSbs6UInt32V_tF":{"name":"containsPreKey(for:)","abstract":"<p>Indicate if a pre key exists for an id.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP06removecD03forys6UInt32V_tKF":{"name":"removePreKey(for:)","abstract":"<p>Remove a pre key.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStoreP6lastIds6UInt32Vvp":{"name":"lastId","abstract":"<p>Return the id of the last stored pre key.</p>","parent_name":"PreKeyStore"},"Protocols/PreKeyStore.html#/s:14SignalProtocol11PreKeyStorePAAE5store03preD0yAA07SessioncD0V_tKF":{"name":"store(preKey:)","abstract":"<p>Store a pre key for a given id.</p>","parent_name":"PreKeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP7AddressQa":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08IdentitycD4TypeQa":{"name":"IdentityKeyStoreType","abstract":"<p>The type of the identity key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07SessionD4TypeQa":{"name":"SessionStoreType","abstract":"<p>The type of the session key store</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP08identitycD008IdentitycD4TypeQzvp":{"name":"identityKeyStore","abstract":"<p>The Identity Key store that stores the records for the identity key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP03precD0AA03PrecD0_pvp":{"name":"preKeyStore","abstract":"<p>The Pre Key store that stores the records for the pre key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP07sessionD007SessionD4TypeQzvp":{"name":"sessionStore","abstract":"<p>The Session store that stores the records for the session module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStoreP09signedPrecD0AA06SignedfcD0_pvp":{"name":"signedPreKeyStore","abstract":"<p>The Signed Pre Key store that stores the records for the signed pre key module</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE021signatureWithIdentityC07message10Foundation4DataVAH_tKF":{"name":"signatureWithIdentityKey(message:)","abstract":"<p>Sign a message with the identity key.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE18updateSignedPrekey9timestamp10Foundation4DataVs6UInt64V_tKF":{"name":"updateSignedPrekey(timestamp:)","abstract":"<p>Create a signed pre key with the given id and store it.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE13createPreKeys5countSay10Foundation4DataVGSi_tKF":{"name":"createPreKeys(count:)","abstract":"<p>Create a number of pre keys and store them.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE11fingerprint3for12localAddressAA11FingerprintV0H0Qz_AJtKF":{"name":"fingerprint(for:localAddress:)","abstract":"<p>Create a fingerprint to compare keys with someone.</p>","parent_name":"KeyStore"},"Protocols/KeyStore.html#/s:14SignalProtocol8KeyStorePAAE4sign7message10Foundation4DataVAH_tKF":{"name":"sign(message:)","abstract":"<p>Sign a message with the identity key.</p>","parent_name":"KeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP7AddressQa":{"name":"Address","abstract":"<p>The type that distinguishes different devices/users</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP03getcD4Data10Foundation0G0VyKF":{"name":"getIdentityKeyData()","abstract":"<p>Return the identity key pair. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP8identity3for10Foundation4DataVSg7AddressQz_tKF":{"name":"identity(for:)","abstract":"<p>Return the identity for the given address, if there is any.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStoreP5store8identity3fory10Foundation4DataVSg_7AddressQztKF":{"name":"store(identity:for:)","abstract":"<p>Store a remote client’s identity key as trusted.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE03getcD0AA0D4PairVyKF":{"name":"getIdentityKey()","abstract":"<p>Return the identity key pair. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE09getPubliccD010Foundation4DataVyKF":{"name":"getPublicIdentityKey()","abstract":"<p>Return the public identity key. This key should be generated once at","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE03getcD10PublicData10Foundation0H0VyKF":{"name":"getIdentityKeyPublicData()","abstract":"<p>Return the public identity key data.</p>","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSb10Foundation4DataV_7AddressQztKF":{"name":"isTrusted(identity:for:)","abstract":"<p>Determine whether a remote client’s identity is trusted. The convention is","parent_name":"IdentityKeyStore"},"Protocols/IdentityKeyStore.html#/s:14SignalProtocol16IdentityKeyStorePAAE9isTrusted8identity3forSbAA06PublicD0V_7AddressQztKF":{"name":"isTrusted(identity:for:)","abstract":"<p>Determine whether a remote client’s identity is trusted. The convention is","parent_name":"IdentityKeyStore"},"Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP0C7AddressQa":{"name":"GroupAddress","abstract":"<p>The type that distinguishes different groups and devices/users</p>","parent_name":"GroupKeyStore"},"Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP06SenderdE4TypeQa":{"name":"SenderKeyStoreType","abstract":"<p>The type of the sender key store</p>","parent_name":"GroupKeyStore"},"Protocols/GroupKeyStore.html#/s:14SignalProtocol13GroupKeyStoreP06senderdE006SenderdE4TypeQzvp":{"name":"senderKeyStore","abstract":"<p>The Sender Key store that stores the records for the sender key module</p>","parent_name":"GroupKeyStore"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP6random5bytes10Foundation4DataVSi_tKF":{"name":"random(bytes:)","abstract":"<p>Create a number of secure random bytes.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP10hmacSHA2563for4with10Foundation4DataVAI_AItKF":{"name":"hmacSHA256(for:with:)","abstract":"<p>Authenticate a message with the HMAC based on SHA256.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP6sha5123for10Foundation4DataVAH_tKF":{"name":"sha512(for:)","abstract":"<p>Return the SHA512 message digest.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP7encrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF":{"name":"encrypt(message:with:key:iv:)","abstract":"<p>Encrypt a message with the given scheme.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html#/s:14SignalProtocol0A14CryptoProviderP7decrypt7message4with3key2iv10Foundation4DataVAK_AA0A16EncryptionSchemeOA2KtKF":{"name":"decrypt(message:with:key:iv:)","abstract":"<p>Decrypt a message with the given scheme.</p>","parent_name":"SignalCryptoProvider"},"Protocols/SignalCryptoProvider.html":{"name":"SignalCryptoProvider","abstract":"<p>The <code>SignalCryptoProvider</code> protocol can be implemented to provide a custom"},"Protocols/GroupKeyStore.html":{"name":"GroupKeyStore","abstract":"<p>A group key store stores the encryption keys for group messaging</p>"},"Protocols/IdentityKeyStore.html":{"name":"IdentityKeyStore","abstract":"<p>Implement the <code>IdentityKeyStore</code> protocol to handle the identity keys of the"},"Protocols/KeyStore.html":{"name":"KeyStore","abstract":"<p>Provide all local storage delegates.</p>"},"Protocols/PreKeyStore.html":{"name":"PreKeyStore","abstract":"<p>Implement the <code>PreKeyStore</code> protocol to handle the pre key storage of the"},"Protocols/SenderKeyStore.html":{"name":"SenderKeyStore","abstract":"<p>Implement the <code>SenderKeyStore</code> protocol to handle the sender key storage of the"},"Protocols/SessionStore.html":{"name":"SessionStore","abstract":"<p>Implement the <code>SessionStore</code> protocol to handle the session records of the"},"Protocols/SignedPreKeyStore.html":{"name":"SignedPreKeyStore","abstract":"<p>Implement the <code>SignedPreKeyStore</code> protocol to handle the signed pre key storage of the"},"Functions.html#/s:14SignalProtocol13getLogicalKey33_4D265CAC7D325782566EF400BD6F4359LL3for10Foundation4DataVSayAA06PublicE0VG_tF":{"name":"getLogicalKey(for:)","abstract":"<p>Serialize the list of public keys by first sorting the keys and then"},"Functions.html#/s:14SignalProtocol14getFingerprint33_4D265CAC7D325782566EF400BD6F4359LL8identity16stableIdentifier10iterations10Foundation4DataVAI_SSSitKF":{"name":"getFingerprint(identity:stableIdentifier:iterations:)","abstract":"<p>Calculate the fingerprint for identity data and identifier.</p>"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO6signalyA2CmF":{"name":"signal","abstract":"<p>A ‘normal’ message in an established session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO6preKeyyA2CmF":{"name":"preKey","abstract":"<p>A pre key message to establish a new session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO9senderKeyyA2CmF":{"name":"senderKey","abstract":"<p>A normal message in an established group session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO21senderKeyDistributionyA2CmF":{"name":"senderKeyDistribution","abstract":"<p>A distribution message to establish a new group session</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO11descriptionSSvp":{"name":"description","abstract":"<p>A String representation of the type</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO4data10Foundation4DataVvp":{"name":"data","abstract":"<p>Encode the type into a string</p>","parent_name":"CipherTextType"},"Enums/CipherTextType.html#/s:14SignalProtocol14CipherTextTypeO4fromACSg10Foundation4DataV_tcfc":{"name":"init(from:)","abstract":"<p>Extract the <code>CipherTextType</code> from data.</p>","parent_name":"CipherTextType"},"Enums/SignalEncryptionScheme.html#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CBCwithPKCS5yA2CmF":{"name":"AES_CBCwithPKCS5","abstract":"<p>Encrypt/decrypt with AES in CBC mode with PKCS5 padding</p>","parent_name":"SignalEncryptionScheme"},"Enums/SignalEncryptionScheme.html#/s:14SignalProtocol0A16EncryptionSchemeO16AES_CTRnoPaddingyA2CmF":{"name":"AES_CTRnoPadding","abstract":"<p>Encrypt/decrypt with AES in CTR mode with no padding</p>","parent_name":"SignalEncryptionScheme"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO7unknownyA2CmF":{"name":"unknown","abstract":"<p>Unknown errors should only be thrown of no other, more descriptive error type exists</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO05curveC0yA2CmF":{"name":"curveError","abstract":"<p>Curve25519 functions returned an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO07storageC0yA2CmF":{"name":"storageError","abstract":"<p>The local storage implementation produced an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16duplicateMessageyA2CmF":{"name":"duplicateMessage","abstract":"<p>A message was received that was previously decrypted, or is too old</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO07invalidD0yA2CmF":{"name":"invalidType","abstract":"<p>The message type does not match</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO10invalidKeyyA2CmF":{"name":"invalidKey","abstract":"<p>An invalid key produced an error</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9invalidIVyA2CmF":{"name":"invalidIV","abstract":"<p>The initialization vector has the wrong length</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9invalidIdyA2CmF":{"name":"invalidId","abstract":"<p>The (key) id is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO10invalidMacyA2CmF":{"name":"invalidMac","abstract":"<p>The authentication failed</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO14invalidMessageyA2CmF":{"name":"invalidMessage","abstract":"<p>The message structure is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13invalidLengthyA2CmF":{"name":"invalidLength","abstract":"<p>The length of a message or stored object is incorrect</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13legacyMessageyA2CmF":{"name":"legacyMessage","abstract":"<p>A message from an older implementation of the protocol is received</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO9noSessionyA2CmF":{"name":"noSession","abstract":"<p>No valid session exists for the address</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO17untrustedIdentityyA2CmF":{"name":"untrustedIdentity","abstract":"<p>The identity of the recipient is untrusted</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16invalidSignatureyA2CmF":{"name":"invalidSignature","abstract":"<p>The signature of the message is invalid</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO15invalidProtoBufyA2CmF":{"name":"invalidProtoBuf","abstract":"<p>A serialized record or message is not in valid protocol buffer format</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO18fPIdentityMismatchyA2CmF":{"name":"fPIdentityMismatch","abstract":"<p>The identity of two fingerprints is not equal</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO16noCryptoProvideryA2CmF":{"name":"noCryptoProvider","abstract":"<p>There is no crypto provider set</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO13noRandomBytesyA2CmF":{"name":"noRandomBytes","abstract":"<p>Random bytes could not be created</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO04hmacC0yA2CmF":{"name":"hmacError","abstract":"<p>There was an error calculating the HMAC of a message</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO06digestC0yA2CmF":{"name":"digestError","abstract":"<p>There was an error calculating a digest</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO010encryptionC0yA2CmF":{"name":"encryptionError","abstract":"<p>An error occured during encryption</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html#/s:14SignalProtocol0A9ErrorTypeO010decryptionC0yA2CmF":{"name":"decryptionError","abstract":"<p>An error occured during decryption</p>","parent_name":"SignalErrorType"},"Enums/SignalErrorType.html":{"name":"SignalErrorType","abstract":"<p>The different types of errors that can occur using the SignalProtocolSwift library.</p>"},"Enums/SignalEncryptionScheme.html":{"name":"SignalEncryptionScheme","abstract":"<p>Specifies the type of algorithm to use for encryption and decryption.</p>"},"Enums/CipherTextType.html":{"name":"CipherTextType","abstract":"<p>The <code>CipherTextType</code> enum describes the different types of messages.</p>"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC17maxReceiverChains33_5D3A64D6F61CC3F9A53400D8B7239046LLSivpZ":{"name":"maxReceiverChains","abstract":"<p>The maximum number of receiver chains for the remote party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC7keyInfo33_5D3A64D6F61CC3F9A53400D8B7239046LL10Foundation4DataVvpZ":{"name":"keyInfo","abstract":"<p>The info material used for the derivation of chain and root keys</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC15previousCounters6UInt32Vvp":{"name":"previousCounter","abstract":"<p>The last counter in the previous sender chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13localIdentityAA9PublicKeyVSgvp":{"name":"localIdentity","abstract":"<p>The identity key of the local party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC14remoteIdentityAA9PublicKeyVSgvp":{"name":"remoteIdentity","abstract":"<p>The identity key of the remote party</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC7rootKeyAA011RatchetRootF0VSgvp":{"name":"rootKey","abstract":"<p>The root key of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC11senderChainAA06SenderF0VSgvp":{"name":"senderChain","abstract":"<p>The sender chain of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC14receiverChainsSayAA13ReceiverChainCGvp":{"name":"receiverChains","abstract":"<p>The receiver chains of the state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13pendingPreKeyAA07PendingfG0VSgvp":{"name":"pendingPreKey","abstract":"<p>An optional pending pre key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC12aliceBaseKeyAA06PublicG0VSgvp":{"name":"aliceBaseKey","abstract":"<p>The base key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateCACycfc":{"name":"init()","abstract":"<p>Create a new sender state</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13receiverChain3forAA08ReceiverF0CSgAA9PublicKeyV_tF":{"name":"receiverChain(for:)","abstract":"<p>Find a receiver chain for a sender key.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3add13receiverChainyAA08ReceiverG0C_tF":{"name":"add(receiverChain:)","abstract":"<p>Add a receiver chain to the state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3set8chainKey3foryAA012RatchetChainG0V_AA06PublicG0VtKF":{"name":"set(chainKey:for:)","abstract":"<p>Set the chain key for a given sender key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3set11messageKeys3foryAA014RatchetMessageG0V_AA9PublicKeyVtF":{"name":"set(messageKeys:for:)","abstract":"<p>Set the message keys for a given sender key</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC17removeMessageKeys3for3andAA07RatchetfG0VSgAA9PublicKeyV_s6UInt32VtF":{"name":"removeMessageKeys(for:and:)","abstract":"<p>Remove message keys</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC16receiverChainKey3forAA07RatchetfG0VSgAA06PublicG0V_tF":{"name":"receiverChainKey(for:)","abstract":"<p>Find the chain key of a receiver chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC3set16receiverChainKey3foryAA07RatchetgH0V_AA06PublicH0VtKF":{"name":"set(receiverChainKey:for:)","abstract":"<p>Set the chain key of a receiver chain</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC15aliceInitialize14ourIdentityKey0g4BaseI005theirhI00k9SignedPreI00k7OneTimemI00k7RatchetI0yAA0I4PairV_AlA06PublicI0VA2NSgANtKF":{"name":"aliceInitialize(ourIdentityKey:ourBaseKey:theirIdentityKey:theirSignedPreKey:theirOneTimePreKey:theirRatchetKey:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC13bobInitialize14ourIdentityKey0g9SignedPreI00g7OneTimekI00g7RatchetI005theirhI00o4BaseI0yAA0I4PairV_A2LSgAlA06PublicI0VAOtKF":{"name":"bobInitialize(ourIdentityKey:ourSignedPreKey:ourOneTimePreKey:ourRatchetKey:theirIdentityKey:theirBaseKey:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC19symmetricInitialize10parametersyAA19SymmetricParametersV_tKF":{"name":"symmetricInitialize(parameters:)","abstract":"<p>Initialise a session state.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC20calculateDerivedKeys33_5D3A64D6F61CC3F9A53400D8B7239046LL6secretAA14RatchetRootKeyV04rootT0_AA0r5ChainT0V05chainT0t10Foundation4DataV_tKF":{"name":"calculateDerivedKeys(secret:)","abstract":"<p>Create the root and chain key from the secret.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC11protoObjectAA0a1_C0Vvp":{"name":"protoObject","abstract":"<p>The state converted to a protobuf object</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC4fromAcA0a1_C0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a state from a protobuf object.</p>","parent_name":"SessionState"},"Classes/SessionState.html#/s:14SignalProtocol12SessionStateC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare tow session states.</p>","parent_name":"SessionState"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC17archivedStatesMax33_A95514CC36DAB0E56816F61B28ED9234LLSivpZ":{"name":"archivedStatesMax","abstract":"<p>The maximum number of archived states</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAA0C5StateCvp":{"name":"state","abstract":"<p>The current session</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC14previousStatesSayAA0C5StateCGvp":{"name":"previousStates","abstract":"<p>A list of previous sessions, sorted by most recent</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC7isFreshSbvp":{"name":"isFresh","abstract":"<p>Indicates if the session was just created</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC5stateAcA0C5StateCSg_tcfc":{"name":"init(state:)","abstract":"<p>Create a new session record for a session.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC03hasC5State7baseKeySbAA06PublicH0V_tF":{"name":"hasSessionState(baseKey:)","abstract":"<p>Check if the session record contains a specific state.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC19archiveCurrentStateyyF":{"name":"archiveCurrentState()","abstract":"<p>Create a new state and archive the old one.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC12promoteState5stateyAA0cF0C_tF":{"name":"promoteState(state:)","abstract":"<p>Make a state the currently active state.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC11removeState33_A95514CC36DAB0E56816F61B28ED9234LL3foryAA9PublicKeyV_tF":{"name":"removeState(for:)","abstract":"<p>Remove a state from the previous states.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC11protoObjectAA0a1_D0Vvp":{"name":"protoObject","abstract":"<p>Convert the record to a ProtoBuf object for storage</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC4fromAcA0a1_D0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a session record from a ProtoBuf object.</p>","parent_name":"SessionRecord"},"Classes/SessionRecord.html#/s:14SignalProtocol13SessionRecordC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two session records for equality.</p>","parent_name":"SessionRecord"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10ratchetKeyAA06PublicF0Vvp":{"name":"ratchetKey","abstract":"<p>The current ratchet key</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC8chainKeyAA07RatchetdF0Vvp":{"name":"chainKey","abstract":"<p>The current chain key</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC11messageKeys33_0614DCD4342E27833DC21CB7C25BAFFFLLSayAA014RatchetMessageF0VGvp":{"name":"messageKeys","abstract":"<p>The stored message keys for out-of-order messages</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10ratchetKey05chainF0AcA06PublicF0V_AA07RatchetdF0Vtcfc":{"name":"init(ratchetKey:chainKey:)","abstract":"<p>Create a receiver chain from the components.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC3add10messageKeyyAA18RatchetMessageKeysV_tF":{"name":"add(messageKey:)","abstract":"<p>Add a message key to the stored message keys.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC3has10messageKeySbAA18RatchetMessageKeysV_tF":{"name":"has(messageKey:)","abstract":"<p>Check if a message key already exists.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC10messageKey3forAA18RatchetMessageKeysVSgs6UInt32V_tF":{"name":"messageKey(for:)","abstract":"<p>Get a message key if it exists.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC16removeMessageKey3forAA07RatchetF4KeysVSgs6UInt32V_tF":{"name":"removeMessageKey(for:)","abstract":"<p>Remove a message key and return it.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC11protoObjectAA0A8_SessionV0D0Vvp":{"name":"protoObject","abstract":"<p>The receiver chain converted to a protobuf object</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC4fromAcA0A8_SessionV0D0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a receiver chain from a protobuf object.</p>","parent_name":"ReceiverChain"},"Classes/ReceiverChain.html#/s:14SignalProtocol13ReceiverChainC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two receiver chains for equality.</p>","parent_name":"ReceiverChain"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC07messageD7MaximumSivpZ":{"name":"messageKeyMaximum","abstract":"<p>The maximum number of message keys stored</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC5keyIds6UInt32Vvp":{"name":"keyId","abstract":"<p>The current key id</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC05chainD0AA0c5ChainD0Vvp":{"name":"chainKey","abstract":"<p>The chain key of the state used for key generation</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC015signaturePublicD0AA0gD0Vvp":{"name":"signaturePublicKey","abstract":"<p>The signature key</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC016signaturePrivateD0AA0gD0VSgvp":{"name":"signaturePrivateKey","abstract":"<p>The private part of the signature key, optional</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC11messageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLSayAA0c7MessageD0VGvp":{"name":"messageKeys","abstract":"<p>Dictionary of message keys indexed by iteration</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC5keyId05chainD0015signaturePublicD00i7PrivateD0ACs6UInt32V_AA0c5ChainD0VAA0jD0VAA0kD0VSgtcfc":{"name":"init(keyId:chainKey:signaturePublicKey:signaturePrivateKey:)","abstract":"<p>Create a new session state.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC3add07messageD015removingOldKeysyAA0c7MessageD0V_SbtF":{"name":"add(messageKey:removingOldKeys:)","abstract":"<p>Add a <code><a href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SenderMessageKey.html\">SenderMessageKey</a></code> to the keys which are stored to decrypt old (out of order) messages.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC07messageD03forAA0c7MessageD0VSgs6UInt32V_tF":{"name":"messageKey(for:)","abstract":"<p>Get the message key for the iteration, if it exists.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC20removeOldMessageKeys33_AF7143AD30AFC9DC8BE5D6A38410EEB0LLyyF":{"name":"removeOldMessageKeys()","abstract":"<p>Remove old message keys if the number is higher then the maximum.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC06senderD03forAA0c7MessageD0Vs6UInt32V_tKF":{"name":"senderKey(for:)","abstract":"<p>Get the sender key for the iteration of the chain.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC4fromAcA0a1_cdE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a SenderKeyState from a ProtoBuf object.</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC11protoObjectAA0a1_cdE0Vvp":{"name":"protoObject","abstract":"<p>The state converted to a ProtoBuf object</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyState.html#/s:14SignalProtocol14SenderKeyStateC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare tow states for equality</p>","parent_name":"SenderKeyState"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC9maxStates33_05759A2443B9A69949FACC9640EA70EFLLSivpZ":{"name":"maxStates","abstract":"<p>The maximum number of different states that are saved</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC6states33_05759A2443B9A69949FACC9640EA70EFLLSayAA0cD5StateCGvp":{"name":"states","abstract":"<p>The states that are saved by the record, sorted by most recent</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC5stateAA0cD5StateCSgvp":{"name":"state","abstract":"<p>The active state is the most recent, if any states exist</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC7isEmptySbvp":{"name":"isEmpty","abstract":"<p>Indicate if there are any states in this record</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordCACycfc":{"name":"init()","abstract":"<p>Create a fresh session record without any states.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC5state3forAA0cD5StateCSgs6UInt32V_tF":{"name":"state(for:)","abstract":"<p>Get the state for an id.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC03setcD02id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dK0VtF":{"name":"setSenderKey(id:iteration:chainKey:signatureKeyPair:)","abstract":"<p>Set a new sender key state and delete all previous states.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD0015signaturePublicD00k7PrivateD0ys6UInt32V_AK10Foundation4DataVAA0lD0VAA0mD0VSgtF":{"name":"addState(id:iteration:chainKey:signaturePublicKey:signaturePrivateKey:)","abstract":"<p>Add a new sender key state.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC8addState2id9iteration05chainD009signatureD4Pairys6UInt32V_AJ10Foundation4DataVAA0dL0VtF":{"name":"addState(id:iteration:chainKey:signatureKeyPair:)","abstract":"<p>Add a new sender key state.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC11protoObjectAA0a1_cdE0Vvp":{"name":"protoObject","abstract":"<p>The record converted to a ProtoBuf object for storage</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC4fromAcA0a1_cdE0V_tKcfc":{"name":"init(from:)","abstract":"<p>Create a record from a ProtoBuf object.</p>","parent_name":"SenderKeyRecord"},"Classes/SenderKeyRecord.html#/s:14SignalProtocol15SenderKeyRecordC2eeoiySbAC_ACtFZ":{"name":"==(_:_:)","abstract":"<p>Compare two records.</p>","parent_name":"SenderKeyRecord"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4typeAA0aC4TypeOvp":{"name":"type","abstract":"<p>The error type</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC7messageSSSgvp":{"name":"message","abstract":"<p>A decribing message accompaning the error</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC5causeACSgvp":{"name":"cause","abstract":"<p>If the error occured in a subfunction, then this variable can be used to construct an error trace.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC8functionSSvp":{"name":"function","abstract":"<p>The function were the error occured</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC4fileSSvp":{"name":"file","abstract":"<p>The file that the error occured in</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC__5cause4file8functionAcA0aC4TypeO_SSSgACSgS2Stcfc":{"name":"init(_:_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code>.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_ACS2Stcfc":{"name":"init(_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code> using an already exisiting <code>SignalError</code> from a subroutine.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC_5cause4file8functionACSS_s0C0_pS2Stcfc":{"name":"init(_:cause:file:function:)","abstract":"<p>Create a new <code>SignalError</code> using an already exisiting <code>Error</code> from a subroutine.</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC11descriptionSSvp":{"name":"description","abstract":"<p>A decription of the error, including all contained errors, without function and file names</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC16shortDescriptionSSvp":{"name":"shortDescription","abstract":"<p>A short decription of the error without the contained errors</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp":{"name":"longDescription","abstract":"<p>A decription of the error, including all contained errors, as well as function and file names</p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC5trace030_C35E3668D434E6A0E51B53E2B96C5L1ELLSSvp":{"name":"trace","abstract":"<p>The trace of the error which is used to build the <code><a href=\"36f8f5912051ae747ef441d6511ca4cbClasses/SignalError.html#/s:14SignalProtocol0A5ErrorC15longDescriptionSSvp\">longDescription</a></code></p>","parent_name":"SignalError"},"Classes/SignalError.html#/s:14SignalProtocol0A5ErrorC20localizedDescriptionSSvp":{"name":"localizedDescription","abstract":"<p>The description of the error</p>","parent_name":"SignalError"},"Classes/SignalError.html":{"name":"SignalError","abstract":"<p>All errors thrown by <code>SignalProtocolSwift</code> are <code>SignalError</code> objects.</p>"},"Classes/SenderKeyRecord.html":{"name":"SenderKeyRecord","abstract":"<p>Stores the states for a session.</p>"},"Classes/SenderKeyState.html":{"name":"SenderKeyState","abstract":"<p>A state of a group message session with a recipient,"},"Classes/ReceiverChain.html":{"name":"ReceiverChain","abstract":"<p>A receiver chain is the part of the ratchet that creates the message keys for the received messages.</p>"},"Classes/SessionRecord.html":{"name":"SessionRecord","abstract":"<p>The record of a session (and previous sessions) with another party.</p>"},"Classes/SessionState.html":{"name":"SessionState","abstract":"<p>A session state contains all data needed for communicating with a remote party.</p>"},"Classes.html":{"name":"Classes","abstract":"<p>The following classes are available globally.</p>"},"Enums.html":{"name":"Enumerations","abstract":"<p>The following enumerations are available globally.</p>"},"Functions.html":{"name":"Functions","abstract":"<p>The following functions are available globally.</p>"},"Protocols.html":{"name":"Protocols","abstract":"<p>The following protocols are available globally.</p>"},"Structs.html":{"name":"Structures","abstract":"<p>The following structures are available globally.</p>"},"Typealiases.html":{"name":"Type Aliases","abstract":"<p>The following type aliases are available globally.</p>"}} \ No newline at end of file diff --git a/Documentation/undocumented.json b/Documentation/undocumented.json index 97b5b93..2b756af 100644 --- a/Documentation/undocumented.json +++ b/Documentation/undocumented.json @@ -2,5 +2,5 @@ "warnings": [ ], - "source_directory": "/Users/User/Development/Github/LibSignalProtocolSwift" + "source_directory": "/Users/user/Development/LibSignalProtocolSwift" } \ No newline at end of file diff --git a/README.md b/README.md index e887227..ff3bf39 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ It somewhat mimics the functionality and structure of the [Signal Protocol C imp You can install `LibSignalProtocolSwift` through [Cocoapods](https://cocoapods.org), by adding the following to your `Podfile`: ````ruby -pod 'LibSignalProtocolSwift' +pod 'LibSignalProtocolSwift', '~> 1.3' ```` After installation the Framework can be accessed by importing it: diff --git a/Sources/Additional/SignalError.swift b/Sources/Additional/SignalError.swift index 633926a..5b3dc3a 100644 --- a/Sources/Additional/SignalError.swift +++ b/Sources/Additional/SignalError.swift @@ -30,6 +30,7 @@ public enum SignalErrorType: String { /// An invalid key produced an error case invalidKey = "Invalid key" + /// The initialization vector has the wrong length case invalidIV = "Invalid iv" /// The (key) id is invalid diff --git a/Sources/LocalStorage/GroupKeyStore.swift b/Sources/LocalStorage/GroupKeyStore.swift index 72b907a..b1afb1b 100644 --- a/Sources/LocalStorage/GroupKeyStore.swift +++ b/Sources/LocalStorage/GroupKeyStore.swift @@ -8,6 +8,9 @@ import Foundation +/** + A group key store stores the encryption keys for group messaging + */ public protocol GroupKeyStore: KeyStore { /// The type that distinguishes different groups and devices/users