Repo created
This commit is contained in:
parent
a629de6271
commit
3cef7c5092
2161 changed files with 246605 additions and 2 deletions
16
backend/demo/build.gradle.kts
Normal file
16
backend/demo/build.gradle.kts
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
@Suppress("DSL_SCOPE_VIOLATION")
|
||||
plugins {
|
||||
id(ThunderbirdPlugins.Library.jvm)
|
||||
alias(libs.plugins.ksp)
|
||||
alias(libs.plugins.android.lint)
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api(projects.backend.api)
|
||||
|
||||
implementation(libs.kotlinx.coroutines.core)
|
||||
implementation(libs.moshi)
|
||||
ksp(libs.moshi.kotlin.codegen)
|
||||
|
||||
testImplementation(projects.mail.testing)
|
||||
}
|
||||
|
|
@ -0,0 +1,210 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import com.fsck.k9.backend.api.Backend
|
||||
import com.fsck.k9.backend.api.BackendFolder.MoreMessages
|
||||
import com.fsck.k9.backend.api.BackendPusher
|
||||
import com.fsck.k9.backend.api.BackendPusherCallback
|
||||
import com.fsck.k9.backend.api.BackendStorage
|
||||
import com.fsck.k9.backend.api.FolderInfo
|
||||
import com.fsck.k9.backend.api.SyncConfig
|
||||
import com.fsck.k9.backend.api.SyncListener
|
||||
import com.fsck.k9.backend.api.updateFolders
|
||||
import com.fsck.k9.mail.BodyFactory
|
||||
import com.fsck.k9.mail.Flag
|
||||
import com.fsck.k9.mail.FolderType
|
||||
import com.fsck.k9.mail.Message
|
||||
import com.fsck.k9.mail.MessageDownloadState
|
||||
import com.fsck.k9.mail.Part
|
||||
import com.fsck.k9.mail.internet.MimeMessage
|
||||
import com.squareup.moshi.Moshi
|
||||
import com.squareup.moshi.adapter
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.InputStream
|
||||
import java.util.UUID
|
||||
import okio.buffer
|
||||
import okio.source
|
||||
|
||||
class DemoBackend(private val backendStorage: BackendStorage) : Backend {
|
||||
private val messageStoreInfo by lazy { readMessageStoreInfo() }
|
||||
|
||||
override val supportsFlags: Boolean = true
|
||||
override val supportsExpunge: Boolean = false
|
||||
override val supportsMove: Boolean = true
|
||||
override val supportsCopy: Boolean = true
|
||||
override val supportsUpload: Boolean = true
|
||||
override val supportsTrashFolder: Boolean = true
|
||||
override val supportsSearchByDate: Boolean = false
|
||||
override val isPushCapable: Boolean = false
|
||||
|
||||
override fun refreshFolderList() {
|
||||
val localFolderServerIds = backendStorage.getFolderServerIds().toSet()
|
||||
|
||||
backendStorage.updateFolders {
|
||||
val remoteFolderServerIds = messageStoreInfo.keys
|
||||
val foldersServerIdsToCreate = remoteFolderServerIds - localFolderServerIds
|
||||
val foldersToCreate = foldersServerIdsToCreate.mapNotNull { folderServerId ->
|
||||
messageStoreInfo[folderServerId]?.let { folderData ->
|
||||
FolderInfo(folderServerId, folderData.name, folderData.type)
|
||||
}
|
||||
}
|
||||
createFolders(foldersToCreate)
|
||||
|
||||
val folderServerIdsToRemove = (localFolderServerIds - remoteFolderServerIds).toList()
|
||||
deleteFolders(folderServerIdsToRemove)
|
||||
}
|
||||
}
|
||||
|
||||
override fun sync(folderServerId: String, syncConfig: SyncConfig, listener: SyncListener) {
|
||||
listener.syncStarted(folderServerId)
|
||||
|
||||
val folderData = messageStoreInfo[folderServerId]
|
||||
if (folderData == null) {
|
||||
listener.syncFailed(folderServerId, "Folder $folderServerId doesn't exist", null)
|
||||
return
|
||||
}
|
||||
|
||||
val backendFolder = backendStorage.getFolder(folderServerId)
|
||||
|
||||
val localMessageServerIds = backendFolder.getMessageServerIds()
|
||||
if (localMessageServerIds.isNotEmpty()) {
|
||||
listener.syncFinished(folderServerId)
|
||||
return
|
||||
}
|
||||
|
||||
for (messageServerId in folderData.messageServerIds) {
|
||||
val message = loadMessage(folderServerId, messageServerId)
|
||||
backendFolder.saveMessage(message, MessageDownloadState.FULL)
|
||||
listener.syncNewMessage(folderServerId, messageServerId, isOldMessage = false)
|
||||
}
|
||||
|
||||
backendFolder.setMoreMessages(MoreMessages.FALSE)
|
||||
|
||||
listener.syncFinished(folderServerId)
|
||||
}
|
||||
|
||||
override fun downloadMessage(syncConfig: SyncConfig, folderServerId: String, messageServerId: String) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun downloadMessageStructure(folderServerId: String, messageServerId: String) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun downloadCompleteMessage(folderServerId: String, messageServerId: String) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun setFlag(folderServerId: String, messageServerIds: List<String>, flag: Flag, newState: Boolean) = Unit
|
||||
|
||||
override fun markAllAsRead(folderServerId: String) = Unit
|
||||
|
||||
override fun expunge(folderServerId: String) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun expungeMessages(folderServerId: String, messageServerIds: List<String>) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun deleteMessages(folderServerId: String, messageServerIds: List<String>) = Unit
|
||||
|
||||
override fun deleteAllMessages(folderServerId: String) = Unit
|
||||
|
||||
override fun moveMessages(
|
||||
sourceFolderServerId: String,
|
||||
targetFolderServerId: String,
|
||||
messageServerIds: List<String>
|
||||
): Map<String, String> {
|
||||
// We do just enough to simulate a successful operation on the server.
|
||||
return messageServerIds.associateWith { createNewServerId() }
|
||||
}
|
||||
|
||||
override fun moveMessagesAndMarkAsRead(
|
||||
sourceFolderServerId: String,
|
||||
targetFolderServerId: String,
|
||||
messageServerIds: List<String>
|
||||
): Map<String, String> {
|
||||
// We do just enough to simulate a successful operation on the server.
|
||||
return messageServerIds.associateWith { createNewServerId() }
|
||||
}
|
||||
|
||||
override fun copyMessages(
|
||||
sourceFolderServerId: String,
|
||||
targetFolderServerId: String,
|
||||
messageServerIds: List<String>
|
||||
): Map<String, String> {
|
||||
// We do just enough to simulate a successful operation on the server.
|
||||
return messageServerIds.associateWith { createNewServerId() }
|
||||
}
|
||||
|
||||
override fun search(
|
||||
folderServerId: String,
|
||||
query: String?,
|
||||
requiredFlags: Set<Flag>?,
|
||||
forbiddenFlags: Set<Flag>?,
|
||||
performFullTextSearch: Boolean
|
||||
): List<String> {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun fetchPart(folderServerId: String, messageServerId: String, part: Part, bodyFactory: BodyFactory) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun findByMessageId(folderServerId: String, messageId: String): String? {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun uploadMessage(folderServerId: String, message: Message): String {
|
||||
return createNewServerId()
|
||||
}
|
||||
|
||||
override fun checkIncomingServerSettings() = Unit
|
||||
|
||||
override fun checkOutgoingServerSettings() = Unit
|
||||
|
||||
override fun sendMessage(message: Message) {
|
||||
val inboxServerId = messageStoreInfo.filterValues { it.type == FolderType.INBOX }.keys.first()
|
||||
val backendFolder = backendStorage.getFolder(inboxServerId)
|
||||
|
||||
val newMessage = message.copy(uid = createNewServerId())
|
||||
backendFolder.saveMessage(newMessage, MessageDownloadState.FULL)
|
||||
}
|
||||
|
||||
override fun createPusher(callback: BackendPusherCallback): BackendPusher {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
private fun createNewServerId() = UUID.randomUUID().toString()
|
||||
|
||||
private fun Message.copy(uid: String): MimeMessage {
|
||||
val outputStream = ByteArrayOutputStream()
|
||||
writeTo(outputStream)
|
||||
val inputStream = ByteArrayInputStream(outputStream.toByteArray())
|
||||
return MimeMessage.parseMimeMessage(inputStream, false).apply {
|
||||
this.uid = uid
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private fun readMessageStoreInfo(): MessageStoreInfo {
|
||||
return getResourceAsStream("/contents.json").source().buffer().use { bufferedSource ->
|
||||
val moshi = Moshi.Builder().build()
|
||||
val adapter = moshi.adapter<MessageStoreInfo>()
|
||||
adapter.fromJson(bufferedSource)
|
||||
} ?: error("Couldn't read message store info")
|
||||
}
|
||||
|
||||
private fun loadMessage(folderServerId: String, messageServerId: String): Message {
|
||||
return getResourceAsStream("/$folderServerId/$messageServerId.eml").use { inputStream ->
|
||||
MimeMessage.parseMimeMessage(inputStream, false).apply {
|
||||
uid = messageServerId
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getResourceAsStream(name: String): InputStream {
|
||||
return DemoBackend::class.java.getResourceAsStream(name) ?: error("Resource '$name' not found")
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import com.fsck.k9.mail.FolderType
|
||||
import com.squareup.moshi.JsonClass
|
||||
|
||||
typealias MessageStoreInfo = Map<String, FolderData>
|
||||
|
||||
@JsonClass(generateAdapter = true)
|
||||
data class FolderData(
|
||||
val name: String,
|
||||
val type: FolderType,
|
||||
val messageServerIds: List<String>
|
||||
)
|
||||
60
backend/demo/src/main/resources/contents.json
Normal file
60
backend/demo/src/main/resources/contents.json
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"inbox": {
|
||||
"name": "Inbox",
|
||||
"type": "INBOX",
|
||||
"messageServerIds": [
|
||||
"intro",
|
||||
"many_recipients",
|
||||
"thread_1",
|
||||
"thread_2",
|
||||
"inline_image_data_uri",
|
||||
"inline_image_attachment"
|
||||
]
|
||||
},
|
||||
"trash": {
|
||||
"name": "Trash",
|
||||
"type": "TRASH",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"drafts": {
|
||||
"name": "Drafts",
|
||||
"type": "DRAFTS",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"sent": {
|
||||
"name": "Sent",
|
||||
"type": "SENT",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"archive": {
|
||||
"name": "Archive",
|
||||
"type": "ARCHIVE",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"spam": {
|
||||
"name": "Spam",
|
||||
"type": "SPAM",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"turing": {
|
||||
"name": "Turing Awards",
|
||||
"type": "REGULAR",
|
||||
"messageServerIds": [
|
||||
"turing_award_1966",
|
||||
"turing_award_1967",
|
||||
"turing_award_1968",
|
||||
"turing_award_1970",
|
||||
"turing_award_1971",
|
||||
"turing_award_1972",
|
||||
"turing_award_1975",
|
||||
"turing_award_1977",
|
||||
"turing_award_1978",
|
||||
"turing_award_1979",
|
||||
"turing_award_1981",
|
||||
"turing_award_1983",
|
||||
"turing_award_1987",
|
||||
"turing_award_1991",
|
||||
"turing_award_1996"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,248 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Test data" <data@k9mail.example>
|
||||
Date: Tue, 14 Feb 2023 15:00:00 +0100
|
||||
Message-ID: <inbox-6@k9mail.example>
|
||||
Subject: Inline image attachment
|
||||
To: User <user@k9mail.example>
|
||||
Content-Type: multipart/related; boundary=BOUNDARY
|
||||
|
||||
--BOUNDARY
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
|
||||
<html>
|
||||
<body>
|
||||
<p>Inline image using a cid: URI to reference an attached image:</p>
|
||||
|
||||
<img src="cid:part1@k9mail.example">
|
||||
</body>
|
||||
</html>
|
||||
--BOUNDARY
|
||||
Content-Type: image/png; name="k9mail.png"
|
||||
Content-Transfer-Encoding: base64
|
||||
Content-ID: <part1@k9mail.example>
|
||||
Content-Disposition: inline; filename="k9mail.png"
|
||||
|
||||
iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA
|
||||
GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJztfWmwHMWV7pfVy110
|
||||
tSAksQkMxggPxiAWs5jdBoQRYJZnwGbH7834hcfjmYjx85t4fuOZsSPsF94mwmPDgM1idoMQizQI
|
||||
gVglEAIkgSS0gCWBQNvVXbpv712V+X5UZVdWdVV3VVZWL5d7iFI3ffOczMr6zsmT52RmARM0QZ9i
|
||||
Iu1ugEKK+15YzPJV00R/BKBuVoB2t73TADDRHxLU7k6TIRLgexzEAnxvB030RwRKtrsBIYh4fLp/
|
||||
c39XQV4Pl6H+Qbf6wU/0hwLqlhHA/ZC9Ls1VVhXxB0lhP2ivSywbN030hyLqBgVwP2zN+kxY3zU4
|
||||
H3wcJD5Yal2G8P+tfOgT/aGQusUFEh92wnVpcD54QN2DFx8ihfNha9YnrN/E8nHTRH8ook5XAPEB
|
||||
8oebBJA897LLZpx9/tdvnzJ18hnpVLpX00gdkxcxAGDWcyGNcSGWZZShXKkWs7nc8pcfffhvXnll
|
||||
6YirfdwCEsT34H3748tf+9r+X7nwytsnT518Rk8q3acl/O/N0QdNdIOXdXcVpQzlil7I5MaWr1jw
|
||||
5++0qT8iU6e7QNzS8YedApD663/85y8f9cUvPs4oTRfLFVQNHdQI1sfiwychFEDTCJLJJPp60khq
|
||||
ifKmDe9c+Ydf/PR1AFXrEt2AOBXAsz+O/MKxCwxd7ymWK9ANHZT5N6F2X03u31HWRRohSCWT6O/p
|
||||
QSKZKG1ct/aqe379s1b3R2RKtLsBDYg/HdHSpc68+OJZp5934bJCsdRbKFVgUOr1fIJV0AwAgmDG
|
||||
AMOgKFeq0KmRPPDgg68oDA7fs2PHtjLqfd44DItnf5x6wQUzz/jKvGVjhWJfvlyCQam/hDqJAZrp
|
||||
07kMgEEpSpUKdN1IHjL7kMsLgyP3trA/lJDWvEhbye3rJs+df+VvC8VSf1U33U0/C+VFocv6ULWq
|
||||
I18s93/12m/9FiYQOSjjnHgCHv1x/mVX/zZXKPVXdD3GahtTRdcxli9NOvcb17S6PyJTt8wBar5u
|
||||
UksdW9GNWoEwxl9l2UpVRzqVOs5qlyFcrZgD1PpD01LHlqt6rcIglbMQQ2bQkmVdR18y9UW0tj8i
|
||||
U6crAOCMaiR1nc6os+JhfCDR/2/G1+Tvhm7MhNmHVaGNIXwQKXL1hy70R8B+kOivIFTR9Xb0RyTq
|
||||
VBfIK6mTAJBkYOl2Nkwkqy1eQ77qod+3PyhDD29NO8mMi7IetKY/lFGnjwB1D52B1LoyTDQD7rJB
|
||||
eRoQNTHn9bDjIi8lsEYzu0A4cf4UdvbKzA5pZX9Epk4dAUTiD5tfUhTa/w8+9HslnuKkuv6Iax4k
|
||||
Sa3uj0jULQrgXt8STaAC6y9Qq62d8v5QTF1j/YHO7ECgPoVf16EhrXSc5G6b6uUHXjKjA0ytERCf
|
||||
RSv6Qxl1qgJ4kXQHtkBZ2vFw469Tvs86Euxe1OmT4DqqpRhjiGXXynbGyBKIGOy4frtyAGHLdhJ1
|
||||
kwKY2KQGQLTwIFUY/7eL1ULc7Xj+dn+EMbgx5QDAmFi+a/ShU10gd2antv5cr1Yroa1/TBZdr1bF
|
||||
dS9ebVZF/v2hV8thhcRVlupGCa3pD2XUqQogktihtFQqD7uzK0EvjZCGfwcAwlhgecVycRj1O6Pi
|
||||
Jkd/FEvl4XAdQawrTNlgV7Gcb0d/RKJuUYDa5ovMyNB7uhFs4Ves1t8wkBse2QDnxpBWKUCtzuzw
|
||||
8EYj7EK4GKaoRlXH2Ojoe2h9f0SiTl0O7ZXxTABIZgcHVx125JzrUr09KU0Lp7+q4v+GYSA7Mlx8
|
||||
5qF7b8hlR3IAKgB0mIu/4njwvv0xsnv3G4d+7vPXpXt6m/eHuGKuGYW4A6NSxVh2tPDsw/e1qj+U
|
||||
UacqACd31jMxOrxP7x2YvGbqtOkXg7GklkhA48O1QG7rH2bzi/ffKahhoFwsIJfNltevXfU/Nr71
|
||||
+lYAZXg/8Dgeel1/ZEeHjf4pU9ZMnrrfxYzRJCEJEI00vl8VdoAxGLqOcrGA/Fi2vGHNqr/evHpl
|
||||
q/sjMnVyvFZ82CkAPdbVC6Bv9uGfm3Xu5df+pG+g75QE0XqIq3/rAR1cAbywwwBQxkrFQv7NZx++
|
||||
/0eDu3YMAigCKMF86GXYO6HiGgW8+qMPQO+Bsw+fdd4V1/60b3L/yRpIL/G639pW0OaV2eFS78IM
|
||||
DJSiWC4XVj33yAP/d3DXjn1obX8ooU5XAAJ7uHcrQS+AtPV7Es1T8OLSgZoLceHlVz/dyPo/9+Sj
|
||||
82Fv8+PWrSRc4sPma+DjsHhB+qPX+n/eL6mvXnrlYsB/hHth0cJLYVtrcVO7V/sdE3CY96zD2Set
|
||||
6g8l1Ol5ALGzDZidzYHOf9fhPBGhkVInYIMohWAPpQrzAYvgr1gXB0Crhnq//hD7hP89aDuqwsXB
|
||||
ajQoL9bP28D7ptX9EZnarQDNRiAxuSk+dG4NKaydUbBBoLn43fJ4eQZY7g5jjVrCLZyoBF5+LiyZ
|
||||
RPhUTY36QyzDP+2+YIBPk7iCc/DqqAet+P8c2FQor6Me/JwvSH+0TUlaqQB+HdCoY/jfeAcZrt9S
|
||||
qFcKPxeIK0gStvUnAXqeW0cOfD688wfPrWWYGIssefWH195bMVrUDF383kQl4AB3E3NdHOxR+sNP
|
||||
OVqiFK1QAD/r5PV3P3738C52cpCDoMQQoiHwpZh4ioJ3SwzUuwlewzyXH5f1F1sp9ocB5/1xa5wA
|
||||
kGLM5f/Xt4xbcq4EjdwXMavrPhhLtj+Yx3eRJ1ZFiFMB3GD0stBBFMGLX1QGwN9iAc4zMhNW2QT4
|
||||
A2ueKHP71VyBuGxxmAdifmCo7w9+f6JFtoHI74+7efWtc/vz4sSV/92L3P0igj5If/gBX7z8yiuj
|
||||
uBTA6yH5fXrxNZPndzWTwZWgFk1homX07mL3kYM8d8LnIAm0DvycvPrXq50JxlizFaCcj/cJhbM3
|
||||
3M/ILUx8lm7wBgE/4JxXuD95ef8nFIHiUAA3KN0PJ4HGStBIrvvTL9zp9ZsIDB46TVKrTxtMBlLC
|
||||
xR8Mn0uI0ZZWT+S8Jrt8flO7DEZ9Q7wCD+fjowdXbr9QqNdv7n4I2h9eoBePVYn1sF3VvqoX8Pkp
|
||||
AYm3Trrs9M/vf+Df9w5MPpn0pCaRdCoFK33v8FO5MImj+4LcEKv9I8cTqLwjCx1EtqWIAaSL6/+b
|
||||
lrX+DSRXbEcA4aHa4Xd/hgFW0auoVHPFfOGNDaO7/uPUtYtfR71bFssiO5UK4AZ/zbKsPPmS0044
|
||||
6LO/T02d8hnki0C+AFQNoKoDjHqDP2DT5BUgJIhC1OEEUkjgBSobrB2m2BCKZbUjTJ9ELqtpQCoB
|
||||
pJLAQD8w0IdKJrdzzb6d3zl99ZMr4IwwKVcCVQrA5dQObLKu9NC5t/6/6QcfdAtGMhrGcnXNdlvj
|
||||
MI2St+QxK4zkGiTVbYl9ZIlDWQiAKQMg+0+jQ7t33zFjxX0/gh2B40qg7Ph1lQrALT/3P9PFC7/z
|
||||
SO/UyV/B7iHAdWgrq/sSrkEdC36xvGLrbxaVVRbFihhbm3nfJYCDZ6CQLzw/6cU7vwk7T8HXFykZ
|
||||
BVTsBxBdH+7zp4bO+fbPevv7zsPOQW/wezQ/TvBLU9z7g0P78zKyg/dQmHbE1e8EBGAU+GQv+tM9
|
||||
5w+eccPPYQcueBDFLwgSilRuiOHgT7524qWnT5+x380YHHE0sIZ5D+DLgj8oSVv/sOXDWv+YSFZZ
|
||||
VFNkZdk7hBnTpt+07JgLT4HtWitbxh9VAUTfn48AqZMOPOxX2DvsCLFGdXlqrBL8UV2fjqEQo0Ws
|
||||
FLOy1NGufckzDj781zBHATGMDkTsjqia5I76pF6c+7WzPjsw/X+iWCKAy+q3Afw2b7iH1nG+v1A+
|
||||
CMUV/RFlKy/rpwKMIZFKTz9n6qwV9+75YAcU7jFQNQeobdQ4dupBNyE7pjUDfrvA/2mw/nG6PzIu
|
||||
TbiyPqUzY9rxAzNugDkKKDt7VEUmmOM5CSAxkEwcgyoF8enUMBMywOxwt6ww4CcS4I/CE9T6k5CA
|
||||
dqfBg1DYvg6ceSHh2h24Faxx2X6mfQH2XNO9DFyKoiqAOx2fJKXKNC8TFPZhAN6WOE7L76bgD64z
|
||||
R4tARa3PWOYVik+h0yrGVDj3fsD6lH4AUVwgN/gTABJJkpjqLES6BvzScwVeT8y+fze6PyrbkdTI
|
||||
dHjv/pNukkoXiABIauZbQqRAD4jRIjXgD1XvuJorxBGGjXuu0Li0ZtBeKM4DqHCBHBcxRI81aCs0
|
||||
0JsvgfHVkwEwaK+shvbIC8BQNvxk2aOBYUmKpxutv0WxW/QZ00C/eSHoeScCALSlq6Dd+SRgCG/6
|
||||
DEJmQtXr1UvSVkjVcmjuBgXZYlhHxi2XgF52Fvh9GBefAeMrX0Ji0Qpoj70A5EpNZXiNHEF7JnKY
|
||||
lLgPZWnAE7YOifIEAdsj6f4EvteBftBrzwf9+tlAr/1qN+Oqc8FAoN2+IHQ7IGAtDJMfRVEA4vpu
|
||||
XhJAouedADDncgnSkwa96jzQeadBe+wFaE8vB8pVXxnml+h+f1yuT0usv8ShwcFRFEJ2Txr062eB
|
||||
XXM+MLnf+tHJTy84Gdptj9X+RoIbci/3R3oUUDUH8PrekPx9fZeIgT7Qm+eDXnImtIeXQnv+LcDr
|
||||
PcEtAr+bAh+32KFzhUBFgxZMJEDnnQrjW/OAmVNbsRykI+YAjX9wUW0oFR5AYtnboF8/u3GHzZwG
|
||||
9r2rQa88D9p9z4AsfxeMsZbmCGT5wsbxw+YJ7MYECz2Y7SHh5DeK0RMCdtbxoDfPB5s9q+aANWqN
|
||||
9tyb5t8Zb01gZXEX7Jg5QMM78LP4AJC4ezGIpoHO/zKQaLw6gx0yE8b/vhF4fwe0exaDrNniaIQM
|
||||
SY8YMUx8ZSj2yW+D0YKdeDTorZeAzTnM0RZfQBsGtKeXQ7vjCaEdoUdRJREgLkiWxM0vvQAmAZjM
|
||||
Trtpo1ioEfDdDWCz9gO75nzQeaei0Z48B6je2w7t3kXQ1m8L3HAVeYKgrk/cvn+NJ0x5H1PaqD3u
|
||||
smzOoaC3Xgp24tGu8n7Wn4G8shbaPYtAdgy6ZAfsS8agvfvIXwEYA5CHeUqfe5NMKIpNAcIA303s
|
||||
iINAr70A7Mzj6//mIZMQArJ2M7Q7nwLZtqthozsZ/DI8Yk8EB3QYZXG2hc2eabo6Z8+tq5FZ/7oB
|
||||
TVZvhvbHp0C27PCRHXwk7XgFoHwEkAC+m9ixR4DedAnYMYd7T3bdQGQMZPm70O56GmTPcL08N3/Q
|
||||
djSrNwhPyHo6yfoDAJkxFfT6i8zR2cdNdSsA2fIRtD8uAlm9yactIay/1ZaOVwDj1Bs3ehWOUhE9
|
||||
YQ7oty8FO/wgW14jEBqGmWz5038BmTyA1oLfzSdrbQPVwdsVuE0h5U/qAbvmAtArzgbS6SblzRZp
|
||||
Hw9Cu3sRyKvv+BpCGfeHAMoVQP25QBHDig5RXM7bm5BYsxnsjONg3HoJyAH7Nw7jaRroRaeBnn08
|
||||
tMWvgzyyzDyJQqZdbvAHCB9GdX0Cl+ftkmFqRj0p0MvOAr3mfBCfWH6d6MFRJB5YAm3JSsBogkeJ
|
||||
nEUcpN4FOuXGjSqm5343TZIa6AWngt70NWDqpGByRnPQFrwEbeFLIHpwQ8GEf0MN1QhnBKLPFRRG
|
||||
o3gs/4aLgOlTgo14uQLIw89Be/wVkEqleXmEdH+EdpN1f+5sF4id4u0CBSW/yXNdQyf1gl78ZdBr
|
||||
vwr09/rLEsSQvSPQHnnetFC0sUWpB3J4BYh14hsC/GbxJvIJATvrONCbLwGbPcsu30gByhVoT7wM
|
||||
8vDzwFgh9P2GdX+Aca4Avla/EdPUSaBXngt61blAQjhlzvHFla7+cBe0B5eCvPKOfzs6FPxmcYlR
|
||||
qUEd7ISjzTnWnEMd5X3BbxjQnn0D2p+eAYYyoZdVRNmuOS4VQAr4bhkH7gd29fkw5p1Wx+gnh7y3
|
||||
HdrdT4MIOYSOB7+DJ5r1Z3MOBf32JWAnfN67vFeU7VVnLL+R/Ebtl237uFIAFcB3y2NHzQa95WKw
|
||||
uUcHlkXWboF2x1PAtp2ICv6gddY4WmT9HQnH2TNNV+es4+sSjn7Wn2zYBu0PTziMhZ98pe13ye56
|
||||
BfDz8aM2qE6ZTjzaTNgcNTsYPwPI8rVmwmbPSPD0POzwH9Dh1j9ILN9l/cn2T6Dd9yzIK2ubyw/Y
|
||||
nijKq1oBlIdB/dZ2BwV+2GCXl1wCAG9vgrZ6szmxu/FisENmNpbBAHbG8aCnH4vEc29Cu3sxkM0H
|
||||
rN8GQZD2u8EfnofA9wgRDx4y0Avj2gtALxdi+R7PQbT+bPcQtAeXQlvyOkC9axMBGvYeghALIVuW
|
||||
Yn1FkqPhii1+TX6jaBFjIK+8g8Rr60AvPBX0unnA9CkeMgT+RMLMIZwzF9qiFdAefh4olP3rD+n3
|
||||
83aFppA8DABSSdArzga75gJgoC9YHdkctMdehPbYi45l5yraFMr3DydZmtTnAb50g+ACqQe9Q2rY
|
||||
pdDWRg36ja8CA33BsrwZK4ew4CWAuvYhRF1TJMUTgCupwbjwFNDrvwYyY2rz8gBYsQztyVeRePA5
|
||||
oFAM3KY4Q59AfR+R9Y929hyAful63zlAXAmy0HIn98H4xvmgXz8TSKVMGc0SPntHoD38HLQlK82H
|
||||
04ngJwA7ay6Mm+fXXL6meSyDQluyEuSup4FMPr5lGxEnv5y6TgFUgB6IYPX9ZDFmTgq/NQ/sotPA
|
||||
31TTlLbvhPbAs+Y6lxD1qxkx/LnMWP4lYHMOtRe8NaqEAmT5O+a6/D3DktY8bHn5yS+nrlAAVaDn
|
||||
pMTq+8gihJhhwRvng515XEPUOMC4YTsS9zwNsn5rsHpjAr8dyz9a4LHq8amIrNkM7baF4EvH5a15
|
||||
2PLRrD/QBQrAGrhAYUllnsBTidwx8KMOBb11fi2H0Iifs5K1W6Dd/gTIdv99CHG4Ps5YvsjjbJ9I
|
||||
ZP12aHc9CbLOVlp5ax62fHTrD3SBAjSaAwQlle5OTV4T8DvKz51jbvM7yrk0wOZ1MVCY+xD+8CTI
|
||||
Xuc+BBnwmyziiCFwzpgKet1FoBedWlv6YfN4t49s3wnt/mdBXnbG8qUUs43WHwC0jleAk6+LthYI
|
||||
UAb8msxmkR5PMheHGTfOBztkhsDfgIUyaEtWQrt3MZDJy4PfwWdxDvSBXnM+6BXnAOn66LWn9d8z
|
||||
Au2hpdCeed1z8Z/U/oM2Wn8A0DY81tkKwCQUQKWr45Dpkhsc/IIMTTNzCNfPCxxSRLEM8vQKaA88
|
||||
CxTNQ72kXZ+eFOjl54BeewEw0GjVq8VDCJDJQ3t0WcNYvkNhgratBda/mXyyocNHgKAK4GftVTQs
|
||||
rMsTRAZJp0EvPxv0mvN9gVjHm8lDe+xFJB4PkFRy1UmSCdB5p4FefxHQRPFqwClVoD21HNr9tuL5
|
||||
81j31bRVzra10/oDXa4ADkgqtvgO+RGsfk2OX9RmoA+UbxFMeSfS616TuncY2oPPQ1vyWsN9CIwx
|
||||
8DN22C2Xgs32X77haKtuQFvyBhJ3LwIyuWA8TG5O0k7rD3ShAjQDfdRGOOqJaPW95PhK4JPRec7J
|
||||
aKN3BJNtu6A9sMRzYRkDarF8WGfsNG0rtZYn3/kktN31hwB48tT+6RzrbxYPJr8rFCAI6KNWXhPv
|
||||
U0+s4Bd5Zs8CvWk+2FnHgQl7hhvVTzZsM1edWjkEOucw0FsuATtxTuB2k9WbQW5bCLJtZ0hLbvEH
|
||||
LS8wtdv6A12gAPSkbzWcA6hMkqmy+l6ywkqhRx1mJqTmHhWsDYyBvPqOafmtBFwQPrJmC7Q/LgI2
|
||||
fxgemNY/sbo+JlMs1h9QrwDql0N7/Eaa/F2qDh/gh5XvKSukHAYAWz6E9sPfASf9lZlMs3IIvkQI
|
||||
6NlzHSNGozrJlh3Q7loE8vamCMupAxR084Sow2xWuErClldNsRyLonopRE20UIdIQY8r8ZQXweq7
|
||||
ZRAAeOs9JN7eaB0WeynY7BkNmAO0ec8wtIeeg/bMa7aNk8gthPX7A7fPXUXN+gfkjREvQUi5Amgx
|
||||
3E7NEjHRJsm7O1ymKY8IEuVlENcfyCvvQHttvbm34Lp5daFMxuxth573sS8D7X7rjB2d1lrId1SF
|
||||
TazZJzaH4ZFTmDBzhTB1xDFaxLohJiqpnOA2kikF/iD8umFuqnlulSOZJd5N3b1Y6/K1B5fWbcSR
|
||||
efxSk1iBJ1Q9CDHxrZVvL3WkAvg9gCjA95Ib1eUJLKNcNc8jWrwCxrXng11xDpBKOu9HN6A9uwqa
|
||||
tS6/Ub1xWuUoPKHGpQ6ZK3SMAvhZe0AR8F2yWwZ+kT9XhHbnU9AWvgx2w8Wg804BNM1al/8kiE8s
|
||||
Xxb8MlZWikd6tAhHcYwWbVeAOIFfk69gcV1k8Av8ZF8W5DcPgzy6zPz/jwf9GUU+yfpi50Fw1wdW
|
||||
HXEqWBhqiwI0Aj2gEPiuOmSlKgW/wN0U+AgfhxcYw/NF4AlcPFRpm+KaK7TkWBTmLODJJ4I+qsar
|
||||
iO37yZLKEQjgD3KciV/dgflC5gjEuuR4gt9X2KNO4j4aRbkCcBiLFrjh8lYF1r5WlUd9Ua0+548W
|
||||
Jg3pItTxhuST4ZGIFJGwGV+JtoHEGylq2cFYIqkEPaDW3anJU5ogCw/+Vvn9kKxLtp5w9xN/kqwl
|
||||
cwDVgOfkmyeIKrPLwd+6SFG49T5hKL5pr5NiUYC4AM+pFcCXldcO8EOSL0qkKKzrA4S9p9YskVA/
|
||||
B4gR/HEAvyZXRbTIIaN14G9HpChsPTIjTCuo7XmAIORnqZQA3yVbTY6gheCv1RmSL5K7FN76h6PW
|
||||
LZBryXLoSHIaAD9KXX5WP6xML/DLh0nlQ6xhSFQauZBnWJ6Q9bSQYn1LpBR7AzkqrILKiJG35ZeL
|
||||
80dLrsnxhauwRTwttP5AjHmAMNQoZ6CyM8R4d1TZUWL89fyt4Y3ER2SWYIfkYSyW5fSNqG1zgEaW
|
||||
HlAPfFUT56j+vltGqyw/JPmkw6RMrp5WU8sUwHGDLQC9o87YEmTdA37pSJEMSXk+7dkZFpsCBAE8
|
||||
EM8DUQ38msw2gh8ReKUjRRJ8UjwxrvZsRu1ZCqG6Ul633Qhl9akAvluO1DxJwagRmi9kfVFcn3ZY
|
||||
f6BVSyFilt+6BFn3gr8loOwi14dTLCOA+4biGuCaAV+2Xm8XKtxSZluE0w0LnWdQkCOQ4g1J/DZl
|
||||
cgvtpK44FcJNNQvFnLZKVZ5AlBvJ6kM4+UFGBmOhw48CMyDBa5/UEHaZs4Ql74AlEl2xFIKTn8VQ
|
||||
liCrG0migd+UIdmedrhMsnkNCTcmzGlwYj2qqeMVoFG+QNVYo8rXr8mKAP62zhcgsY4pwgQ7bD1x
|
||||
+BYdqQCtAH2tHkVW35QXLeza7smy1CK+kPXZdYWvJw7qGAVof2ZYjdU3ZUVrU9eESSXdmJbwBKS2
|
||||
KkArQe9XXxTg2zIj+vtCm1oJfjjqbY3fH5bicn04tVQBmgEeiDlJFhPwTXkR5EQBf4T6ZSe9Ufz+
|
||||
TnF9OMWWCWbOHxvyiJ2i+qb93B2ZmL5Dpgv8UhM7oW1SOQKLP1p+IeRRLbK5BYl2xn0kChDLCOBh
|
||||
zVxq34rMn8NHJbxeBVZfGJIjLbGIKCfsycrevOEnvTJ1msuc4+eRIVUKwNBAUVuV6vbPDEdvQb0L
|
||||
FV1OW3IE1qfstk3Z8KpinoZ4C0NRFaCuEQxoieZ6NqKDge+W1TbwS4Q7UeOTrU9NXbS23K6+GllS
|
||||
gVWxAcww39vUEmKwAMEvi0iEJQxu+RPgl5v0olZf+Lr8eHSgwIu5PqUpigIw13cGgJWpnonWpOaV
|
||||
OoBvERH+U1KHIF/W167Jc8mSliHJrwL8rVjq0AzNZWaMwhv80oqgylthMN9gxXLUUK4AdaCPwdrX
|
||||
6qmTr0Ae5JXILUOGvx3gl6ImSpOjehYC1uQqcZKKOYDjGqoWNh2Q7JkTtWGNcgbiw1QVIvNzd2Tl
|
||||
Rw1xqpAhgl+KV6Jeab4AIc99RmkjbPCLlzSpiAKJDdGX5fY+fmjf5EunsET4uU/ti7clIJFh6VOn
|
||||
otCmSnkMkD41QuQPe1SLk1e2zpB8AUK6GULZsuLgAgAGnEoQiVTMAfiQZAAwvr/73TeHypW/BHlr
|
||||
sUONPdwbQK1vX1e3Qj+fy1QhL+qEOZLbU+OVqVje72/ERwEMGqUP/mHve2tgK4DoBrVtDuBWAh2A
|
||||
/nh2+0/3arrhVdgT8D6TWdWgr7UhBuCrmOhCgZx2gV96zU5TPoa9CUN/KLPj32DhC4rADwCJKMyw
|
||||
8aNZn0kAiaW5waH/1jtzWk9v73H90Dz9eKeQ+ADPye3jm/Wql6vK6ncb+IE4IkUM+wjFX4qZh6/f
|
||||
vWYBzBB72bpEV0iaVOUB+JBUBVABUDn9w1d/vaeYW7GbVOF2h+K28u7GeUV24rD6bc0OWzLGC/gp
|
||||
gJ0axc5KfsWXdyz/FSxcwcSY2wWSJhUjgPipwR4NtNuGty67vG/WFNKT+oJGNNILLXbAA94RJAI1
|
||||
wK/JV5UjcMmSkiG7pBkRwW99qvb7s4Rit2awbYXMQ6fuePVfABStqwxTAUQliERRFQBwgp+4r7sz
|
||||
H701STfePjI1cOJYD6boVlCCgY8E6sjPzVFVhyp3pyZPhevUTvArWB5hug0MJQAZjWJQM5DTq3vu
|
||||
G936g5t3r10I0+3h4K/AnAMY1lUTKUsqsCECPgkgbV29APqsz14APT/a/6gTL51yyDdnpPu+gATp
|
||||
p5qWZBFbwOq+2I1SRcqBL8iLtBNNNuFU1wY5XvnJss1JAGiM6qAoDFWL6xfmdz7086G/rIEJ+BJs
|
||||
BSjBdoN0OGMq0qQKJ+JkOGVdaQA91tUHWyn6rWsSgCkXfuOGX/RPnjolzItlvFwcuxlqyWtUUSZP
|
||||
srlRFSjqPTHGpNpuKiwBr75YzGZffOzBHwDIAsjDXOtTgA12bvm59RfdHyV5AJX7AXiDdNf/ixNk
|
||||
ni/gv2nr31zx7yefd+H/Saf7E83ux+/BxfFWpvq6olWiSpEc4JcBYY1f7n5UgB8gqFYKxgdrV/8O
|
||||
QA7AGEzg52FbfhH43OqLll8JqdwPwFOOPB8DbL9HAAARFUlEQVQg/s0QLh7HpQDYzu1bNw4P7l1+
|
||||
0OzDz9GSqTqh5pfWgL5Wp0KLb8tUKQxyIASkI0Umq9xN1PrUemiGXkVmaGTljg82rQOQgQn8PJyu
|
||||
ThkmVqqIIf7PSTWMxPmABnOSnRQ++fygT7j2AzDlslu/+7vJU6buB82KzHp2duvyBCoUTOUoEvUE
|
||||
5Rr4Zd0uyVHDBj//gSKfzQ0tuvf334Pp+ozAjvIU4bT4hvDpXgOkhFRviRQbxhtMYSoAt/riaMD/
|
||||
Zrz7ygs/OeWiS3/e19efVtym5g1W6Oo45CJaeNOWFcHswwOEYfkl5xte9ZZy+eq611/4GYBRmO4P
|
||||
9/05+EWL7wV8pcNzHKdCiEMUd4u4IogabcB2j+j2DzZu/tzeLz134GFHzE/39MTQLI9GxgV8RSOJ
|
||||
U1ZE8Mu2oTbfkLD+rnqrehmZ7L4XPtyyaSNM65+B6fLkYVt+0Ti6J7tqfVPE6VN4J8lqyyWsTx4q
|
||||
nQRgMoCpV3/3B/dM2W//A7REPBsr4/DxvWSr2oBvCYsoI5rPLzXZdtVLKUVudHjXY7f96laYwOcT
|
||||
Xx71EV0ebjBrt4EYwA/Eey6Qu8EGTCWowtZqPlfgV/L15xf/0zmXXHX7pIGpabXuCJyxa4Wq74iL
|
||||
2//Iy+PAi2ADaksNJIcgZs0XZMHvHDEYioVcZdWyJT+G0+Xh0Z4qvMEPxAR8Tq04GEscw8VQKf9d
|
||||
zCAnd2x+b/ueE7+0YPZnj762p6c3EpLqEzYkPuAryDmLUZpIrlMt0hMB/JJ9ZfI6NbdaqrCRvbue
|
||||
+mjLhg9gR3w4+MUJb8uAzyn+hTnedXLLn7SuHtgJsikAplz9dz+8d7/9ZxyiaeF0lHl8i4PESa6K
|
||||
bowa36/JiTpniOB2ubO8AEANA9nhfTse/Y9f3ALT78/Cdn14qFMMcbYE+JxUrAUKS+6u5QrBhO+J
|
||||
fZ/sffOwo46en+7tS/osM3Jczj1Y8V319TRvW1N5zJRHCLFch2hyZNvEOL9EG8xgj7teIJfNlF9d
|
||||
tPDvciNDgzCjPtzn59EeJcuaZakdh+OKsyMeGapav/H0d2rPx+9/vOeTDx9J9/fd2NPT72mPnJNO
|
||||
+984xjXV7g6XSWAmiKJIs+XITxoYYyBaBJeJ1C9trBSLbHjPrgW7tm7+GPWhTu73t9ztEakdLpBY
|
||||
N4E5CnF3qM4V+sbf/q+7Zhxw0Ge4K+QbxYnpTuIIl6pyd0wx0d2waOekeke9qKFjeM+e7Qtu+8W3
|
||||
4e/6cAPYcteHUztcIE68x0TXR/QvNADJwY+3rTp0zrHze3p7U54S1BjjOvIG/vgCv3MeI8PvH/LN
|
||||
ZUZLy5965PtjmZF9MF0fHvXhll/MBbWN2qkAgDeqOPgBQCuMjVVmHXAInTRt2kmJZCr2/TQMcO0g
|
||||
U1OhKDcy8NHZ4C/nC+zjrR/8ad3Kl1+Fne3li9s6wvXh1E4XiJM4m+QJsjpX6Krv/vCOmbMOOFJL
|
||||
xjNtiSsz7JatAvxRklsOGZIiGi2NoLqO4b27P1hw+y//Bh3s+nBq9wgAOB+DnyuU2LX1/ZWf+fxx
|
||||
l/b296biAqezCWplyyaVHPJU+PtRs8tNMt2ZzEhx2WP3fa+YGxuGnfTqONeHU6sPcvYisSPE9UI8
|
||||
UlAEUBwd2jv4ydYtd5Xyxcgdx81OvaujULHEDfMd4PLU2hRBRDPwl/J5tmf71j8N7/5kN+zVnfw5
|
||||
ti3Z1Yg6QQEAAZNwhkZ5prAAoPjSEw8uzIyOvE/1qnwlHJhxAR8CUFRZ/ZrL07ngp7qObGZky0sL
|
||||
H/gzTOAXYK/rF/1+8Vm3nTrBBeLkdoXcnxoAbdfW91eZrlBfIFdIXAfkFK8e+ErdHUGeMn8/Avgb
|
||||
HWHDAIxlhovPPXLP98qFXCPXp20JLz/qlBEAqHeF+M4yftZQEUBpdGjv4I73N95WyhcaHonRCmtf
|
||||
Vw+iA5/LVA5+WRkBdpCV83m6c9vmOzKDu/fAubGlY10fTp2kAIC/K8TXihcAFF55+s//lRkZ3mxU
|
||||
K/XMjPn49vEDX5mvr8rlaQH4qV5FZnR40ytPPPoUnK4PV4COdH04dZILxMnLFeLfa67Qh5vXvX7E
|
||||
MSde2tPXl64HvZtVHcVh8blcVbmHqP4+l9EM/AxAZnQkv/SBP/xtpVQcQb3r49j/Ld+a+KgTFQDw
|
||||
D43WlKBaqbD9Zs3KTp623+mpdJrUF1VL7nBpc4vPrNGIgjIK5nNRRkGpYf2/zcMYrVlwxzqnZm1E
|
||||
RH/f+pcQ4t3zwlUu5OiHW9b//oN3314N+1QHvqm9oxJeftTWN8U3IO4DuF2h2sYZAIlXn3p0yYyD
|
||||
Dr0o3dPzxUQynq3EXsBvysMYqpUSdv5lC0rFPDQfT9OZjfVIKjGK3r5JOORzRyOZ7mlokaNmdkUZ
|
||||
QdLtRrWKzOjIhhVPL1gE2/J3jevDqRMywX4kRoAS1pWCfdLcZACT+ydPnnX5t//+wcnTZwyoPCpF
|
||||
BvgmC0N2dBi7/rIZ1UoF1VIJuqE7ZNUn3zyIECQTSaR6e5HqSePgIz+PydOme4IzymI2R5sCgh8M
|
||||
yA7vyy++63fXj42N7oaZ7fVb78Nsrs6jTnWBOHm5Qvy7BtMVwsB+0/ZO23/Wmcl0OvKkPryr4+Su
|
||||
Vkr4aOO7KIxlUSmVQKkzWBXmeBNKKfRKBXpVRzk/hmkzZiGRSIB3gwqrb0poHON3UzGXNz7ctP43
|
||||
H2xY8y6ca/zdu7s6GvxA5ysA4D1KOfIEH3+wec/hxxw3t3dS/4Fhd5BxigZ8SwZj2LF5I7LDQzB0
|
||||
3fk3l/xQcimFXtWhVyqYOnMWzHd+qcEUQ+MYv5uMahUjQ3vfee7hu26Hvc5HPLy2a8APdF4Y1I/4
|
||||
XEDMDVRhH56af+be2/6pMJbNhOlvd9iUg17WlaKUIp8bdYC/fsmFHBl6FbmxDAyDKnN5WFCXp8bD
|
||||
kMtm8i88dPe/wrmv173BpWOjPm7qBgUQLQnvWB32hKsMoFgul/Pb17/776V8ru7VTF4CVcfwzagP
|
||||
RaVQ8qxDBZWLeTAafR1ZKH9foNJYjn64ecNvxsZGh+G0+qLl7xrrD3RuFMhN7qgQYI8EJVgrRl9b
|
||||
+tTLMw/77PyZ6fTJiVRPnQC/Sa2Kp8SYOQJUqxUw2jBJHV62VQErV6zQqbzCimt6wty3Ua0gMzy0
|
||||
euWSJ16Ec8LbdX6/SN0wAojkHgV4lpifKFxYct9tP8qPZbOMUc/MsBpr79EsxsAMIzbwg1iTVWrl
|
||||
ByTw1WxNTyO+XHZ07Nn77/wxbNdHjPd3fMLLj7pJAfxcIa4EJViu0MbVq35ezI3pbtDHdqI0Y2ay
|
||||
i6p79g4XShytKAs9B+CyZLfTlXI5Y+t7635dLhfG4HR9uN8vPhOgi5SgmxQAqFcCce9AGVY2cu3L
|
||||
S1fmRva9ZVTLsYEesEcX0yCTUCHOZnL9VnCafwsvSxb8RqWCzMi+N996ftHLCHasSdeAH+g+BeDU
|
||||
aBQoASgsvPP3/5LPZodVgVKsuOZWAeAoZWCRFaBm9blYrzKMWXUFkNdkDX8Q/txYJrv0/v/8F9jA
|
||||
F61/17o+nLpRARq5QnwHWQHQc5vWrvxlMTeme4sJX2lLdpApECu6PFFOESiOjRrb1q35Zblc5i+v
|
||||
cC9z7lrXh1M3KgDQ2BXiewcKa19e9np2aPB1vVKOVFGswOfyFYmN6vJw0ssljA0Nv/bmi8+8Cuda
|
||||
n3Hh+nDqhkywH7mXSTDht9pSic1rVr951NyTLu7p7esLMyFwAr/JsmBrBadRrWLPR9vCyw+B1QMO
|
||||
PQJaMll3Xn/Uia5IlBrIjQ6PLrzjt98HqPgSC+778xO+u9b14dStIwDg7wqJ+YEioI9tXPXaT/O5
|
||||
MZ2f7Ol3mdIsCyq4EE1WBdsRpmDryKK5O0JEy2ZnIGDQCHFEvMJepjCKQj6nb1m96ieAzie9fHO7
|
||||
+KK6rrf+QHcrAODtCom5gQKA4rqVL6/O7Nu7tDA2Bq9nFbebU6tHoZ8PwLGcIfILORgDGEVxLIfM
|
||||
4O4l77z24tuwz/PxOs+z68EPdL8CcBItkpcSjC2+5/e/zGRG3spns/BOktWNBeoax+uJLN7GGrOS
|
||||
YSpcHh5ZymWzyI4OrXrmT//5a9hvcBFfV+oV8+9q6uY5gEhuFHhBjWx+e+XLh845ZiYYjiSEkUQy
|
||||
Cfso8WjEGIOhV7Hno+2O33xbI0UEBxxmzgE0kpB6b5dIZpaZolIqopAdo9mhPc8svue2f4N9nCFP
|
||||
eo2ria9I40UBAP9l03yCzADQ99e++VYy2bNxYL/951bKpUnUWlzmPJs/PHEF2PvRdmc+QOGAwhjD
|
||||
gYd9FslUCoRokgrAQA2KaqWMSqGEfC6LUqk0+P6aN/51xaLHH4Np+Tn4/c71AcYB+IHO3hEWlsQI
|
||||
kHjkehrmDrIe2O8m7gfQe9wZ55xwxLEnfjOdTn2OIDEJjGkM4dfymO6zaUk/3LwOYEQt8HklhOAz
|
||||
Rx+LVE8PiCanAAQaGEAJo/lypfL+R+veefCdN156B1YCEXa8n6+v4ovdxPM8gQkF6EhyK4H4gm6+
|
||||
nZIrAleMFOw3V/I9xxKxGSQBDBx3+tl/BCHKRlZHxpka+ro3lv93mC6K+J61wOLgfF8zd2040EXg
|
||||
83mU+7W2wDgBP9A9y6GDkhi0p9Z3dyaYP/wUzAfMlYQrgYwfxE+2plVdz6RSqelSrRfI6yzQqqFn
|
||||
YO7CGkP9iQuBxMIOFIgvo+ZujripXbT8HX2yQxQabwoAOB8Q3xzDrSUHDQdABU7r76UAQZSBu1uo
|
||||
lsu5KApQc3c8qq2Wq2MwwT8GG5yBRArfvfqBjwZuq+8+xnxcgR8YnwrAiT8s99DNt1XqsN0k0fWR
|
||||
iYdyBaBGtfo+GDss7DJUG/jwrJoB0KvlD2C+ZDqP4AogihAv0RUS3SER+G15c2MrabwqADeh/MHx
|
||||
B6nBmTTj4K8tnUA0FwjZkaEFfQMDX0mmUoFlBDn6XK9WWH54ZAHs9+xGcYHEFZyiEngBf9z5/SKN
|
||||
VwUA6pUAcCoCf9i+qyJCEIE5p8DQ7k9enzJj5vaB5JQjmkVpAp/5zxjKpcK2fXs/WQk7RMnX44Ql
|
||||
90ggKoQb+OMa/MD4ygP4EUeXly8sPnjuKhmu34NeXOG0JNE+SvdPmp9MJDQvV8i9l6AhMYZSuWRk
|
||||
9+78x0IutxXOVw2FbSsvL4Y13ZvZ3S7PuAU/8OlQAE7NFMGtEDIKAACkkB/bN2nytMkkkTgumUwS
|
||||
sTLnsovmVC6XUS4UHtz14dZHYU5+eYIqigK47/lTB3xOnyYF4ORWBPdQH+UCrHlFZmhwzcD0Gccy
|
||||
xg5L1l7sF8LDYgylUhGVSnn5R5vW/TNs16eE+p1YUdv8qQM+p0+jAnByI1EVkPiEGpnBPS/0T5k6
|
||||
iRrGF0E0QrRgaw+r1QpKpSIrl4oP7Ni0/sewwc8TVVwBorbXff+fOvo0K4AXqciMcwUwo0JDg28x
|
||||
0NfS6b4T9Wp1GmXUroSYc3RGGahhoFqtoFIqgenVnWODO/9h90fbn4ANehH8UcH6qQS7F423pRDt
|
||||
Jr4kgr/neBLM5RZpAOkZB8ye2zdt6nXJZHouCJsEZkXhCHQwktf16tri6OgD+/Z8vBb2SRcl2Duy
|
||||
ypALf06QD00ogFriTn4SJvD5wrse2GuOxIwz94nEvQxiok5coMZ9/3GdmGo1TbhA8ZHfHMGdfNJd
|
||||
l3jEi3gUSUe8WX280XhOhLWLOMDFvbMc6Gk41x4RF4+4Rsm9E2vc7MLqJJpQgHjIHV/na224GySu
|
||||
PIVQRhwFxLU5E5Y/JpqYA8RLvH/5OqMEnAvwvEYAd3aW/32CYqAJBWgNiYrgt+YoaLx+ghTShAK0
|
||||
lrw27wP1QJ8A/gRN0ATFT/8fshU8YkZ/KxQAAAAASUVORK5CYII=
|
||||
--BOUNDARY--
|
||||
File diff suppressed because one or more lines are too long
9
backend/demo/src/main/resources/inbox/intro.eml
Normal file
9
backend/demo/src/main/resources/inbox/intro.eml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
MIME-Version: 1.0
|
||||
From: "cketti" <cketti@k9mail.example>
|
||||
Date: Thu, 23 Sep 2021 23:42:00 +0200
|
||||
Message-ID: <hello-1-2-3@k9mail.example>
|
||||
Subject: Welcome to K-9 Mail
|
||||
To: User <user@k9mail.example>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Congratulations, you have managed to set up K-9 Mail's demo account. Have fun exploring the app.
|
||||
42
backend/demo/src/main/resources/inbox/many_recipients.eml
Normal file
42
backend/demo/src/main/resources/inbox/many_recipients.eml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Alice" <from1@k9mail.example>, "Bob" <from2@k9mail.example>
|
||||
Sender: "Bernd" <sender@k9mail.example>
|
||||
Reply-To: <reply-to@k9mail.example>
|
||||
Date: Mon, 23 Jan 2023 12:00:00 +0100
|
||||
Message-ID: <inbox-2@k9mail.example>
|
||||
Subject: Message details demo
|
||||
To: "User 1" <to1@k9mail.example>,
|
||||
"User 2" <to2@k9mail.example>,
|
||||
"User 3" <to3@k9mail.example>,
|
||||
"User 4" <to4@k9mail.example>,
|
||||
"User 5" <to5@k9mail.example>,
|
||||
"User 6" <to6@k9mail.example>,
|
||||
"User 7" <to7@k9mail.example>,
|
||||
"User 8" <to8@k9mail.example>,
|
||||
"User 9" <to9@k9mail.example>,
|
||||
"User 10" <to10@k9mail.example>,
|
||||
"User 11" <to11@k9mail.example>,
|
||||
"User 12" <to12@k9mail.example>,
|
||||
"User 13" <to13@k9mail.example>,
|
||||
"User 14" <to14@k9mail.example>,
|
||||
"User 15" <to15@k9mail.example>,
|
||||
"User 16" <to16@k9mail.example>,
|
||||
"User 17" <to17@k9mail.example>,
|
||||
"User 18" <to18@k10mail.example>,
|
||||
"User 19" <to19@k11mail.example>,
|
||||
"User 20" <to20@k12mail.example>
|
||||
Cc: "Copy 1" <cc1@k9mail.example>,
|
||||
"Copy 2" <cc2@k9mail.example>,
|
||||
"Copy 3" <cc3@k9mail.example>
|
||||
Bcc: "Blind 1" <bcc1@k9mail.example>,
|
||||
"Blind 2" <bcc2@k9mail.example>,
|
||||
"Blind 3" <bcc3@k9mail.example>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This message contains…
|
||||
- multiple addresses in the From: header
|
||||
- a Sender: header
|
||||
- a Reply-To: header
|
||||
- multiple addresses in the To: header
|
||||
- multiple addresses in the Cc: header
|
||||
- multiple addresses in the Bcc: header
|
||||
9
backend/demo/src/main/resources/inbox/thread_1.eml
Normal file
9
backend/demo/src/main/resources/inbox/thread_1.eml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
MIME-Version: 1.0
|
||||
From: Alice <alice@k9mail.example>
|
||||
Date: Fri, 10 Feb 2023 10:00:00 +0100
|
||||
Message-ID: <thread-1@k9mail.example>
|
||||
Subject: Thread
|
||||
To: Bob <bob@k9mail.example>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is the first message in this thread.
|
||||
11
backend/demo/src/main/resources/inbox/thread_2.eml
Normal file
11
backend/demo/src/main/resources/inbox/thread_2.eml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
MIME-Version: 1.0
|
||||
From: Bob <bob@k9mail.example>
|
||||
Date: Fri, 10 Feb 2023 10:05:00 +0100
|
||||
Message-ID: <thread-2@k9mail.example>
|
||||
Subject: Re: Thread
|
||||
To: Alice <alice@k9mail.example>
|
||||
In-Reply-To: <thread-1@k9mail.example>
|
||||
References: <thread-2@k9mail.example>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is the second message in this thread.
|
||||
84
backend/demo/src/main/resources/turing/turing_award_1966.eml
Normal file
84
backend/demo/src/main/resources/turing/turing_award_1966.eml
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Alan J. Perlis" <alan.perlis@example.com>
|
||||
Date: Sat, 01 Jan 1966 12:00:00 -0400
|
||||
Message-ID: <turing1966@cketti.de>
|
||||
Subject: The Synthesis of Algorithmic Systems
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Both knowledge and wisdom extend man's reach. Knowledge led to computers,
|
||||
wisdom to chopsticks. Unfortunately our association is overinvolved with
|
||||
the former. The latter will have to wait for a more sublime day.
|
||||
On what does and will the fame of Turing rest? That he proved a theorem
|
||||
showing that for a general computing device--later dubbed a "Turing
|
||||
machine"--there existed functions which it could not compute? I doubt it.
|
||||
More likely it rests on the model he invented and employed: his formal
|
||||
mechanism.
|
||||
This model has captured the imagination and mobilized the thoughts of a
|
||||
generation of scientists. It has provided a basis for arguments leading to
|
||||
theories. His model has proved so useful that its generated activity has
|
||||
been distributed not only in mathematics, but through several technologies
|
||||
as well. The arguments that have been employed are not always formal and
|
||||
the consequent creations not all abstract.
|
||||
Indeed a most fruitful consequence of the Turing machine has been with the
|
||||
creation, study and computation of functions which are computable, i.e., in
|
||||
computer programming. This is not surprising since computers can compute so
|
||||
much more than we yet know how to specify.
|
||||
I am sure that all will agree that this model has been enormously valuable.
|
||||
History will forgive me for not devoting any attention in this lecture to
|
||||
the effect which Turing had on the development of the general-purpose
|
||||
digital computer, which has further accelerated our involvement with the
|
||||
theory and practice of computation.
|
||||
Since the appearance of Turing's model there have, of course, been others
|
||||
which have concerned and benefited us in computing. I think, however, that
|
||||
only one has had an effect as great as Turing's: the formal mechanism
|
||||
called ALGOL Many will immediately disagree, pointing out that too few of
|
||||
us have understood it or used it.
|
||||
While such has, unhappily, been the case, it is not the point. The impulse
|
||||
given by ALGOL to the development of research in computer science is
|
||||
relevant while the number of adherents is not. ALGOL, too, has mobilized
|
||||
our thoughts and has provided us with a basis for our arguments.
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Both knowledge and wisdom extend man's reach. Kno=
|
||||
wledge led to computers, wisdom to chopsticks. Unfortunately our associatio=
|
||||
n is overinvolved with the former. The latter will have to wait for a more =
|
||||
sublime day.=C2=A0</div>
|
||||
<div>On what does and will the fame of Turing rest? That he proved a theore=
|
||||
m showing that for a general computing device--later dubbed a "Turing =
|
||||
machine"--there existed functions which it could not compute? I doubt =
|
||||
it. More likely it rests on the model he invented and employed: his formal =
|
||||
mechanism.=C2=A0</div>
|
||||
<div>This model has captured the imagination and mobilized the thoughts of =
|
||||
a generation of scientists. It has provided a basis for arguments leading t=
|
||||
o theories. His model has proved so useful that its generated activity has =
|
||||
been distributed not only in mathematics, but through several technologies =
|
||||
as well. The arguments that have been employed are not always formal and th=
|
||||
e consequent creations not all abstract.=C2=A0</div>
|
||||
<div>Indeed a most fruitful consequence of the Turing machine has been with=
|
||||
the creation, study and computation of functions which are computable, i.e=
|
||||
., in computer programming. This is not surprising since computers can comp=
|
||||
ute so much more than we yet know how to specify.=C2=A0</div>
|
||||
<div>I am sure that all will agree that this model has been enormously valu=
|
||||
able. History will forgive me for not devoting any attention in this lectur=
|
||||
e to the effect which Turing had on the development of the general-purpose =
|
||||
digital computer, which has further accelerated our involvement with the th=
|
||||
eory and practice of computation.=C2=A0</div>
|
||||
<div>Since the appearance of Turing's model there have, of course, been=
|
||||
others which have concerned and benefited us in computing. I think, howeve=
|
||||
r, that only one has had an effect as great as Turing's: the formal mec=
|
||||
hanism called ALGOL Many will immediately disagree, pointing out that too f=
|
||||
ew of us have understood it or used it.=C2=A0</div>
|
||||
<div>While such has, unhappily, been the case, it is not the point. The imp=
|
||||
ulse given by ALGOL to the development of research in computer science is r=
|
||||
elevant while the number of adherents is not. ALGOL, too, has mobilized our=
|
||||
thoughts and has provided us with a basis for our arguments.=C2=A0</div>
|
||||
</div>
|
||||
|
||||
--047d7b450b100959e604d85a5320--
|
||||
35
backend/demo/src/main/resources/turing/turing_award_1967.eml
Normal file
35
backend/demo/src/main/resources/turing/turing_award_1967.eml
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Maurice V. Wilkes" <maurice.wilkes@example.com>
|
||||
Date: Wed, 30 Aug 1967 12:00:00 -0400
|
||||
Message-ID: <turing1967@cketti.de>
|
||||
Subject: Computers Then and Now
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=047d7b5d9bdd0d571a04d85aec30
|
||||
|
||||
--047d7b5d9bdd0d571a04d85aec30
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
I do not imagine that many of the Turing lecturers who will follow me will
|
||||
be people who were acquainted with Alan Turing. The work on computable
|
||||
numbers, for which he is famous, was published in 1936 before digital
|
||||
computers existed. Later he became one of the first of a distinguished
|
||||
succession of able mathematicians who have made contributions to the
|
||||
computer field. He was a colorful figure in the early days of digital
|
||||
computer development in England, and I would find it difficult to speak of
|
||||
that period without making some references to him.
|
||||
|
||||
--047d7b5d9bdd0d571a04d85aec30
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>I do not imagine that many of the Turing lecturers wh=
|
||||
o will follow me will be people who were acquainted with Alan Turing. The w=
|
||||
ork on computable numbers, for which he is famous, was published in 1936 be=
|
||||
fore digital computers existed. Later he became one of the first of a disti=
|
||||
nguished succession of able mathematicians who have made contributions to t=
|
||||
he computer field. He was a colorful figure in the early days of digital co=
|
||||
mputer development in England, and I would find it difficult to speak of th=
|
||||
at period without making some references to him.</div>
|
||||
</div>
|
||||
|
||||
--047d7b5d9bdd0d571a04d85aec30--
|
||||
40
backend/demo/src/main/resources/turing/turing_award_1968.eml
Normal file
40
backend/demo/src/main/resources/turing/turing_award_1968.eml
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
MIME-Version: 1.0
|
||||
From: Richard Hamming <richard.hamming@example.com>
|
||||
Date: Tue, 27 Aug 1968 12:00:00 -0400
|
||||
Message-ID: <turing1968@cketti.de>
|
||||
Subject: One Man's View of Computer Science
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=089e01227b30f6f60004d85af2ae
|
||||
|
||||
--089e01227b30f6f60004d85af2ae
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Let me begin with a few personal words. When one is notified that he has
|
||||
been elected the ACM Turing lecturer for the year, he is at first
|
||||
surprised--especially is the nonacademic person surprised by an ACM award.
|
||||
After a little while the surprise is replaced by a feeling of pleasure.
|
||||
Still later comes a feeling of "Why me?" With all that has been done and is
|
||||
being done in computing, why single out me and my work? Well, I suppose
|
||||
that it has to happen to someone each year, and this
|
||||
time I am the lucky person. Anyway, let me thank you for the honor you have
|
||||
given to me and by inference to the Bell Telephone Laboratories where I
|
||||
work and which has made possible so much of what I have done.
|
||||
|
||||
--089e01227b30f6f60004d85af2ae
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Let me begin with a few personal words. When one is n=
|
||||
otified that he has been elected the ACM Turing lecturer for the year, he i=
|
||||
s at first surprised--especially is the nonacademic person surprised by an =
|
||||
ACM award. After a little while the surprise is replaced by a feeling of pl=
|
||||
easure. Still later comes a feeling of "Why me?" With all that ha=
|
||||
s been done and is being done in computing, why single out me and my work? =
|
||||
Well, I suppose that it has to happen to someone each year, and this=C2=A0<=
|
||||
/div>
|
||||
<div>time I am the lucky person. Anyway, let me thank you for the honor you=
|
||||
have given to me and by inference to the Bell Telephone Laboratories where=
|
||||
I work and which has made possible so much of what I have done.</div></div=
|
||||
>
|
||||
|
||||
--089e01227b30f6f60004d85af2ae--
|
||||
35
backend/demo/src/main/resources/turing/turing_award_1970.eml
Normal file
35
backend/demo/src/main/resources/turing/turing_award_1970.eml
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
MIME-Version: 1.0
|
||||
From: "James H. Wilkinson" <james.wilkinson@example.com>
|
||||
Date: Tue, 01 Sep 1970 12:00:00 -0400
|
||||
Message-ID: <turing1970@cketti.de>
|
||||
Subject: Some Comments from a Numerical Analyst
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=047d7b5d9bdd9697d504d85ac65f
|
||||
|
||||
--047d7b5d9bdd9697d504d85ac65f
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
When at last I recovered from the feeling of shocked elation at being
|
||||
invited to give the 1970 Turing Award Lecture, I became aware that I must
|
||||
indeed prepare an appropriate lecture. There appears to be a tradition that
|
||||
a Turing Lecturer should decide for himself what is expected from him, and
|
||||
probably for this reason previous lectures have differed considerably in
|
||||
style and content. However, it was made quite clear that I was to give an
|
||||
after-luncheon speech and that I would not have the benefit of an overhead
|
||||
projector or a blackboard.
|
||||
|
||||
--047d7b5d9bdd9697d504d85ac65f
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>When at last I recovered from the feeling of shocked =
|
||||
elation at being invited to give the 1970 Turing Award Lecture, I became aw=
|
||||
are that I must indeed prepare an appropriate lecture. There appears to be =
|
||||
a tradition that a Turing Lecturer should decide for himself what is expect=
|
||||
ed from him, and probably for this reason previous lectures have differed c=
|
||||
onsiderably in style and content. However, it was made quite clear that I w=
|
||||
as to give an after-luncheon speech and that I would not have the benefit o=
|
||||
f an overhead projector or a blackboard.</div>
|
||||
</div>
|
||||
|
||||
--047d7b5d9bdd9697d504d85ac65f--
|
||||
32
backend/demo/src/main/resources/turing/turing_award_1971.eml
Normal file
32
backend/demo/src/main/resources/turing/turing_award_1971.eml
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
MIME-Version: 1.0
|
||||
From: John McCarthy <john.mccarthy@example.com>
|
||||
Date: Fri, 01 Jan 1971 12:00:00 -0400
|
||||
Message-ID: <turing1971@cketti.de>
|
||||
Subject: Generality in Artificial Intelligence
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=089e01030106b6942904d85ad870
|
||||
|
||||
--089e01030106b6942904d85ad870
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Postscript
|
||||
My 1971 Turing Award Lecture was entitled "Generality in Artificial
|
||||
Intelligence." The topic turned out to have been overambitious in that I
|
||||
discovered that I was unable to put my thoughts on the subject in a
|
||||
satisfactory written form at that time. It would have been better to have
|
||||
reviewed previous work rather than attempt something new, but such wasn't
|
||||
my custom at that time.
|
||||
|
||||
--089e01030106b6942904d85ad870
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Postscript</div><div>My 1971 Turing Award Lecture was=
|
||||
entitled "Generality in Artificial Intelligence." The topic turn=
|
||||
ed out to have been overambitious in that I discovered that I was unable to=
|
||||
put my thoughts on the subject in a satisfactory written form at that time=
|
||||
. It would have been better to have reviewed previous work rather than atte=
|
||||
mpt something new, but such wasn't my custom at that time.</div>
|
||||
</div>
|
||||
|
||||
--089e01030106b6942904d85ad870--
|
||||
27
backend/demo/src/main/resources/turing/turing_award_1972.eml
Normal file
27
backend/demo/src/main/resources/turing/turing_award_1972.eml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Edsger W. Dijkstra" <edsger.dijkstra@example.com>
|
||||
Date: Mon, 02 Aug 1972 12:00:00 -0500
|
||||
Message-ID: <turing1972@cketti.de>
|
||||
Subject: The Humble Programmer
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: text/plain; charset=UTF-8; format=flowed
|
||||
|
||||
As a result of a long sequence of coincidences I entered the programming
|
||||
profession officially on the first spring morning of 1952, and as far as
|
||||
I have been able to trace, I was the first Dutchman to do so in my
|
||||
country. In retrospect the most amazing thing is the slowness with which,
|
||||
at least in my part of the world, the programming profession emerged, a
|
||||
slowness which is now hard to believe. But I am grateful for two vivid
|
||||
recollections from that period that establish that slowness beyond any
|
||||
doubt.
|
||||
|
||||
After having programmed for some three years, I had a discussion with
|
||||
van Wijngaarden, who was then my boss at the Mathematical Centre in
|
||||
Amsterdam - a discussion for which I shall remain grateful to him
|
||||
as long as I live. The point was that I was supposed to study theoretical
|
||||
physics at the University of Leiden simultaneously, and as I found the
|
||||
two activities harder and harder to combine, I had to make up my
|
||||
mind, either to stop programming and become a real, respectable theoretical
|
||||
physicist, or to carry my study of physics to a formal completion only,
|
||||
with a minimum of effort, and to become..., yes what? A programmer?
|
||||
But was that a respectable profession? After all, what was programming?
|
||||
30
backend/demo/src/main/resources/turing/turing_award_1975.eml
Normal file
30
backend/demo/src/main/resources/turing/turing_award_1975.eml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
MIME-Version: 1.0
|
||||
From: Allen Newell <allen.newell@example.com>
|
||||
Cc: Herbert Simon <herbert.simon@example.com>
|
||||
Date: Mon, 20 Oct 1975 12:00:00 -0500
|
||||
Message-ID: <turing1975@cketti.de>
|
||||
Subject: Computer Science as Empirical Inquiry: Symbols and Search
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b1092035304d85abf33
|
||||
|
||||
--047d7b450b1092035304d85abf33
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Computer science is the study of the phenomena surrounding computers. The
|
||||
founders of this society understood this very well when they called
|
||||
themselves the Association for Computing Machinery. The machine---not just
|
||||
the hardware, but the programmed, living machine--is the organism we study.
|
||||
|
||||
--047d7b450b1092035304d85abf33
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr">Computer science is the study of the phenomena surrounding=
|
||||
computers. The founders of this society understood this very well when the=
|
||||
y called themselves the Association for Computing Machinery. The machine---=
|
||||
not just the hardware, but the programmed, living machine--is the organism =
|
||||
we study.<br>
|
||||
|
||||
</div>
|
||||
|
||||
--047d7b450b1092035304d85abf33--
|
||||
39
backend/demo/src/main/resources/turing/turing_award_1977.eml
Normal file
39
backend/demo/src/main/resources/turing/turing_award_1977.eml
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
MIME-Version: 1.0
|
||||
From: "John W. Backus" <john.backus@example.com>
|
||||
Date: Mon, 17 Oct 1977 12:00:00 -0700
|
||||
Message-ID: <turing1977@cketti.de>
|
||||
Subject: Can Programming Be Liberated from the von Neumann Style? A Functional
|
||||
Style and Its Algebra of Programs
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=047d7b5d9bdd8a36e804d85ade47
|
||||
|
||||
--047d7b5d9bdd8a36e804d85ade47
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Conventional programming languages are growing ever more enormous, but not
|
||||
stronger. Inherent defects at the most basic level cause them to be both
|
||||
fat and weak: their primitive word-at-a-time style of programming inherited
|
||||
from their common ancestor--the von Neumann computer, their close coupling
|
||||
of semantics to state transitions, their division of programming into a
|
||||
world of expressions and a world of statements, their inability to
|
||||
effectively use powerful combining forms for building new programs from
|
||||
existing ones, and their lack of useful mathematical properties for
|
||||
reasoning about
|
||||
programs.
|
||||
|
||||
--047d7b5d9bdd8a36e804d85ade47
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Conventional programming languages are growing ever m=
|
||||
ore enormous, but not stronger. Inherent defects at the most basic level ca=
|
||||
use them to be both fat and weak: their primitive word-at-a-time style of p=
|
||||
rogramming inherited from their common ancestor--the von Neumann computer, =
|
||||
their close coupling of semantics to state transitions, their division of p=
|
||||
rogramming into a world of expressions and a world of statements, their ina=
|
||||
bility to effectively use powerful combining forms for building new program=
|
||||
s from existing ones, and their lack of useful mathematical properties for =
|
||||
reasoning about=C2=A0</div>
|
||||
<div>programs.</div></div>
|
||||
|
||||
--047d7b5d9bdd8a36e804d85ade47--
|
||||
36
backend/demo/src/main/resources/turing/turing_award_1978.eml
Normal file
36
backend/demo/src/main/resources/turing/turing_award_1978.eml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
MIME-Version: 1.0
|
||||
From: Robert Floyd <robert.floyd@example.com>
|
||||
Date: Mon, 04 Dec 1978 12:00:00 -0500
|
||||
Message-ID: <turing1978@cketti.de>
|
||||
Subject: The Paradigms of Programming
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=089e0118419206e64304d85af860
|
||||
|
||||
--089e0118419206e64304d85af860
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Today I want to talk about the paradigms of programming, how they affect
|
||||
our success as designers of computer programs, how they should be taught,
|
||||
and how they should be embodied in our programming languages.
|
||||
A familiar example of a paradigm of programming is the technique of
|
||||
structured programming, which appears to be the dominant paradigm in most
|
||||
current treatments of programming methodology. Structured programming, as
|
||||
formulated by Dijkstra, Wirth, and Parnas, among others, consists of two
|
||||
phases.
|
||||
|
||||
--089e0118419206e64304d85af860
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Today I want to talk about the paradigms of programmi=
|
||||
ng, how they affect our success as designers of computer programs, how they=
|
||||
should be taught, and how they should be embodied in our programming langu=
|
||||
ages.=C2=A0</div>
|
||||
<div>A familiar example of a paradigm of programming is the technique of st=
|
||||
ructured programming, which appears to be the dominant paradigm in most cur=
|
||||
rent treatments of programming methodology. Structured programming, as form=
|
||||
ulated by Dijkstra, Wirth, and Parnas, among others, consists of two phases=
|
||||
.=C2=A0</div>
|
||||
</div>
|
||||
|
||||
--089e0118419206e64304d85af860--
|
||||
33
backend/demo/src/main/resources/turing/turing_award_1979.eml
Normal file
33
backend/demo/src/main/resources/turing/turing_award_1979.eml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Kenneth E. Iverson" <kenneth.iverson@example.com>
|
||||
Date: Mon, 29 Oct 1979 12:00:00 -0500
|
||||
Message-ID: <turing1979@cketti.de>
|
||||
Subject: Notation as a Tool of Thought
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=20cf30549cad76254e04d85ae4df
|
||||
|
||||
--20cf30549cad76254e04d85ae4df
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
The importance of nomenclature, notation, and language as tools of thought
|
||||
has long been recognized. In chemistry and in botany, for example, the
|
||||
establishment of systems of nomenclature by Lavoisier and Linnaeus did much
|
||||
to stimulate and to channel later investigation. Concerning language,
|
||||
George Boole in his Laws off Thought asserted "That language is an
|
||||
instrument of human reason, and not merely a medium for the expression of
|
||||
thought, is a truth generally admitted."
|
||||
|
||||
--20cf30549cad76254e04d85ae4df
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>The importance of nomenclature, notation, and languag=
|
||||
e as tools of thought has long been recognized. In chemistry and in botany,=
|
||||
for example, the establishment of systems of nomenclature by Lavoisier and=
|
||||
Linnaeus did much to stimulate and to channel later investigation. Concern=
|
||||
ing language, George Boole in his Laws off Thought asserted "That lang=
|
||||
uage is an instrument of human reason, and not merely a medium for the expr=
|
||||
ession of thought, is a truth generally admitted."</div>
|
||||
</div>
|
||||
|
||||
--20cf30549cad76254e04d85ae4df--
|
||||
51
backend/demo/src/main/resources/turing/turing_award_1981.eml
Normal file
51
backend/demo/src/main/resources/turing/turing_award_1981.eml
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Edgar F. Codd" <edgar.codd@example.com>
|
||||
Date: Wed, 11 Nov 1981 12:00:00 -0800
|
||||
Message-ID: <turing1981@cketti.de>
|
||||
Subject: Relational Database: A Practical Foundation for Productivity
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=047d7bfd026c782f2404d85ab4b8
|
||||
|
||||
--047d7bfd026c782f2404d85ab4b8
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
It is well known that the growth in demands from end users for new
|
||||
applications is outstripping the capability of data processing departments
|
||||
to implement the corresponding application programs. There are two
|
||||
complementary approaches to attacking this problem (and both approaches are
|
||||
needed): one is to put end users into direct touch with the information
|
||||
stored in computers; the other is to increase the productivity of data
|
||||
processing professionals in the development of application programs. It is
|
||||
less well known that a single technology, relational database management,
|
||||
provides a practical foundation for both approaches. It is explained why
|
||||
this
|
||||
is so.
|
||||
While developing this productivity theme, it is noted that the time has
|
||||
come to draw a very sharp line between relational and non-relational
|
||||
database systems, so that the label "relational" will not be used in
|
||||
misleading ways.
|
||||
The key to drawing this line is something called a "relational processing
|
||||
capability."
|
||||
|
||||
--047d7bfd026c782f2404d85ab4b8
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>It is well known that the growth in demands from end =
|
||||
users for new applications is outstripping the capability of data processin=
|
||||
g departments to implement the corresponding application programs. There ar=
|
||||
e two complementary approaches to attacking this problem (and both approach=
|
||||
es are needed): one is to put end users into direct touch with the informat=
|
||||
ion stored in computers; the other is to increase the productivity of data =
|
||||
processing professionals in the development of application programs. It is =
|
||||
less well known that a single technology, relational database management, p=
|
||||
rovides a practical foundation for both approaches. It is explained why thi=
|
||||
s=C2=A0</div>
|
||||
<div><div>is so.=C2=A0</div><div>While developing this productivity theme, =
|
||||
it is noted that the time has come to draw a very sharp line between relati=
|
||||
onal and non-relational database systems, so that the label "relationa=
|
||||
l" will not be used in misleading ways.=C2=A0</div>
|
||||
<div>The key to drawing this line is something called a "relational pr=
|
||||
ocessing capability."</div></div></div>
|
||||
|
||||
--047d7bfd026c782f2404d85ab4b8--
|
||||
46
backend/demo/src/main/resources/turing/turing_award_1983.eml
Normal file
46
backend/demo/src/main/resources/turing/turing_award_1983.eml
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
MIME-Version: 1.0
|
||||
From: Dennis Ritchie <dennis.ritchie@example.com>
|
||||
Date: Mon, 24 Oct 1983 12:00:00 -0400
|
||||
Message-ID: <turing1983@cketti.de>
|
||||
Subject: Reflections on Software Research
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=bcaec54fbb2250035a04d85aabcd
|
||||
|
||||
--bcaec54fbb2250035a04d85aabcd
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
The UNIX operating system has suddenly become news, but it is not new. It
|
||||
began in 1969 when Ken Thompson discovered a little-used PDP-7 computer and
|
||||
set out to fashion a computing environment that he liked, His work soon
|
||||
attracted me; I joined in the enterprise, though most of the ideas, and
|
||||
most of the work for that matter, were his. Before long, others from our
|
||||
group in the research area of AT&T Bell Laboratories were using the system;
|
||||
Joe Ossanna, Doug Mcllroy, and
|
||||
Bob Morris were especially enthusiastic critics and contributors, tn 1971,
|
||||
we acquired a PDP-11, and by the end of that year we were supporting our
|
||||
first real users: three typists entering patent applications. In 1973, the
|
||||
system was rewritten in the C language, and in that year, too, it was first
|
||||
described publicly at the Operating Systems Principles conference; the
|
||||
resulting paper appeared in Communications of the ACM the next year.
|
||||
|
||||
--bcaec54fbb2250035a04d85aabcd
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>The UNIX operating system has suddenly become news, b=
|
||||
ut it is not new. It began in 1969 when Ken Thompson discovered a little-us=
|
||||
ed PDP-7 computer and set out to fashion a computing environment that he li=
|
||||
ked, His work soon attracted me; I joined in the enterprise, though most of=
|
||||
the ideas, and most of the work for that matter, were his. Before long, ot=
|
||||
hers from our group in the research area of AT&T Bell Laboratories were=
|
||||
using the system; Joe Ossanna, Doug Mcllroy, and=C2=A0</div>
|
||||
<div>Bob Morris were especially enthusiastic critics and contributors, tn 1=
|
||||
971, we acquired a PDP-11, and by the end of that year we were supporting o=
|
||||
ur first real users: three typists entering patent applications. In 1973, t=
|
||||
he system was rewritten in the C language, and in that year, too, it was fi=
|
||||
rst described publicly at the Operating Systems Principles conference; the =
|
||||
resulting paper appeared in Communications of the ACM the next year.=C2=A0<=
|
||||
/div>
|
||||
</div>
|
||||
|
||||
--bcaec54fbb2250035a04d85aabcd--
|
||||
42
backend/demo/src/main/resources/turing/turing_award_1987.eml
Normal file
42
backend/demo/src/main/resources/turing/turing_award_1987.eml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
MIME-Version: 1.0
|
||||
From: John Cocke <john.cocke@example.com>
|
||||
Date: Mon, 16 Feb 1987 12:00:00 -0600
|
||||
Message-ID: <turing1987@cketti.de>
|
||||
Subject: The Search for Performance in Scientific Processors
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=047d7bfd079665fb2c04d85ad0bc
|
||||
|
||||
--047d7bfd079665fb2c04d85ad0bc
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
I am honored and grateful to have been selected to join the ranks of ACM
|
||||
Turing Award winners. I probably have spent too much of my life thinking
|
||||
about computers, but I do not regret it a bit. I was fortunate to enter the
|
||||
field of computing in its infancy and participate in its explosive growth.
|
||||
The rapid evolution of the underlying technologies in the past 30 years has
|
||||
not only provided an exciting environment, but has also presented a
|
||||
constant stream of intellectual challenges to those of us trying to harness
|
||||
this power and squeeze it to the last ounce. I hasten to say, especially to
|
||||
the
|
||||
younger members of the audience, there is no end in sight. As a matter of
|
||||
fact, I believe the next thirty years will be even more exciting and rich
|
||||
with challenges.
|
||||
|
||||
--047d7bfd079665fb2c04d85ad0bc
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>I am honored and grateful to have been selected to jo=
|
||||
in the ranks of ACM Turing Award winners. I probably have spent too much of=
|
||||
my life thinking about computers, but I do not regret it a bit. I was fort=
|
||||
unate to enter the field of computing in its infancy and participate in its=
|
||||
explosive growth. The rapid evolution of the underlying technologies in th=
|
||||
e past 30 years has not only provided an exciting environment, but has also=
|
||||
presented a constant stream of intellectual challenges to those of us tryi=
|
||||
ng to harness this power and squeeze it to the last ounce. I hasten to say,=
|
||||
especially to the=C2=A0</div>
|
||||
<div>younger members of the audience, there is no end in sight. As a matter=
|
||||
of fact, I believe the next thirty years will be even more exciting and ri=
|
||||
ch with challenges.=C2=A0</div></div>
|
||||
|
||||
--047d7bfd079665fb2c04d85ad0bc--
|
||||
44
backend/demo/src/main/resources/turing/turing_award_1991.eml
Normal file
44
backend/demo/src/main/resources/turing/turing_award_1991.eml
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
MIME-Version: 1.0
|
||||
From: Robin Milner <robin.milner@example.com>
|
||||
Date: Mon, 18 Nov 1991 12:00:00 -0700
|
||||
Message-ID: <turing1991@cketti.de>
|
||||
Subject: Elements of Interaction
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=047d7b86e6de64aecb04d85affff
|
||||
|
||||
--047d7b86e6de64aecb04d85affff
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
I am greatly honored to receive this award, bearing the name of Alan
|
||||
Turing. Perhaps Turing would be pleased that it should go to someone
|
||||
educated at his old college, King's College at Cambridge. While there in
|
||||
1956 I wrote my first computer program; it was on the EDSAC. Of course
|
||||
EDSAC made history. But I am ashamed to say it did not lure me into
|
||||
computing, and I ignored computers for four years. In 1960 I thought that
|
||||
computers might be more peaceful to handle than schoolchildren--I was then
|
||||
a teacher--so I applied for a job at Ferranti in London, at the time of
|
||||
Pegasus. I was asked at the interview whether I would like to devote my
|
||||
life to computers. This daunting notion had never crossed my mind. Well,
|
||||
here I am still, and I have had the lucky chance to grow alongside computer
|
||||
science.
|
||||
|
||||
--047d7b86e6de64aecb04d85affff
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>I am greatly honored to receive this award, bearing t=
|
||||
he name of Alan Turing. Perhaps Turing would be pleased that it should go t=
|
||||
o someone educated at his old college, King's College at Cambridge. Whi=
|
||||
le there in 1956 I wrote my first computer program; it was on the EDSAC. Of=
|
||||
course EDSAC made history. But I am ashamed to say it did not lure me into=
|
||||
computing, and I ignored computers for four years. In 1960 I thought that =
|
||||
computers might be more peaceful to handle than schoolchildren--I was then =
|
||||
a teacher--so I applied for a job at Ferranti in London, at the time of=C2=
|
||||
=A0</div>
|
||||
<div>Pegasus. I was asked at the interview whether I would like to devote m=
|
||||
y life to computers. This daunting notion had never crossed my mind. Well, =
|
||||
here I am still, and I have had the lucky chance to grow alongside computer=
|
||||
science.</div>
|
||||
</div>
|
||||
|
||||
--047d7b86e6de64aecb04d85affff--
|
||||
28
backend/demo/src/main/resources/turing/turing_award_1996.eml
Normal file
28
backend/demo/src/main/resources/turing/turing_award_1996.eml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
MIME-Version: 1.0
|
||||
From: Amir Pnueli <amir.pnueli@example.com>
|
||||
Date: Thu, 15 Feb 1996 12:00:00 -0500
|
||||
Message-ID: <turing1996@cketti.de>
|
||||
Subject: Verification Engineering: A Future Profession
|
||||
To: Alan Turing <alan@turing.example>
|
||||
Content-Type: multipart/alternative; boundary=bcaec54fbb222acf6704d85aa523
|
||||
|
||||
--bcaec54fbb222acf6704d85aa523
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
It is time that formal verification (of both software and hardware systems)
|
||||
be demoted from an art practiced by the enlightened few to an activity
|
||||
routinely and mundanely performed by a cadre of Verification Engineers (a
|
||||
new profession), as a standard part of the system development process.
|
||||
|
||||
--bcaec54fbb222acf6704d85aa523
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>It is time that formal verification (of both software=
|
||||
and hardware systems) be demoted from an art practiced by the enlightened =
|
||||
few to an activity routinely and mundanely performed by a cadre of Verifica=
|
||||
tion Engineers (a new profession), as a standard part of the system develop=
|
||||
ment process.</div>
|
||||
</div>
|
||||
|
||||
--bcaec54fbb222acf6704d85aa523--
|
||||
Loading…
Add table
Add a link
Reference in a new issue