Renormalize files
This commit is contained in:
parent
2bf7d29931
commit
f34e528b5a
10
.obsidian/community-plugins.json
vendored
10
.obsidian/community-plugins.json
vendored
@ -1,6 +1,6 @@
|
||||
[
|
||||
"table-editor-obsidian",
|
||||
"obsidian-icon-folder",
|
||||
"obsidian-git",
|
||||
"various-complements"
|
||||
[
|
||||
"table-editor-obsidian",
|
||||
"obsidian-icon-folder",
|
||||
"obsidian-git",
|
||||
"various-complements"
|
||||
]
|
58
.obsidian/core-plugins-migration.json
vendored
58
.obsidian/core-plugins-migration.json
vendored
@ -1,30 +1,30 @@
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"properties": false,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"bookmarks": true,
|
||||
"markdown-importer": false,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"properties": false,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"bookmarks": true,
|
||||
"markdown-importer": false,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false
|
||||
}
|
42
.obsidian/graph.json
vendored
42
.obsidian/graph.json
vendored
@ -1,22 +1,22 @@
|
||||
{
|
||||
"collapse-filter": true,
|
||||
"search": "",
|
||||
"showTags": false,
|
||||
"showAttachments": false,
|
||||
"hideUnresolved": false,
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": true,
|
||||
"colorGroups": [],
|
||||
"collapse-display": true,
|
||||
"showArrow": false,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1,
|
||||
"lineSizeMultiplier": 1,
|
||||
"collapse-forces": true,
|
||||
"centerStrength": 0.518713248970312,
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 0.47203902667406195,
|
||||
"close": false
|
||||
{
|
||||
"collapse-filter": true,
|
||||
"search": "",
|
||||
"showTags": false,
|
||||
"showAttachments": false,
|
||||
"hideUnresolved": false,
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": true,
|
||||
"colorGroups": [],
|
||||
"collapse-display": true,
|
||||
"showArrow": false,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1,
|
||||
"lineSizeMultiplier": 1,
|
||||
"collapse-forces": true,
|
||||
"centerStrength": 0.518713248970312,
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 0.47203902667406195,
|
||||
"close": false
|
||||
}
|
54
.obsidian/hotkeys.json
vendored
54
.obsidian/hotkeys.json
vendored
@ -1,28 +1,28 @@
|
||||
{
|
||||
"editor:context-menu": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "M"
|
||||
}
|
||||
],
|
||||
"obsidian-git:commit": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod",
|
||||
"Shift"
|
||||
],
|
||||
"key": "C"
|
||||
}
|
||||
],
|
||||
"obsidian-git:push2": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod",
|
||||
"Shift"
|
||||
],
|
||||
"key": "P"
|
||||
}
|
||||
]
|
||||
{
|
||||
"editor:context-menu": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "M"
|
||||
}
|
||||
],
|
||||
"obsidian-git:commit": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod",
|
||||
"Shift"
|
||||
],
|
||||
"key": "C"
|
||||
}
|
||||
],
|
||||
"obsidian-git:push2": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod",
|
||||
"Shift"
|
||||
],
|
||||
"key": "P"
|
||||
}
|
||||
]
|
||||
}
|
108
.obsidian/plugins/obsidian-git/data.json
vendored
108
.obsidian/plugins/obsidian-git/data.json
vendored
@ -1,55 +1,55 @@
|
||||
{
|
||||
"commitMessage": "{{date}}",
|
||||
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"autoSaveInterval": 10,
|
||||
"autoPushInterval": 0,
|
||||
"autoPullInterval": 0,
|
||||
"autoPullOnBoot": true,
|
||||
"disablePush": false,
|
||||
"pullBeforePush": true,
|
||||
"disablePopups": true,
|
||||
"listChangedFilesInMessageBody": false,
|
||||
"showStatusBar": true,
|
||||
"updateSubmodules": true,
|
||||
"syncMethod": "rebase",
|
||||
"customMessageOnAutoBackup": false,
|
||||
"autoBackupAfterFileChange": true,
|
||||
"treeStructure": false,
|
||||
"refreshSourceControl": true,
|
||||
"basePath": "",
|
||||
"differentIntervalCommitAndPush": false,
|
||||
"changedFilesInStatusBar": false,
|
||||
"showedMobileNotice": true,
|
||||
"refreshSourceControlTimer": 7000,
|
||||
"showBranchStatusBar": true,
|
||||
"setLastSaveToLastCommit": false,
|
||||
"submoduleRecurseCheckout": false,
|
||||
"gitDir": "",
|
||||
"showFileMenu": true,
|
||||
"lineAuthor": {
|
||||
"show": false,
|
||||
"followMovement": "inactive",
|
||||
"authorDisplay": "initials",
|
||||
"showCommitHash": false,
|
||||
"dateTimeFormatOptions": "date",
|
||||
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
|
||||
"dateTimeTimezone": "viewer-local",
|
||||
"coloringMaxAge": "1y",
|
||||
"colorNew": {
|
||||
"r": 255,
|
||||
"g": 150,
|
||||
"b": 150
|
||||
},
|
||||
"colorOld": {
|
||||
"r": 120,
|
||||
"g": 160,
|
||||
"b": 255
|
||||
},
|
||||
"textColorCss": "var(--text-muted)",
|
||||
"ignoreWhitespace": false,
|
||||
"gutterSpacingFallbackLength": 5,
|
||||
"lastShownAuthorDisplay": "initials",
|
||||
"lastShownDateTimeFormatOptions": "date"
|
||||
},
|
||||
"autoCommitMessage": "{{date}}"
|
||||
{
|
||||
"commitMessage": "{{date}}",
|
||||
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
|
||||
"autoSaveInterval": 10,
|
||||
"autoPushInterval": 0,
|
||||
"autoPullInterval": 0,
|
||||
"autoPullOnBoot": true,
|
||||
"disablePush": false,
|
||||
"pullBeforePush": true,
|
||||
"disablePopups": true,
|
||||
"listChangedFilesInMessageBody": false,
|
||||
"showStatusBar": true,
|
||||
"updateSubmodules": true,
|
||||
"syncMethod": "rebase",
|
||||
"customMessageOnAutoBackup": false,
|
||||
"autoBackupAfterFileChange": true,
|
||||
"treeStructure": false,
|
||||
"refreshSourceControl": true,
|
||||
"basePath": "",
|
||||
"differentIntervalCommitAndPush": false,
|
||||
"changedFilesInStatusBar": false,
|
||||
"showedMobileNotice": true,
|
||||
"refreshSourceControlTimer": 7000,
|
||||
"showBranchStatusBar": true,
|
||||
"setLastSaveToLastCommit": false,
|
||||
"submoduleRecurseCheckout": false,
|
||||
"gitDir": "",
|
||||
"showFileMenu": true,
|
||||
"lineAuthor": {
|
||||
"show": false,
|
||||
"followMovement": "inactive",
|
||||
"authorDisplay": "initials",
|
||||
"showCommitHash": false,
|
||||
"dateTimeFormatOptions": "date",
|
||||
"dateTimeFormatCustomString": "YYYY-MM-DD HH:mm",
|
||||
"dateTimeTimezone": "viewer-local",
|
||||
"coloringMaxAge": "1y",
|
||||
"colorNew": {
|
||||
"r": 255,
|
||||
"g": 150,
|
||||
"b": 150
|
||||
},
|
||||
"colorOld": {
|
||||
"r": 120,
|
||||
"g": 160,
|
||||
"b": 255
|
||||
},
|
||||
"textColorCss": "var(--text-muted)",
|
||||
"ignoreWhitespace": false,
|
||||
"gutterSpacingFallbackLength": 5,
|
||||
"lastShownAuthorDisplay": "initials",
|
||||
"lastShownDateTimeFormatOptions": "date"
|
||||
},
|
||||
"autoCommitMessage": "{{date}}"
|
||||
}
|
718
.obsidian/plugins/obsidian-git/main.js
vendored
718
.obsidian/plugins/obsidian-git/main.js
vendored
File diff suppressed because one or more lines are too long
20
.obsidian/plugins/obsidian-git/manifest.json
vendored
20
.obsidian/plugins/obsidian-git/manifest.json
vendored
@ -1,10 +1,10 @@
|
||||
{
|
||||
"author": "Vinzent",
|
||||
"authorUrl": "https://github.com/Vinzent03",
|
||||
"id": "obsidian-git",
|
||||
"name": "Git",
|
||||
"description": "Integrate Git version control with automatic backup and other advanced features.",
|
||||
"isDesktopOnly": false,
|
||||
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||
"version": "2.28.2"
|
||||
}
|
||||
{
|
||||
"author": "Vinzent",
|
||||
"authorUrl": "https://github.com/Vinzent03",
|
||||
"id": "obsidian-git",
|
||||
"name": "Git",
|
||||
"description": "Integrate Git version control with automatic backup and other advanced features.",
|
||||
"isDesktopOnly": false,
|
||||
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||
"version": "2.28.2"
|
||||
}
|
||||
|
1132
.obsidian/plugins/obsidian-git/styles.css
vendored
1132
.obsidian/plugins/obsidian-git/styles.css
vendored
File diff suppressed because it is too large
Load Diff
304
.obsidian/plugins/obsidian-kanban/main.js
vendored
304
.obsidian/plugins/obsidian-kanban/main.js
vendored
File diff suppressed because one or more lines are too long
22
.obsidian/plugins/obsidian-kanban/manifest.json
vendored
22
.obsidian/plugins/obsidian-kanban/manifest.json
vendored
@ -1,11 +1,11 @@
|
||||
{
|
||||
"id": "obsidian-kanban",
|
||||
"name": "Kanban",
|
||||
"version": "2.0.51",
|
||||
"minAppVersion": "1.0.0",
|
||||
"description": "Create markdown-backed Kanban boards in Obsidian.",
|
||||
"author": "mgmeyers",
|
||||
"authorUrl": "https://github.com/mgmeyers/obsidian-kanban",
|
||||
"helpUrl": "https://publish.obsidian.md/kanban/Obsidian+Kanban+Plugin",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
{
|
||||
"id": "obsidian-kanban",
|
||||
"name": "Kanban",
|
||||
"version": "2.0.51",
|
||||
"minAppVersion": "1.0.0",
|
||||
"description": "Create markdown-backed Kanban boards in Obsidian.",
|
||||
"author": "mgmeyers",
|
||||
"authorUrl": "https://github.com/mgmeyers/obsidian-kanban",
|
||||
"helpUrl": "https://publish.obsidian.md/kanban/Obsidian+Kanban+Plugin",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
2
.obsidian/plugins/obsidian-kanban/styles.css
vendored
2
.obsidian/plugins/obsidian-kanban/styles.css
vendored
File diff suppressed because one or more lines are too long
822
.obsidian/plugins/obsidian-tasks-plugin/main.js
vendored
822
.obsidian/plugins/obsidian-tasks-plugin/main.js
vendored
File diff suppressed because one or more lines are too long
@ -1,12 +1,12 @@
|
||||
{
|
||||
"id": "obsidian-tasks-plugin",
|
||||
"name": "Tasks",
|
||||
"version": "7.13.0",
|
||||
"minAppVersion": "1.1.1",
|
||||
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
|
||||
"helpUrl": "https://publish.obsidian.md/tasks/",
|
||||
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
|
||||
"authorUrl": "https://github.com/obsidian-tasks-group",
|
||||
"fundingUrl": "https://github.com/sponsors/claremacrae",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
{
|
||||
"id": "obsidian-tasks-plugin",
|
||||
"name": "Tasks",
|
||||
"version": "7.13.0",
|
||||
"minAppVersion": "1.1.1",
|
||||
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
|
||||
"helpUrl": "https://publish.obsidian.md/tasks/",
|
||||
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
|
||||
"authorUrl": "https://github.com/obsidian-tasks-group",
|
||||
"fundingUrl": "https://github.com/sponsors/claremacrae",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
470
.obsidian/plugins/table-editor-obsidian/main.js
vendored
470
.obsidian/plugins/table-editor-obsidian/main.js
vendored
File diff suppressed because one or more lines are too long
@ -1,17 +1,17 @@
|
||||
{
|
||||
"id": "table-editor-obsidian",
|
||||
"name": "Advanced Tables",
|
||||
"author": "Tony Grosinger",
|
||||
"authorUrl": "https://grosinger.net",
|
||||
"description": "Improved table navigation, formatting, manipulation, and formulas",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "1.0.0",
|
||||
"version": "0.22.1",
|
||||
"js": "main.js",
|
||||
"fundingUrl": {
|
||||
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
|
||||
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
|
||||
"Paypal": "https://paypal.me/tgrosinger"
|
||||
},
|
||||
"donation": "https://buymeacoffee.com/tgrosinger"
|
||||
}
|
||||
{
|
||||
"id": "table-editor-obsidian",
|
||||
"name": "Advanced Tables",
|
||||
"author": "Tony Grosinger",
|
||||
"authorUrl": "https://grosinger.net",
|
||||
"description": "Improved table navigation, formatting, manipulation, and formulas",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "1.0.0",
|
||||
"version": "0.22.1",
|
||||
"js": "main.js",
|
||||
"fundingUrl": {
|
||||
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
|
||||
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
|
||||
"Paypal": "https://paypal.me/tgrosinger"
|
||||
},
|
||||
"donation": "https://buymeacoffee.com/tgrosinger"
|
||||
}
|
||||
|
154
.obsidian/plugins/table-editor-obsidian/styles.css
vendored
154
.obsidian/plugins/table-editor-obsidian/styles.css
vendored
@ -1,78 +1,78 @@
|
||||
:root {
|
||||
--advanced-tables-helper-size: 28px;
|
||||
}
|
||||
|
||||
.HyperMD-table-row span.cm-inline-code {
|
||||
font-size: 100%;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.advanced-tables-buttons>div>.title {
|
||||
font-weight: var(--font-medium);
|
||||
font-size: var(--nav-item-size);
|
||||
color: var(--nav-item-color);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container {
|
||||
column-gap: 0.2rem;
|
||||
margin: 0.2rem 0 0.2rem 0;
|
||||
justify-content: start;
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container::before {
|
||||
min-width: 2.6rem;
|
||||
line-height: var(--advanced-tables-helper-size);
|
||||
font-size: var(--nav-item-size);
|
||||
font-weight: var(--nav-item-weight);
|
||||
color: var(--nav-item-color);
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container>* {
|
||||
height: var(--advanced-tables-helper-size);
|
||||
line-height: var(--advanced-tables-helper-size);
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button {
|
||||
width: var(--advanced-tables-helper-size);
|
||||
height: var(--advanced-tables-helper-size);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: var(--radius-s);
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button:hover {
|
||||
background-color: var(--nav-item-background-hover);
|
||||
color: var(--nav-item-color-hover);
|
||||
font-weight: var(--nav-item-weight-hover);
|
||||
}
|
||||
|
||||
.advanced-tables-row-label {
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.widget-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
fill: var(--text-muted);
|
||||
}
|
||||
|
||||
.widget-icon:hover {
|
||||
fill: var(--text-normal);
|
||||
}
|
||||
|
||||
.advanced-tables-csv-export textarea {
|
||||
height: 200px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.advanced-tables-donation {
|
||||
width: 70%;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.advanced-tables-donate-button {
|
||||
margin: 10px;
|
||||
:root {
|
||||
--advanced-tables-helper-size: 28px;
|
||||
}
|
||||
|
||||
.HyperMD-table-row span.cm-inline-code {
|
||||
font-size: 100%;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.advanced-tables-buttons>div>.title {
|
||||
font-weight: var(--font-medium);
|
||||
font-size: var(--nav-item-size);
|
||||
color: var(--nav-item-color);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container {
|
||||
column-gap: 0.2rem;
|
||||
margin: 0.2rem 0 0.2rem 0;
|
||||
justify-content: start;
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container::before {
|
||||
min-width: 2.6rem;
|
||||
line-height: var(--advanced-tables-helper-size);
|
||||
font-size: var(--nav-item-size);
|
||||
font-weight: var(--nav-item-weight);
|
||||
color: var(--nav-item-color);
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container>* {
|
||||
height: var(--advanced-tables-helper-size);
|
||||
line-height: var(--advanced-tables-helper-size);
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button {
|
||||
width: var(--advanced-tables-helper-size);
|
||||
height: var(--advanced-tables-helper-size);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: var(--radius-s);
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button:hover {
|
||||
background-color: var(--nav-item-background-hover);
|
||||
color: var(--nav-item-color-hover);
|
||||
font-weight: var(--nav-item-weight-hover);
|
||||
}
|
||||
|
||||
.advanced-tables-row-label {
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.widget-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
fill: var(--text-muted);
|
||||
}
|
||||
|
||||
.widget-icon:hover {
|
||||
fill: var(--text-normal);
|
||||
}
|
||||
|
||||
.advanced-tables-csv-export textarea {
|
||||
height: 200px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.advanced-tables-donation {
|
||||
width: 70%;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.advanced-tables-donate-button {
|
||||
margin: 10px;
|
||||
}
|
204
.obsidian/plugins/various-complements/data.json
vendored
204
.obsidian/plugins/various-complements/data.json
vendored
@ -1,103 +1,103 @@
|
||||
{
|
||||
"strategy": "english-only",
|
||||
"cedictPath": "./cedict_ts.u8",
|
||||
"matchStrategy": "prefix",
|
||||
"fuzzyMatch": true,
|
||||
"minFuzzyMatchScore": 0.5,
|
||||
"matchingWithoutEmoji": true,
|
||||
"treatAccentDiacriticsAsAlphabeticCharacters": false,
|
||||
"treatUnderscoreAsPartOfWord": false,
|
||||
"maxNumberOfSuggestions": 5,
|
||||
"maxNumberOfWordsAsPhrase": 3,
|
||||
"minNumberOfCharactersTriggered": 0,
|
||||
"minNumberOfWordsTriggeredPhrase": 1,
|
||||
"complementAutomatically": true,
|
||||
"delayMilliSeconds": 0,
|
||||
"disableSuggestionsDuringImeOn": false,
|
||||
"disableSuggestionsInMathBlock": true,
|
||||
"insertSpaceAfterCompletion": true,
|
||||
"firstCharactersDisableSuggestions": ":/^",
|
||||
"patternsToSuppressTrigger": [
|
||||
"^~~~.*",
|
||||
"^```.*"
|
||||
],
|
||||
"phrasePatternsToSuppressTrigger": [],
|
||||
"noAutoFocusUntilCycle": false,
|
||||
"showMatchStrategy": false,
|
||||
"showComplementAutomatically": false,
|
||||
"showIndexingStatus": false,
|
||||
"descriptionOnSuggestion": "Short",
|
||||
"hotkeys": {
|
||||
"select": [
|
||||
{
|
||||
"modifiers": [],
|
||||
"key": "Enter"
|
||||
}
|
||||
],
|
||||
"select with custom alias": [],
|
||||
"up": [
|
||||
{
|
||||
"modifiers": [],
|
||||
"key": "ArrowUp"
|
||||
}
|
||||
],
|
||||
"down": [
|
||||
{
|
||||
"modifiers": [],
|
||||
"key": "ArrowDown"
|
||||
}
|
||||
],
|
||||
"select 1st": [],
|
||||
"select 2nd": [],
|
||||
"select 3rd": [],
|
||||
"select 4th": [],
|
||||
"select 5th": [],
|
||||
"select 6th": [],
|
||||
"select 7th": [],
|
||||
"select 8th": [],
|
||||
"select 9th": [],
|
||||
"open": [],
|
||||
"completion": [],
|
||||
"insert as text": []
|
||||
},
|
||||
"propagateEsc": false,
|
||||
"enableCurrentFileComplement": true,
|
||||
"currentFileMinNumberOfCharacters": 0,
|
||||
"onlyComplementEnglishOnCurrentFileComplement": false,
|
||||
"excludeCurrentFileWordPatterns": [],
|
||||
"enableCurrentVaultComplement": false,
|
||||
"currentVaultMinNumberOfCharacters": 0,
|
||||
"includeCurrentVaultPathPrefixPatterns": "",
|
||||
"excludeCurrentVaultPathPrefixPatterns": "",
|
||||
"includeCurrentVaultOnlyFilesUnderCurrentDirectory": false,
|
||||
"excludeCurrentVaultWordPatterns": [],
|
||||
"enableCustomDictionaryComplement": false,
|
||||
"customDictionaryPaths": "https://raw.githubusercontent.com/first20hours/google-10000-english/master/google-10000-english-no-swears.txt",
|
||||
"columnDelimiter": "Tab",
|
||||
"customDictionaryWordRegexPattern": "",
|
||||
"delimiterToHideSuggestion": "",
|
||||
"delimiterToDivideSuggestionsForDisplayFromInsertion": "",
|
||||
"caretLocationSymbolAfterComplement": "",
|
||||
"displayedTextSuffix": " => ...",
|
||||
"enableInternalLinkComplement": true,
|
||||
"suggestInternalLinkWithAlias": false,
|
||||
"excludeInternalLinkPathPrefixPatterns": "",
|
||||
"updateInternalLinksOnSave": true,
|
||||
"insertAliasTransformedFromDisplayedInternalLink": {
|
||||
"enabled": false,
|
||||
"beforeRegExp": "",
|
||||
"after": ""
|
||||
},
|
||||
"frontMatterKeyForExclusionInternalLink": "",
|
||||
"enableFrontMatterComplement": false,
|
||||
"frontMatterComplementMatchStrategy": "inherit",
|
||||
"insertCommaAfterFrontMatterCompletion": false,
|
||||
"intelligentSuggestionPrioritization": {
|
||||
"enabled": true,
|
||||
"historyFilePath": "",
|
||||
"maxDaysToKeepHistory": 30,
|
||||
"maxNumberOfHistoryToKeep": 0
|
||||
},
|
||||
"disableOnMobile": false,
|
||||
"showLogAboutPerformanceInConsole": false
|
||||
{
|
||||
"strategy": "english-only",
|
||||
"cedictPath": "./cedict_ts.u8",
|
||||
"matchStrategy": "prefix",
|
||||
"fuzzyMatch": true,
|
||||
"minFuzzyMatchScore": 0.5,
|
||||
"matchingWithoutEmoji": true,
|
||||
"treatAccentDiacriticsAsAlphabeticCharacters": false,
|
||||
"treatUnderscoreAsPartOfWord": false,
|
||||
"maxNumberOfSuggestions": 5,
|
||||
"maxNumberOfWordsAsPhrase": 3,
|
||||
"minNumberOfCharactersTriggered": 0,
|
||||
"minNumberOfWordsTriggeredPhrase": 1,
|
||||
"complementAutomatically": true,
|
||||
"delayMilliSeconds": 0,
|
||||
"disableSuggestionsDuringImeOn": false,
|
||||
"disableSuggestionsInMathBlock": true,
|
||||
"insertSpaceAfterCompletion": true,
|
||||
"firstCharactersDisableSuggestions": ":/^",
|
||||
"patternsToSuppressTrigger": [
|
||||
"^~~~.*",
|
||||
"^```.*"
|
||||
],
|
||||
"phrasePatternsToSuppressTrigger": [],
|
||||
"noAutoFocusUntilCycle": false,
|
||||
"showMatchStrategy": false,
|
||||
"showComplementAutomatically": false,
|
||||
"showIndexingStatus": false,
|
||||
"descriptionOnSuggestion": "Short",
|
||||
"hotkeys": {
|
||||
"select": [
|
||||
{
|
||||
"modifiers": [],
|
||||
"key": "Enter"
|
||||
}
|
||||
],
|
||||
"select with custom alias": [],
|
||||
"up": [
|
||||
{
|
||||
"modifiers": [],
|
||||
"key": "ArrowUp"
|
||||
}
|
||||
],
|
||||
"down": [
|
||||
{
|
||||
"modifiers": [],
|
||||
"key": "ArrowDown"
|
||||
}
|
||||
],
|
||||
"select 1st": [],
|
||||
"select 2nd": [],
|
||||
"select 3rd": [],
|
||||
"select 4th": [],
|
||||
"select 5th": [],
|
||||
"select 6th": [],
|
||||
"select 7th": [],
|
||||
"select 8th": [],
|
||||
"select 9th": [],
|
||||
"open": [],
|
||||
"completion": [],
|
||||
"insert as text": []
|
||||
},
|
||||
"propagateEsc": false,
|
||||
"enableCurrentFileComplement": true,
|
||||
"currentFileMinNumberOfCharacters": 0,
|
||||
"onlyComplementEnglishOnCurrentFileComplement": false,
|
||||
"excludeCurrentFileWordPatterns": [],
|
||||
"enableCurrentVaultComplement": false,
|
||||
"currentVaultMinNumberOfCharacters": 0,
|
||||
"includeCurrentVaultPathPrefixPatterns": "",
|
||||
"excludeCurrentVaultPathPrefixPatterns": "",
|
||||
"includeCurrentVaultOnlyFilesUnderCurrentDirectory": false,
|
||||
"excludeCurrentVaultWordPatterns": [],
|
||||
"enableCustomDictionaryComplement": false,
|
||||
"customDictionaryPaths": "https://raw.githubusercontent.com/first20hours/google-10000-english/master/google-10000-english-no-swears.txt",
|
||||
"columnDelimiter": "Tab",
|
||||
"customDictionaryWordRegexPattern": "",
|
||||
"delimiterToHideSuggestion": "",
|
||||
"delimiterToDivideSuggestionsForDisplayFromInsertion": "",
|
||||
"caretLocationSymbolAfterComplement": "",
|
||||
"displayedTextSuffix": " => ...",
|
||||
"enableInternalLinkComplement": true,
|
||||
"suggestInternalLinkWithAlias": false,
|
||||
"excludeInternalLinkPathPrefixPatterns": "",
|
||||
"updateInternalLinksOnSave": true,
|
||||
"insertAliasTransformedFromDisplayedInternalLink": {
|
||||
"enabled": false,
|
||||
"beforeRegExp": "",
|
||||
"after": ""
|
||||
},
|
||||
"frontMatterKeyForExclusionInternalLink": "",
|
||||
"enableFrontMatterComplement": false,
|
||||
"frontMatterComplementMatchStrategy": "inherit",
|
||||
"insertCommaAfterFrontMatterCompletion": false,
|
||||
"intelligentSuggestionPrioritization": {
|
||||
"enabled": true,
|
||||
"historyFilePath": "",
|
||||
"maxDaysToKeepHistory": 30,
|
||||
"maxNumberOfHistoryToKeep": 0
|
||||
},
|
||||
"disableOnMobile": false,
|
||||
"showLogAboutPerformanceInConsole": false
|
||||
}
|
15890
.obsidian/plugins/various-complements/main.js
vendored
15890
.obsidian/plugins/various-complements/main.js
vendored
File diff suppressed because one or more lines are too long
@ -1,10 +1,10 @@
|
||||
{
|
||||
"id": "various-complements",
|
||||
"name": "Various Complements",
|
||||
"version": "10.0.3",
|
||||
"minAppVersion": "0.16.0",
|
||||
"description": "This plugin enables you to complete words like the auto-completion of IDE",
|
||||
"author": "tadashi-aikawa",
|
||||
"authorUrl": "https://github.com/tadashi-aikawa",
|
||||
"isDesktopOnly": false
|
||||
{
|
||||
"id": "various-complements",
|
||||
"name": "Various Complements",
|
||||
"version": "10.0.3",
|
||||
"minAppVersion": "0.16.0",
|
||||
"description": "This plugin enables you to complete words like the auto-completion of IDE",
|
||||
"author": "tadashi-aikawa",
|
||||
"authorUrl": "https://github.com/tadashi-aikawa",
|
||||
"isDesktopOnly": false
|
||||
}
|
368
.obsidian/plugins/various-complements/styles.css
vendored
368
.obsidian/plugins/various-complements/styles.css
vendored
@ -1,184 +1,184 @@
|
||||
.various-complements__settings__text-area-path {
|
||||
height: 120px;
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
.various-complements__settings__text-area-path-dense {
|
||||
height: 120px;
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.various-complements__settings__current-settings-json {
|
||||
font-size: 0.75em;
|
||||
height: 800px;
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
.various-complements__settings__warning {
|
||||
color: darkorange;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.various-complements__settings__nested {
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.various-complements__settings__header {
|
||||
position: relative;
|
||||
padding-left: 25px;
|
||||
}
|
||||
.various-complements__settings__header::before {
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
margin-top: 3px;
|
||||
margin-left: -25px;
|
||||
filter: invert(0.5) hue-rotate(180deg);
|
||||
}
|
||||
|
||||
.various-complements__settings__header__main::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem02LjkzIDZoLTIuOTVhMTUuNjUgMTUuNjUgMCAwIDAtMS4zOC0zLjU2QTguMDMgOC4wMyAwIDAgMSAxOC45MiA4ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMnMuMDYgMS4zNC4xNCAySDQuMjZ6bS44MiAyaDIuOTVjLjMyIDEuMjUuNzggMi40NSAxLjM4IDMuNTZBNy45ODcgNy45ODcgMCAwIDEgNS4wOCAxNnptMi45NS04SDUuMDhhNy45ODcgNy45ODcgMCAwIDEgNC4zMy0zLjU2QTE1LjY1IDE1LjY1IDAgMCAwIDguMDMgOHpNMTIgMTkuOTZjLS44My0xLjItMS40OC0yLjUzLTEuOTEtMy45NmgzLjgyYy0uNDMgMS40My0xLjA4IDIuNzYtMS45MSAzLjk2ek0xNC4zNCAxNEg5LjY2Yy0uMDktLjY2LS4xNi0xLjMyLS4xNi0ycy4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAycy0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVhOC4wMyA4LjAzIDAgMCAxLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTJzLS4wNi0xLjM0LS4xNC0yaDMuMzhjLjE2LjY0LjI2IDEuMzEuMjYgMnMtLjEgMS4zNi0uMjYgMmgtMy4zOHoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__settings__header__appearance::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoM2MtLjU1LjU1LTEgLjg3LTEgMS41OWMwIC43OC42MyAxLjQxIDEuNDEgMS40MWg5LjE3Yy43OCAwIDEuNDEtLjYzIDEuNDEtMS40MWMwLS43Mi0uNDQtMS4wMy0xLTEuNTloM2MxLjEgMCAyLS45IDItMlY1QzIyIDMuOSAyMS4xIDMgMjAgM3ptMCAxM0g0VjVoMTZ2MTF6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__key-customization::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik0yOCAyNkg0YTIgMiAwIDAgMS0yLTJWMTBhMiAyIDAgMCAxIDItMmgyNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJ6TTQgMTB2MTRoMjRWMTB6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNMTAgMjBoMTF2MkgxMHoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjxwYXRoIGQ9Ik02IDEyaDJ2Mkg2eiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PHBhdGggZD0iTTEwIDEyaDJ2MmgtMnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjxwYXRoIGQ9Ik0xNCAxMmgydjJoLTJ6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNMTggMTJoMnYyaC0yeiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PHBhdGggZD0iTTYgMjBoMnYySDZ6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNNiAxNmgydjJINnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjxwYXRoIGQ9Ik0xMCAxNmgydjJoLTJ6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNMTQgMTZoMnYyaC0yeiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PHBhdGggZD0iTTIyIDEyaDR2MmgtNHoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjxwYXRoIGQ9Ik0yMiAxNmg0djJoLTR6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNMTggMTZoMnYyaC0yeiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PHBhdGggZD0iTTIzIDIwaDN2MmgtM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__settings__header__current-file::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01IDFhMiAyIDAgMCAwLTIgMnY5Ljk5OGEyIDIgMCAwIDAgMiAyaDEuMDQ2bC4yNS0xSDVhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTFoM3YyLjVBMS41IDEuNSAwIDAgMCA5LjQ5OCA2aDIuNXYxLjQ0Yy4zMDYtLjIwOS42NDctLjM0NCAxLS40MDVWNS40MTNhMS41IDEuNSAwIDAgMC0uNDQtMS4wNkw5LjY0NSAxLjQzOUExLjUgMS41IDAgMCAwIDguNTg1IDFINXptNi43OTEgNEg5LjVhLjUuNSAwIDAgMS0uNS0uNVYyLjIwNmwyLjc5MiAyLjc5MnptMS4yMDcgMy4wNmMtLjI0Mi4wNzEtLjQ3LjIwMy0uNjYyLjM5NEw4LjA1IDEyLjc0YTIuNzc3IDIuNzc3IDAgMCAwLS43MjIgMS4yNTdsLS4wMDkuMDMzbC0uMzAyIDEuMjExYS42MS42MSAwIDAgMCAuNzM4Ljc0bDEuMjExLS4zMDNhMi43NzYgMi43NzYgMCAwIDAgMS4yOS0uNzNsNC4yODgtNC4yODhhMS41NiAxLjU2IDAgMCAwLTEuNTQ1LTIuNnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__current-vault::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEwLDEwYy00LjQsMC04LDMuNi04LDh2NjRjMCw0LjQsMy42LDgsOCw4aDJ2MmgxMHYtMmg1NnYyaDEwdi0yaDJjNC40LDAsOC0zLjYsOC04VjE4YzAtNC40LTMuNi04LTgtOEwxMCwxMHogTTEwLDE0aDgwIGMyLjIsMCw0LDEuOCw0LDR2NjRjMCwyLjItMS44LDQtNCw0SDEwYy0yLjIsMC00LTEuOC00LTRWMThDNiwxNS44LDcuOCwxNCwxMCwxNHogTTEzLjYsMjBjLTEsMC4yLTEuNiwxLTEuNiwydjIzLjQgYy0wLjEsMC40LTAuMSwwLjgsMCwxLjJ2Ny4xYzAsMC4xLDAsMC4xLDAsMC4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC4xLDAsMC4xLDAsMC4yVjc4YzAsMS4xLDAuOSwyLDIsMmg3MmMxLjEsMCwyLTAuOSwyLTJWMjIgYzAtMS4xLTAuOS0yLTItMkgxNGMtMC4xLDAtMC4xLDAtMC4yLDBTMTMuNywyMCwxMy42LDIweiBNMTYsMjRoNjh2NTJIMTZWNTQuOWwzLjQtMy40YzAuNC0wLjQsMC42LTAuOSwwLjYtMS40cy0wLjItMS4xLTAuNi0xLjQgTDE2LDQ1LjFMMTYsMjR6IE00OS44LDI3LjljLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuMSwwLTAuMSwwLTAuMiwwLjFjLTUuNSwwLjItMTAuNSwyLjQtMTQuMyw1LjljLTAuNSwwLjItMC45LDAuNi0xLjEsMS4xIGMtMy40LDMuNy01LjYsOC42LTUuOSwxMy45Yy0wLjQsMC42LTAuNCwxLjQsMCwyYzAuMiw1LjMsMi4zLDEwLjEsNS43LDEzLjhjMC4yLDAuNywwLjcsMS4zLDEuNCwxLjRjMy44LDMuNCw4LjgsNS41LDE0LjMsNS43IGMwLjEsMCwwLjEsMCwwLjIsMC4xYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMSwwLDAuMi0wLjFjNS40LTAuMiwxMC40LTIuMywxNC4yLTUuNyBjMC43LTAuMiwxLjMtMC44LDEuNC0xLjVjMy40LTMuOCw1LjUtOC43LDUuNy0xNC4yYzAsMCwwLTAuMSwwLjEtMC4xYzAsMCwwLDAsMC0wLjFjMC0wLjEsMC0wLjMsMC0wLjRjMC0wLjEsMC0wLjIsMC0wLjMgYzAtMC4xLDAtMC4zLTAuMS0wLjRjLTAuMi01LjYtMi40LTEwLjctNi0xNC41YzAsMCwwLDAtMC4xLTAuMWMwLDAsMC0wLjEtMC4xLTAuMWMtMC4yLTAuMi0wLjQtMC40LTAuNi0wLjYgYy0zLjgtMy42LTguOS01LjktMTQuNC02LjFDNTAuNSwyNy45LDUwLjEsMjcuOSw0OS44LDI3Ljl6IE00OCwzMi4xYzAsMS4xLDAuOSwyLDIsMmMxLjEsMCwyLTAuOSwyLTJjMy41LDAuNCw2LjYsMS44LDkuMywzLjkgYy0wLjYsMC41LTAuOSwxLjMtMC43LDJjMC4yLDAuNywwLjgsMS4zLDEuNSwxLjVjMC44LDAuMiwxLjUtMC4xLDItMC43YzIuMSwyLjYsMy41LDUuOCwzLjksOS4zYzAsMC0wLjEsMC0wLjEsMCBjLTAuMSwwLTAuMSwwLTAuMiwwYy0xLjEsMC4xLTEuOCwxLjEtMS43LDIuMXMxLDEuOSwyLjEsMS45Yy0wLjQsMy41LTEuOCw2LjYtMy45LDkuM2MtMC40LTAuNC0xLTAuNi0xLjYtMC42Yy0wLjEsMC0wLjEsMC0wLjIsMCBjLTAuNywwLjEtMS4zLDAuNy0xLjUsMS40Yy0wLjIsMC43LDAsMS41LDAuNSwyYy0yLjYsMi4xLTUuOCwzLjUtOS4zLDMuOWMwLTAuNi0wLjItMS4xLTAuNi0xLjVjLTAuNC0wLjQtMS0wLjYtMS41LTAuNSBjLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuOSwwLjItMS42LDEtMS42LDEuOWMtMy41LTAuNC02LjYtMS44LTkuMy0zLjljMC42LTAuNiwwLjctMS41LDAuNC0yLjJjLTAuMy0wLjctMS4xLTEuMi0xLjktMS4yIGMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuNCwwLjEtMC44LDAuMy0xLjEsMC42Yy0yLjEtMi42LTMuNS01LjgtMy45LTkuM2MxLjEsMCwyLTAuOSwyLTJjMC0xLjEtMC45LTItMi0yYzAuNC0zLjUsMS44LTYuNiwzLjktOS4zIGMwLjUsMC42LDEuMywwLjksMiwwLjdjMC43LTAuMiwxLjMtMC44LDEuNS0xLjVjMC4yLTAuOC0wLjEtMS41LTAuNy0yQzQxLjQsMzMuOSw0NC41LDMyLjQsNDgsMzIuMUw0OCwzMi4xeiBNNTAsNDAgYy01LjUsMC0xMCw0LjUtMTAsMTBzNC41LDEwLDEwLDEwczEwLTQuNSwxMC0xMFM1NS41LDQwLDUwLDQweiBNNTAsNDRjMy4zLDAsNiwyLjcsNiw2cy0yLjcsNi02LDZzLTYtMi43LTYtNlM0Ni43LDQ0LDUwLDQ0eiI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__settings__header__custom-dictionary::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHJlY3QgeD0iMzIiIHk9Ijk2IiB3aWR0aD0iNjQiIGhlaWdodD0iMzY4IiByeD0iMTYiIHJ5PSIxNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMzIiPjwvcmVjdD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDIyNGgxMjgiPjwvcGF0aD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDQwMGgxMjgiPjwvcGF0aD48cmVjdCB4PSIxMTIiIHk9IjE2MCIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIzMDQiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxyZWN0IHg9IjI1NiIgeT0iNDgiIHdpZHRoPSI5NiIgaGVpZ2h0PSI0MTYiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxwYXRoIGQ9Ik00MjIuNDYgOTYuMTFsLTQwLjQgNC4yNWMtMTEuMTIgMS4xNy0xOS4xOCAxMS41Ny0xNy45MyAyMy4xbDM0LjkyIDMyMS41OWMxLjI2IDExLjUzIDExLjM3IDIwIDIyLjQ5IDE4Ljg0bDQwLjQtNC4yNWMxMS4xMi0xLjE3IDE5LjE4LTExLjU3IDE3LjkzLTIzLjFMNDQ1IDExNWMtMS4zMS0xMS41OC0xMS40Mi0yMC4wNi0yMi41NC0xOC44OXoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__settings__header__internal-link::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEyLDBDNS40LDAsMCw1LjQsMCwxMnM1LjQsMTIsMTIsMTJjMi42LDAsNS0wLjgsNi45LTIuMmwxNS42LDE1LjZDMzEuNyw0MC44LDMwLDQ1LjIsMzAsNTBjMCw0LDEuMiw3LjYsMy4yLDEwLjcgTDIwLjEsNzEuMWMtMi4xLTEuOS01LTMuMS04LjEtMy4xQzUuNCw2OCwwLDczLjQsMCw4MHM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyYzAtMi4xLTAuNS00LTEuNS01LjhsMTMuMi0xMC40IEMzOS4zLDY3LjYsNDQuNCw3MCw1MCw3MGMyLjcsMCw1LjItMC41LDcuNS0xLjRsNS4zLDkuOUM1OS45LDgwLjcsNTgsODQuMSw1OCw4OGMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEycy01LjQtMTItMTItMTIgYy0xLjMsMC0yLjYsMC4yLTMuOCwwLjZMNjEsNjYuN2MzLjgtMi41LDYuNy02LjIsOC4xLTEwLjZsNi45LDEuNGMwLDAuMiwwLDAuMywwLDAuNWMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyIGMwLTYuNi01LjQtMTItMTItMTJjLTUuMSwwLTkuNCwzLjItMTEuMiw3LjZsLTYuOS0xLjVjMC4xLTAuNywwLjEtMS40LDAuMS0yLjFjMC03LjktNC42LTE0LjctMTEuMy0xNy45bDMuMS04LjIgYzAuNywwLjEsMS41LDAuMiwyLjIsMC4yYzYuNiwwLDEyLTUuNCwxMi0xMlM3MC42LDAsNjQsMFM1Miw1LjQsNTIsMTJjMCw0LjQsMi41LDguMyw2LjEsMTAuNEw1NSwzMC43Yy0xLjYtMC40LTMuMy0wLjctNS0wLjcgYy00LjgsMC05LjIsMS43LTEyLjYsNC41TDIxLjgsMTguOWMxLjQtMiwyLjItNC40LDIuMi02LjlDMjQsNS40LDE4LjYsMCwxMiwwTDEyLDB6IE0xMiw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LTggUzcuNiw0LDEyLDR6IE02NCw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LThTNTkuNiw0LDY0LDR6IE01MCwzNGM4LjksMCwxNiw3LjEsMTYsMTZjMCw4LjktNy4xLDE2LTE2LDE2IGMtOC45LDAtMTYtNy4xLTE2LTE2YzAtNC4zLDEuNy04LjIsNC40LTExLjFjMC4yLTAuMSwwLjMtMC4zLDAuNC0wLjRDNDEuOCwzNS43LDQ1LjcsMzQsNTAsMzR6IE04OCw1MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhzLTgtMy42LTgtOFM4My42LDUwLDg4LDUweiBNMTIsNzJjNC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDhzLTgtMy42LTgtOFM3LjYsNzIsMTIsNzJ6IE03MCw4MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhjLTQuNCwwLTgtMy42LTgtOGMwLTMsMS43LTUuNiw0LjEtN2MwLjEsMCwwLjEsMCwwLjItMC4xYzAsMCwwLDAsMC4xLTAuMWMwLDAsMC4xLDAsMC4xLTAuMUM2Ny42LDgwLjMsNjguNyw4MCw3MCw4MHogIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__settings__header__front-matter::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMC4zMiAyLjAxM0E0IDQgMCAwIDAgNi4xNjIgNy4xM2wtMy45ODcgMy45ODZhLjYuNiAwIDAgMC0uMTc2LjQyNFYxNC40YS42LjYgMCAwIDAgLjYuNmgyLjhhLjYuNiAwIDAgMCAuNi0uNlYxM2gxLjlhLjYuNiAwIDAgMCAuNi0uNnYtMS42OTNsLjczNS0uNzM1YTUuNTEgNS41MSAwIDAgMS0uNTY5LS44NDZsLS45OS45OTFhLjYuNiAwIDAgMC0uMTc2LjQyNFYxMkg1LjZhLjYuNiAwIDAgMC0uNi42VjE0SDN2LTIuMjkzbDQuMzItNC4zMmwtLjExOC0uMzAzYTMuMDAxIDMuMDAxIDAgMCAxIDEuOTYtMy45NjVjLjMzLS40MjMuNzItLjc5NiAxLjE1Ny0xLjEwNnpNMTMuNSA2LjI1YS43NS43NSAwIDEgMCAwLTEuNWEuNzUuNzUgMCAwIDAgMCAxLjV6TTkgNi41YTQuNSA0LjUgMCAxIDEgNyAzLjc0MnYyLjA1bC43ODMuNzg0YS42LjYgMCAwIDEgMCAuODQ4TDE1LjcwNyAxNWwxLjA2OCAxLjA2N2EuNi42IDAgMCAxLS4wNS44OTNsLTIuMzUgMS44OGEuNi42IDAgMCAxLS43NSAwbC0yLjQtMS45MmEuNi42IDAgMCAxLS4yMjUtLjQ2OHYtNi4yMUE0LjQ5NiA0LjQ5NiAwIDAgMSA5IDYuNXpNMTMuNSAzYTMuNSAzLjUgMCAwIDAtMS43NSA2LjUzMmEuNS41IDAgMCAxIC4yNS40MzN2Ni4yOTVsMiAxLjZsMS43NTEtMS40MDFsLTEuMDM0LTEuMDM1YS42LjYgMCAwIDEgMC0uODQ4bDEuMDc2LTEuMDc2bC0uNjE3LS42MTdhLjYuNiAwIDAgMS0uMTc2LS40MjRWOS45NjVhLjUuNSAwIDAgMSAuMjUtLjQzM0EzLjUgMy41IDAgMCAwIDEzLjUgM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__intelligent-suggestion-prioritization::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik02LjEzIDIuNzkzQTMuOTEgMy45MSAwIDAgMSA4LjUgMmExLjc1NyAxLjc1NyAwIDAgMSAxLjUuNzhBMS43NTcgMS43NTcgMCAwIDEgMTEuNSAyYTMuOTEgMy45MSAwIDAgMSAyLjM3Ljc5M2MuNTI1LjQwOC45My45NzMgMS4wNzMgMS42NTZjLjMyOC4wMjUuNjI4LjE2MS44OC4zNjZjLjM4Mi4zMS42Ni43NzUuODM1IDEuMjY3Yy4yNzQuNzY1LjM0OCAxLjc0LjA2NCAyLjU3Yy4wNzIuMDM0LjE0My4wNzQuMjEyLjEyYy4yNzUuMTgzLjQ4NC40NDUuNjM4Ljc1NGMuMzAzLjYwNS40MjggMS40NDkuNDI4IDIuNDc0YzAgMS4xNDEtLjQzNSAxLjkwNy0uOTg3IDIuMzhhMi42OCAyLjY4IDAgMCAxLTEuMDU0LjU1NWMtLjEuNTU4LS4zOCAxLjIwNC0uODE5IDEuNzUyQzE0LjU3IDE3LjQwMiAxMy42ODYgMTggMTIuNSAxOGMtLjk0IDAtMS42ODgtLjUyLTIuMTc0LTEuMDNhNC4yNTIgNC4yNTIgMCAwIDEtLjMyNi0uMzg1YTQuMjQ1IDQuMjQ1IDAgMCAxLS4zMjYuMzg1QzkuMTg4IDE3LjQ4IDguNDQxIDE4IDcuNSAxOGMtMS4xODYgMC0yLjA2OS0uNTk4LTIuNjQtMS4zMTNhNC4wNTcgNC4wNTcgMCAwIDEtLjgxOS0xLjc1MmEyLjY4IDIuNjggMCAwIDEtMS4wNTQtLjU1NUMyLjQzNSAxMy45MDcgMiAxMy4xNCAyIDEyYzAtMS4wMjUuMTI2LTEuODcuNDI4LTIuNDc0Yy4xNTQtLjMwOS4zNjMtLjU3LjYzOC0uNzU1YTEuNTggMS41OCAwIDAgMSAuMjEyLS4xMThjLS4yODQtLjgzMi0uMjEtMS44MDYuMDY0LTIuNTcxYy4xNzUtLjQ5Mi40NTMtLjk1Ny44MzUtMS4yNjdjLjI1Mi0uMjA1LjU1Mi0uMzQuODgtLjM2NmMuMTQ0LS42ODMuNTQ5LTEuMjQ4IDEuMDc0LTEuNjU2ek05LjUgNC41VjQuNDlsLS4wMDItLjA1YTIuNzQ0IDIuNzQ0IDAgMCAwLS4xNTQtLjc2NGExLjIyMiAxLjIyMiAwIDAgMC0uMzA5LS40OUEuNzYuNzYgMCAwIDAgOC41IDNhMi45MSAyLjkxIDAgMCAwLTEuNzU2LjU4MkM2LjI4IDMuOTQzIDYgNC40MzIgNiA1YS41LjUgMCAwIDEtLjY1OC40NzRjLS4xODgtLjA2Mi0uMzU2LS4wMjctLjUzNS4xMTdjLS4xOTYuMTYtLjM4Ny40NDQtLjUyNC44MjdjLS4yNzkuNzgyLS4yNSAxLjcyOS4xMzMgMi4zMDVBLjUuNSAwIDAgMSA0LjUgOWguNzVhMi4yNSAyLjI1IDAgMCAxIDIuMjUgMi4yNXYuMzM1YTEuNSAxLjUgMCAxIDEtMSAwdi0uMzM1YzAtLjY5LS41Ni0xLjI1LTEuMjUtMS4yNUgzLjVhLjQ5OS40OTkgMCAwIDEtLjE3NS0uMDMybC0uMDAzLjAwNkMzLjEyNCAxMC4zNjkgMyAxMS4wMjUgMyAxMmMwIC44NTkuMzE1IDEuMzQzLjYzOCAxLjYyYy4zNDcuMjk4LjczMi4zOC44NjIuMzhhLjUuNSAwIDAgMSAuNS41YzAgLjM2OC4yIDEuMDExLjY0IDEuNTYzYy40MjkuNTM1IDEuMDQ2LjkzNyAxLjg2LjkzN2MuNTYgMCAxLjA2Mi0uMzEzIDEuNDUtLjcyYy4xOTEtLjIuMzQtLjQwNy40MzctLjU3N2ExLjU3MyAxLjU3MyAwIDAgMCAuMTEzLS4yMzZWNy41SDguNDE1YTEuNSAxLjUgMCAxIDEgMC0xSDkuNXYtMnptMSA5Ljk5OXYuOTY3YTEuNTc1IDEuNTc1IDAgMCAwIC4xMTMuMjM2Yy4wOTguMTcuMjQ2LjM3Ny40MzYuNTc3Yy4zODkuNDA3Ljg5Mi43MiAxLjQ1MS43MmMuODE0IDAgMS40MzEtLjQwMiAxLjg2LS45MzdjLjQ0LS41NTIuNjQtMS4xOTUuNjQtMS41NjNhLjUuNSAwIDAgMSAuNS0uNWMuMTMgMCAuNTE1LS4wODIuODYyLS4zOGMuMzIzLS4yNzcuNjM4LS43NjEuNjM4LTEuNjJjMC0uOTc1LS4xMjUtMS42My0uMzIyLTIuMDI2YS45MjMuOTIzIDAgMCAwLS4zLS4zN0EuNjU3LjY1NyAwIDAgMCAxNiA5LjVhLjUuNSAwIDAgMS0uNDE2LS43NzdjLjM4NC0uNTc2LjQxMi0xLjUyMy4xMzMtMi4zMDVjLS4xMzctLjM4My0uMzI4LS42NjgtLjUyNC0uODI3Yy0uMTc5LS4xNDQtLjM0Ny0uMTgtLjUzNS0uMTE3QS41LjUgMCAwIDEgMTQgNWMwLS41NjgtLjI4LTEuMDU3LS43NDUtMS40MThBMi45MSAyLjkxIDAgMCAwIDExLjUgM2EuNzYuNzYgMCAwIDAtLjUzNS4xODZhMS4yMiAxLjIyIDAgMCAwLS4zMS40OWEyLjU3OSAyLjU3OSAwIDAgMC0uMTU1LjgxNHY5LjAxaC43NWMuNjkgMCAxLjI1LS41NiAxLjI1LTEuMjV2LTEuODM1YTEuNSAxLjUgMCAxIDEgMSAwdjEuODM1YTIuMjUgMi4yNSAwIDAgMS0yLjI1IDIuMjVoLS43NXpNNi41IDdhLjUuNSAwIDEgMCAxIDBhLjUuNSAwIDAgMC0xIDB6TTEzIDkuNWEuNS41IDAgMSAwIDAtMWEuNS41IDAgMCAwIDAgMXptLTYgM2EuNS41IDAgMSAwIDAgMWEuNS41IDAgMCAwIDAtMXoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__mobile::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNyAxLjAxTDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__debug::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik0yOS44MyAyMGwuMzQtMmwtNS4xNy0uODVWMTN2LS4yM2w1LjA2LTEuMzZsLS41MS0xLjkzbC00LjgzIDEuMjlBOSA5IDAgMCAwIDIwIDVWMmgtMnYyLjIzYTguODEgOC44MSAwIDAgMC00IDBWMmgtMnYzYTkgOSAwIDAgMC00LjcxIDUuODJMMi40NiA5LjQ4TDIgMTEuNDFsNSAxLjM2VjE3LjE1TDEuODQgMThsLjMyIDJMNyAxOS4xOGE4LjkgOC45IDAgMCAwIC44MiAzLjU3bC00LjUzIDQuNTRsMS40MiAxLjQybDQuMTktNC4yYTkgOSAwIDAgMCAxNC4yIDBsNC4xOSA0LjJsMS40Mi0xLjQybC00LjU0LTQuNTRhOC45IDguOSAwIDAgMCAuODMtMy41N3pNMTUgMjUuOTJBNyA3IDAgMCAxIDkgMTl2LTZoNnpNOS4yOSAxMWE3IDcgMCAwIDEgMTMuNDIgMHpNMjMgMTlhNyA3IDAgMCAxLTYgNi45MlYxM2g2eiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
|
||||
.various-complements__settings__popup-hotkey {
|
||||
padding: 1rem 0;
|
||||
/*noinspection CssUnresolvedCustomProperty*/
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.various-complements__settings__popup-hotkey-item {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
.various-complements__footer {
|
||||
position: relative;
|
||||
padding-right: 15px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
.various-complements__footer::before {
|
||||
position: absolute;
|
||||
width: 13px;
|
||||
margin-top: 1px;
|
||||
margin-left: -15px;
|
||||
filter: invert(0.5) hue-rotate(180deg);
|
||||
}
|
||||
.various-complements__footer__current-file::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01IDFhMiAyIDAgMCAwLTIgMnY5Ljk5OGEyIDIgMCAwIDAgMiAyaDEuMDQ2bC4yNS0xSDVhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTFoM3YyLjVBMS41IDEuNSAwIDAgMCA5LjQ5OCA2aDIuNXYxLjQ0Yy4zMDYtLjIwOS42NDctLjM0NCAxLS40MDVWNS40MTNhMS41IDEuNSAwIDAgMC0uNDQtMS4wNkw5LjY0NSAxLjQzOUExLjUgMS41IDAgMCAwIDguNTg1IDFINXptNi43OTEgNEg5LjVhLjUuNSAwIDAgMS0uNS0uNVYyLjIwNmwyLjc5MiAyLjc5MnptMS4yMDcgMy4wNmMtLjI0Mi4wNzEtLjQ3LjIwMy0uNjYyLjM5NEw4LjA1IDEyLjc0YTIuNzc3IDIuNzc3IDAgMCAwLS43MjIgMS4yNTdsLS4wMDkuMDMzbC0uMzAyIDEuMjExYS42MS42MSAwIDAgMCAuNzM4Ljc0bDEuMjExLS4zMDNhMi43NzYgMi43NzYgMCAwIDAgMS4yOS0uNzNsNC4yODgtNC4yODhhMS41NiAxLjU2IDAgMCAwLTEuNTQ1LTIuNnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__footer__current-vault::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEwLDEwYy00LjQsMC04LDMuNi04LDh2NjRjMCw0LjQsMy42LDgsOCw4aDJ2MmgxMHYtMmg1NnYyaDEwdi0yaDJjNC40LDAsOC0zLjYsOC04VjE4YzAtNC40LTMuNi04LTgtOEwxMCwxMHogTTEwLDE0aDgwIGMyLjIsMCw0LDEuOCw0LDR2NjRjMCwyLjItMS44LDQtNCw0SDEwYy0yLjIsMC00LTEuOC00LTRWMThDNiwxNS44LDcuOCwxNCwxMCwxNHogTTEzLjYsMjBjLTEsMC4yLTEuNiwxLTEuNiwydjIzLjQgYy0wLjEsMC40LTAuMSwwLjgsMCwxLjJ2Ny4xYzAsMC4xLDAsMC4xLDAsMC4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC4xLDAsMC4xLDAsMC4yVjc4YzAsMS4xLDAuOSwyLDIsMmg3MmMxLjEsMCwyLTAuOSwyLTJWMjIgYzAtMS4xLTAuOS0yLTItMkgxNGMtMC4xLDAtMC4xLDAtMC4yLDBTMTMuNywyMCwxMy42LDIweiBNMTYsMjRoNjh2NTJIMTZWNTQuOWwzLjQtMy40YzAuNC0wLjQsMC42LTAuOSwwLjYtMS40cy0wLjItMS4xLTAuNi0xLjQgTDE2LDQ1LjFMMTYsMjR6IE00OS44LDI3LjljLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuMSwwLTAuMSwwLTAuMiwwLjFjLTUuNSwwLjItMTAuNSwyLjQtMTQuMyw1LjljLTAuNSwwLjItMC45LDAuNi0xLjEsMS4xIGMtMy40LDMuNy01LjYsOC42LTUuOSwxMy45Yy0wLjQsMC42LTAuNCwxLjQsMCwyYzAuMiw1LjMsMi4zLDEwLjEsNS43LDEzLjhjMC4yLDAuNywwLjcsMS4zLDEuNCwxLjRjMy44LDMuNCw4LjgsNS41LDE0LjMsNS43IGMwLjEsMCwwLjEsMCwwLjIsMC4xYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMSwwLDAuMi0wLjFjNS40LTAuMiwxMC40LTIuMywxNC4yLTUuNyBjMC43LTAuMiwxLjMtMC44LDEuNC0xLjVjMy40LTMuOCw1LjUtOC43LDUuNy0xNC4yYzAsMCwwLTAuMSwwLjEtMC4xYzAsMCwwLDAsMC0wLjFjMC0wLjEsMC0wLjMsMC0wLjRjMC0wLjEsMC0wLjIsMC0wLjMgYzAtMC4xLDAtMC4zLTAuMS0wLjRjLTAuMi01LjYtMi40LTEwLjctNi0xNC41YzAsMCwwLDAtMC4xLTAuMWMwLDAsMC0wLjEtMC4xLTAuMWMtMC4yLTAuMi0wLjQtMC40LTAuNi0wLjYgYy0zLjgtMy42LTguOS01LjktMTQuNC02LjFDNTAuNSwyNy45LDUwLjEsMjcuOSw0OS44LDI3Ljl6IE00OCwzMi4xYzAsMS4xLDAuOSwyLDIsMmMxLjEsMCwyLTAuOSwyLTJjMy41LDAuNCw2LjYsMS44LDkuMywzLjkgYy0wLjYsMC41LTAuOSwxLjMtMC43LDJjMC4yLDAuNywwLjgsMS4zLDEuNSwxLjVjMC44LDAuMiwxLjUtMC4xLDItMC43YzIuMSwyLjYsMy41LDUuOCwzLjksOS4zYzAsMC0wLjEsMC0wLjEsMCBjLTAuMSwwLTAuMSwwLTAuMiwwYy0xLjEsMC4xLTEuOCwxLjEtMS43LDIuMXMxLDEuOSwyLjEsMS45Yy0wLjQsMy41LTEuOCw2LjYtMy45LDkuM2MtMC40LTAuNC0xLTAuNi0xLjYtMC42Yy0wLjEsMC0wLjEsMC0wLjIsMCBjLTAuNywwLjEtMS4zLDAuNy0xLjUsMS40Yy0wLjIsMC43LDAsMS41LDAuNSwyYy0yLjYsMi4xLTUuOCwzLjUtOS4zLDMuOWMwLTAuNi0wLjItMS4xLTAuNi0xLjVjLTAuNC0wLjQtMS0wLjYtMS41LTAuNSBjLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuOSwwLjItMS42LDEtMS42LDEuOWMtMy41LTAuNC02LjYtMS44LTkuMy0zLjljMC42LTAuNiwwLjctMS41LDAuNC0yLjJjLTAuMy0wLjctMS4xLTEuMi0xLjktMS4yIGMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuNCwwLjEtMC44LDAuMy0xLjEsMC42Yy0yLjEtMi42LTMuNS01LjgtMy45LTkuM2MxLjEsMCwyLTAuOSwyLTJjMC0xLjEtMC45LTItMi0yYzAuNC0zLjUsMS44LTYuNiwzLjktOS4zIGMwLjUsMC42LDEuMywwLjksMiwwLjdjMC43LTAuMiwxLjMtMC44LDEuNS0xLjVjMC4yLTAuOC0wLjEtMS41LTAuNy0yQzQxLjQsMzMuOSw0NC41LDMyLjQsNDgsMzIuMUw0OCwzMi4xeiBNNTAsNDAgYy01LjUsMC0xMCw0LjUtMTAsMTBzNC41LDEwLDEwLDEwczEwLTQuNSwxMC0xMFM1NS41LDQwLDUwLDQweiBNNTAsNDRjMy4zLDAsNiwyLjcsNiw2cy0yLjcsNi02LDZzLTYtMi43LTYtNlM0Ni43LDQ0LDUwLDQ0eiI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__footer__custom-dictionary::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHJlY3QgeD0iMzIiIHk9Ijk2IiB3aWR0aD0iNjQiIGhlaWdodD0iMzY4IiByeD0iMTYiIHJ5PSIxNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMzIiPjwvcmVjdD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDIyNGgxMjgiPjwvcGF0aD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDQwMGgxMjgiPjwvcGF0aD48cmVjdCB4PSIxMTIiIHk9IjE2MCIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIzMDQiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxyZWN0IHg9IjI1NiIgeT0iNDgiIHdpZHRoPSI5NiIgaGVpZ2h0PSI0MTYiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxwYXRoIGQ9Ik00MjIuNDYgOTYuMTFsLTQwLjQgNC4yNWMtMTEuMTIgMS4xNy0xOS4xOCAxMS41Ny0xNy45MyAyMy4xbDM0LjkyIDMyMS41OWMxLjI2IDExLjUzIDExLjM3IDIwIDIyLjQ5IDE4Ljg0bDQwLjQtNC4yNWMxMS4xMi0xLjE3IDE5LjE4LTExLjU3IDE3LjkzLTIzLjFMNDQ1IDExNWMtMS4zMS0xMS41OC0xMS40Mi0yMC4wNi0yMi41NC0xOC44OXoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__footer__internal-link::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEyLDBDNS40LDAsMCw1LjQsMCwxMnM1LjQsMTIsMTIsMTJjMi42LDAsNS0wLjgsNi45LTIuMmwxNS42LDE1LjZDMzEuNyw0MC44LDMwLDQ1LjIsMzAsNTBjMCw0LDEuMiw3LjYsMy4yLDEwLjcgTDIwLjEsNzEuMWMtMi4xLTEuOS01LTMuMS04LjEtMy4xQzUuNCw2OCwwLDczLjQsMCw4MHM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyYzAtMi4xLTAuNS00LTEuNS01LjhsMTMuMi0xMC40IEMzOS4zLDY3LjYsNDQuNCw3MCw1MCw3MGMyLjcsMCw1LjItMC41LDcuNS0xLjRsNS4zLDkuOUM1OS45LDgwLjcsNTgsODQuMSw1OCw4OGMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEycy01LjQtMTItMTItMTIgYy0xLjMsMC0yLjYsMC4yLTMuOCwwLjZMNjEsNjYuN2MzLjgtMi41LDYuNy02LjIsOC4xLTEwLjZsNi45LDEuNGMwLDAuMiwwLDAuMywwLDAuNWMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyIGMwLTYuNi01LjQtMTItMTItMTJjLTUuMSwwLTkuNCwzLjItMTEuMiw3LjZsLTYuOS0xLjVjMC4xLTAuNywwLjEtMS40LDAuMS0yLjFjMC03LjktNC42LTE0LjctMTEuMy0xNy45bDMuMS04LjIgYzAuNywwLjEsMS41LDAuMiwyLjIsMC4yYzYuNiwwLDEyLTUuNCwxMi0xMlM3MC42LDAsNjQsMFM1Miw1LjQsNTIsMTJjMCw0LjQsMi41LDguMyw2LjEsMTAuNEw1NSwzMC43Yy0xLjYtMC40LTMuMy0wLjctNS0wLjcgYy00LjgsMC05LjIsMS43LTEyLjYsNC41TDIxLjgsMTguOWMxLjQtMiwyLjItNC40LDIuMi02LjlDMjQsNS40LDE4LjYsMCwxMiwwTDEyLDB6IE0xMiw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LTggUzcuNiw0LDEyLDR6IE02NCw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LThTNTkuNiw0LDY0LDR6IE01MCwzNGM4LjksMCwxNiw3LjEsMTYsMTZjMCw4LjktNy4xLDE2LTE2LDE2IGMtOC45LDAtMTYtNy4xLTE2LTE2YzAtNC4zLDEuNy04LjIsNC40LTExLjFjMC4yLTAuMSwwLjMtMC4zLDAuNC0wLjRDNDEuOCwzNS43LDQ1LjcsMzQsNTAsMzR6IE04OCw1MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhzLTgtMy42LTgtOFM4My42LDUwLDg4LDUweiBNMTIsNzJjNC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDhzLTgtMy42LTgtOFM3LjYsNzIsMTIsNzJ6IE03MCw4MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhjLTQuNCwwLTgtMy42LTgtOGMwLTMsMS43LTUuNiw0LjEtN2MwLjEsMCwwLjEsMCwwLjItMC4xYzAsMCwwLDAsMC4xLTAuMWMwLDAsMC4xLDAsMC4xLTAuMUM2Ny42LDgwLjMsNjguNyw4MCw3MCw4MHogIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__footer__front-matter::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMC4zMiAyLjAxM0E0IDQgMCAwIDAgNi4xNjIgNy4xM2wtMy45ODcgMy45ODZhLjYuNiAwIDAgMC0uMTc2LjQyNFYxNC40YS42LjYgMCAwIDAgLjYuNmgyLjhhLjYuNiAwIDAgMCAuNi0uNlYxM2gxLjlhLjYuNiAwIDAgMCAuNi0uNnYtMS42OTNsLjczNS0uNzM1YTUuNTEgNS41MSAwIDAgMS0uNTY5LS44NDZsLS45OS45OTFhLjYuNiAwIDAgMC0uMTc2LjQyNFYxMkg1LjZhLjYuNiAwIDAgMC0uNi42VjE0SDN2LTIuMjkzbDQuMzItNC4zMmwtLjExOC0uMzAzYTMuMDAxIDMuMDAxIDAgMCAxIDEuOTYtMy45NjVjLjMzLS40MjMuNzItLjc5NiAxLjE1Ny0xLjEwNnpNMTMuNSA2LjI1YS43NS43NSAwIDEgMCAwLTEuNWEuNzUuNzUgMCAwIDAgMCAxLjV6TTkgNi41YTQuNSA0LjUgMCAxIDEgNyAzLjc0MnYyLjA1bC43ODMuNzg0YS42LjYgMCAwIDEgMCAuODQ4TDE1LjcwNyAxNWwxLjA2OCAxLjA2N2EuNi42IDAgMCAxLS4wNS44OTNsLTIuMzUgMS44OGEuNi42IDAgMCAxLS43NSAwbC0yLjQtMS45MmEuNi42IDAgMCAxLS4yMjUtLjQ2OHYtNi4yMUE0LjQ5NiA0LjQ5NiAwIDAgMSA5IDYuNXpNMTMuNSAzYTMuNSAzLjUgMCAwIDAtMS43NSA2LjUzMmEuNS41IDAgMCAxIC4yNS40MzN2Ni4yOTVsMiAxLjZsMS43NTEtMS40MDFsLTEuMDM0LTEuMDM1YS42LjYgMCAwIDEgMC0uODQ4bDEuMDc2LTEuMDc2bC0uNjE3LS42MTdhLjYuNiAwIDAgMS0uMTc2LS40MjRWOS45NjVhLjUuNSAwIDAgMSAuMjUtLjQzM0EzLjUgMy41IDAgMCAwIDEzLjUgM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__footer__match-strategy {
|
||||
cursor: pointer;
|
||||
}
|
||||
.various-complements__footer__match-strategy::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMSAxMWgtMS41di0uNWgtMnYzaDJWMTNIMjF2MWMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxek04IDEwdjVINi41di0xLjVoLTJWMTVIM3YtNWMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXptLTEuNS41aC0yVjEyaDJ2LTEuNXptNyAxLjVjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxaC00VjloNGMuNTUgMCAxIC40NSAxIDF2MWMwIC41NS0uNDUgMS0xIDF6TTExIDEwLjV2Ljc1aDJ2LS43NWgtMnptMiAyLjI1aC0ydi43NWgydi0uNzV6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__footer__complement-automatically {
|
||||
cursor: pointer;
|
||||
}
|
||||
.various-complements__footer__complement-automatically::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTc2IDUxMiI+PHBhdGggZD0iTTUyOCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQ4MGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em04IDMzNmMwIDQuNDExLTMuNTg5IDgtOCA4SDQ4Yy00LjQxMSAwLTgtMy41ODktOC04VjExMmMwLTQuNDExIDMuNTg5LTggOC04aDQ4MGM0LjQxMSAwIDggMy41ODkgOCA4djI4OHpNMTcwIDI3MHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDgydi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDgyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMzg0IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNMTIyIDE4OHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMkg4MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTk4IDE1OHYtMTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxODBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item::before {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
margin-top: 4px;
|
||||
margin-left: -20px;
|
||||
margin-right: 5px;
|
||||
filter: invert(0.5) hue-rotate(180deg);
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item {
|
||||
display: flex;
|
||||
align-items: start;
|
||||
padding-left: 30px !important;
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item > div {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item__description {
|
||||
font-size: 0.75em;
|
||||
/*noinspection CssUnresolvedCustomProperty*/
|
||||
color: var(--text-muted);
|
||||
padding-top: 0.75em;
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item__current-file::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01IDFhMiAyIDAgMCAwLTIgMnY5Ljk5OGEyIDIgMCAwIDAgMiAyaDEuMDQ2bC4yNS0xSDVhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTFoM3YyLjVBMS41IDEuNSAwIDAgMCA5LjQ5OCA2aDIuNXYxLjQ0Yy4zMDYtLjIwOS42NDctLjM0NCAxLS40MDVWNS40MTNhMS41IDEuNSAwIDAgMC0uNDQtMS4wNkw5LjY0NSAxLjQzOUExLjUgMS41IDAgMCAwIDguNTg1IDFINXptNi43OTEgNEg5LjVhLjUuNSAwIDAgMS0uNS0uNVYyLjIwNmwyLjc5MiAyLjc5MnptMS4yMDcgMy4wNmMtLjI0Mi4wNzEtLjQ3LjIwMy0uNjYyLjM5NEw4LjA1IDEyLjc0YTIuNzc3IDIuNzc3IDAgMCAwLS43MjIgMS4yNTdsLS4wMDkuMDMzbC0uMzAyIDEuMjExYS42MS42MSAwIDAgMCAuNzM4Ljc0bDEuMjExLS4zMDNhMi43NzYgMi43NzYgMCAwIDAgMS4yOS0uNzNsNC4yODgtNC4yODhhMS41NiAxLjU2IDAgMCAwLTEuNTQ1LTIuNnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__suggestion-item__current-vault::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEwLDEwYy00LjQsMC04LDMuNi04LDh2NjRjMCw0LjQsMy42LDgsOCw4aDJ2MmgxMHYtMmg1NnYyaDEwdi0yaDJjNC40LDAsOC0zLjYsOC04VjE4YzAtNC40LTMuNi04LTgtOEwxMCwxMHogTTEwLDE0aDgwIGMyLjIsMCw0LDEuOCw0LDR2NjRjMCwyLjItMS44LDQtNCw0SDEwYy0yLjIsMC00LTEuOC00LTRWMThDNiwxNS44LDcuOCwxNCwxMCwxNHogTTEzLjYsMjBjLTEsMC4yLTEuNiwxLTEuNiwydjIzLjQgYy0wLjEsMC40LTAuMSwwLjgsMCwxLjJ2Ny4xYzAsMC4xLDAsMC4xLDAsMC4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC4xLDAsMC4xLDAsMC4yVjc4YzAsMS4xLDAuOSwyLDIsMmg3MmMxLjEsMCwyLTAuOSwyLTJWMjIgYzAtMS4xLTAuOS0yLTItMkgxNGMtMC4xLDAtMC4xLDAtMC4yLDBTMTMuNywyMCwxMy42LDIweiBNMTYsMjRoNjh2NTJIMTZWNTQuOWwzLjQtMy40YzAuNC0wLjQsMC42LTAuOSwwLjYtMS40cy0wLjItMS4xLTAuNi0xLjQgTDE2LDQ1LjFMMTYsMjR6IE00OS44LDI3LjljLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuMSwwLTAuMSwwLTAuMiwwLjFjLTUuNSwwLjItMTAuNSwyLjQtMTQuMyw1LjljLTAuNSwwLjItMC45LDAuNi0xLjEsMS4xIGMtMy40LDMuNy01LjYsOC42LTUuOSwxMy45Yy0wLjQsMC42LTAuNCwxLjQsMCwyYzAuMiw1LjMsMi4zLDEwLjEsNS43LDEzLjhjMC4yLDAuNywwLjcsMS4zLDEuNCwxLjRjMy44LDMuNCw4LjgsNS41LDE0LjMsNS43IGMwLjEsMCwwLjEsMCwwLjIsMC4xYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMSwwLDAuMi0wLjFjNS40LTAuMiwxMC40LTIuMywxNC4yLTUuNyBjMC43LTAuMiwxLjMtMC44LDEuNC0xLjVjMy40LTMuOCw1LjUtOC43LDUuNy0xNC4yYzAsMCwwLTAuMSwwLjEtMC4xYzAsMCwwLDAsMC0wLjFjMC0wLjEsMC0wLjMsMC0wLjRjMC0wLjEsMC0wLjIsMC0wLjMgYzAtMC4xLDAtMC4zLTAuMS0wLjRjLTAuMi01LjYtMi40LTEwLjctNi0xNC41YzAsMCwwLDAtMC4xLTAuMWMwLDAsMC0wLjEtMC4xLTAuMWMtMC4yLTAuMi0wLjQtMC40LTAuNi0wLjYgYy0zLjgtMy42LTguOS01LjktMTQuNC02LjFDNTAuNSwyNy45LDUwLjEsMjcuOSw0OS44LDI3Ljl6IE00OCwzMi4xYzAsMS4xLDAuOSwyLDIsMmMxLjEsMCwyLTAuOSwyLTJjMy41LDAuNCw2LjYsMS44LDkuMywzLjkgYy0wLjYsMC41LTAuOSwxLjMtMC43LDJjMC4yLDAuNywwLjgsMS4zLDEuNSwxLjVjMC44LDAuMiwxLjUtMC4xLDItMC43YzIuMSwyLjYsMy41LDUuOCwzLjksOS4zYzAsMC0wLjEsMC0wLjEsMCBjLTAuMSwwLTAuMSwwLTAuMiwwYy0xLjEsMC4xLTEuOCwxLjEtMS43LDIuMXMxLDEuOSwyLjEsMS45Yy0wLjQsMy41LTEuOCw2LjYtMy45LDkuM2MtMC40LTAuNC0xLTAuNi0xLjYtMC42Yy0wLjEsMC0wLjEsMC0wLjIsMCBjLTAuNywwLjEtMS4zLDAuNy0xLjUsMS40Yy0wLjIsMC43LDAsMS41LDAuNSwyYy0yLjYsMi4xLTUuOCwzLjUtOS4zLDMuOWMwLTAuNi0wLjItMS4xLTAuNi0xLjVjLTAuNC0wLjQtMS0wLjYtMS41LTAuNSBjLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuOSwwLjItMS42LDEtMS42LDEuOWMtMy41LTAuNC02LjYtMS44LTkuMy0zLjljMC42LTAuNiwwLjctMS41LDAuNC0yLjJjLTAuMy0wLjctMS4xLTEuMi0xLjktMS4yIGMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuNCwwLjEtMC44LDAuMy0xLjEsMC42Yy0yLjEtMi42LTMuNS01LjgtMy45LTkuM2MxLjEsMCwyLTAuOSwyLTJjMC0xLjEtMC45LTItMi0yYzAuNC0zLjUsMS44LTYuNiwzLjktOS4zIGMwLjUsMC42LDEuMywwLjksMiwwLjdjMC43LTAuMiwxLjMtMC44LDEuNS0xLjVjMC4yLTAuOC0wLjEtMS41LTAuNy0yQzQxLjQsMzMuOSw0NC41LDMyLjQsNDgsMzIuMUw0OCwzMi4xeiBNNTAsNDAgYy01LjUsMC0xMCw0LjUtMTAsMTBzNC41LDEwLDEwLDEwczEwLTQuNSwxMC0xMFM1NS41LDQwLDUwLDQweiBNNTAsNDRjMy4zLDAsNiwyLjcsNiw2cy0yLjcsNi02LDZzLTYtMi43LTYtNlM0Ni43LDQ0LDUwLDQ0eiI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__suggestion-item__custom-dictionary::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHJlY3QgeD0iMzIiIHk9Ijk2IiB3aWR0aD0iNjQiIGhlaWdodD0iMzY4IiByeD0iMTYiIHJ5PSIxNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMzIiPjwvcmVjdD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDIyNGgxMjgiPjwvcGF0aD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDQwMGgxMjgiPjwvcGF0aD48cmVjdCB4PSIxMTIiIHk9IjE2MCIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIzMDQiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxyZWN0IHg9IjI1NiIgeT0iNDgiIHdpZHRoPSI5NiIgaGVpZ2h0PSI0MTYiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxwYXRoIGQ9Ik00MjIuNDYgOTYuMTFsLTQwLjQgNC4yNWMtMTEuMTIgMS4xNy0xOS4xOCAxMS41Ny0xNy45MyAyMy4xbDM0LjkyIDMyMS41OWMxLjI2IDExLjUzIDExLjM3IDIwIDIyLjQ5IDE4Ljg0bDQwLjQtNC4yNWMxMS4xMi0xLjE3IDE5LjE4LTExLjU3IDE3LjkzLTIzLjFMNDQ1IDExNWMtMS4zMS0xMS41OC0xMS40Mi0yMC4wNi0yMi41NC0xOC44OXoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__suggestion-item__internal-link::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEyLDBDNS40LDAsMCw1LjQsMCwxMnM1LjQsMTIsMTIsMTJjMi42LDAsNS0wLjgsNi45LTIuMmwxNS42LDE1LjZDMzEuNyw0MC44LDMwLDQ1LjIsMzAsNTBjMCw0LDEuMiw3LjYsMy4yLDEwLjcgTDIwLjEsNzEuMWMtMi4xLTEuOS01LTMuMS04LjEtMy4xQzUuNCw2OCwwLDczLjQsMCw4MHM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyYzAtMi4xLTAuNS00LTEuNS01LjhsMTMuMi0xMC40IEMzOS4zLDY3LjYsNDQuNCw3MCw1MCw3MGMyLjcsMCw1LjItMC41LDcuNS0xLjRsNS4zLDkuOUM1OS45LDgwLjcsNTgsODQuMSw1OCw4OGMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEycy01LjQtMTItMTItMTIgYy0xLjMsMC0yLjYsMC4yLTMuOCwwLjZMNjEsNjYuN2MzLjgtMi41LDYuNy02LjIsOC4xLTEwLjZsNi45LDEuNGMwLDAuMiwwLDAuMywwLDAuNWMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyIGMwLTYuNi01LjQtMTItMTItMTJjLTUuMSwwLTkuNCwzLjItMTEuMiw3LjZsLTYuOS0xLjVjMC4xLTAuNywwLjEtMS40LDAuMS0yLjFjMC03LjktNC42LTE0LjctMTEuMy0xNy45bDMuMS04LjIgYzAuNywwLjEsMS41LDAuMiwyLjIsMC4yYzYuNiwwLDEyLTUuNCwxMi0xMlM3MC42LDAsNjQsMFM1Miw1LjQsNTIsMTJjMCw0LjQsMi41LDguMyw2LjEsMTAuNEw1NSwzMC43Yy0xLjYtMC40LTMuMy0wLjctNS0wLjcgYy00LjgsMC05LjIsMS43LTEyLjYsNC41TDIxLjgsMTguOWMxLjQtMiwyLjItNC40LDIuMi02LjlDMjQsNS40LDE4LjYsMCwxMiwwTDEyLDB6IE0xMiw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LTggUzcuNiw0LDEyLDR6IE02NCw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LThTNTkuNiw0LDY0LDR6IE01MCwzNGM4LjksMCwxNiw3LjEsMTYsMTZjMCw4LjktNy4xLDE2LTE2LDE2IGMtOC45LDAtMTYtNy4xLTE2LTE2YzAtNC4zLDEuNy04LjIsNC40LTExLjFjMC4yLTAuMSwwLjMtMC4zLDAuNC0wLjRDNDEuOCwzNS43LDQ1LjcsMzQsNTAsMzR6IE04OCw1MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhzLTgtMy42LTgtOFM4My42LDUwLDg4LDUweiBNMTIsNzJjNC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDhzLTgtMy42LTgtOFM3LjYsNzIsMTIsNzJ6IE03MCw4MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhjLTQuNCwwLTgtMy42LTgtOGMwLTMsMS43LTUuNiw0LjEtN2MwLjEsMCwwLjEsMCwwLjItMC4xYzAsMCwwLDAsMC4xLTAuMWMwLDAsMC4xLDAsMC4xLTAuMUM2Ny42LDgwLjMsNjguNyw4MCw3MCw4MHogIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__suggestion-item__front-matter::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMC4zMiAyLjAxM0E0IDQgMCAwIDAgNi4xNjIgNy4xM2wtMy45ODcgMy45ODZhLjYuNiAwIDAgMC0uMTc2LjQyNFYxNC40YS42LjYgMCAwIDAgLjYuNmgyLjhhLjYuNiAwIDAgMCAuNi0uNlYxM2gxLjlhLjYuNiAwIDAgMCAuNi0uNnYtMS42OTNsLjczNS0uNzM1YTUuNTEgNS41MSAwIDAgMS0uNTY5LS44NDZsLS45OS45OTFhLjYuNiAwIDAgMC0uMTc2LjQyNFYxMkg1LjZhLjYuNiAwIDAgMC0uNi42VjE0SDN2LTIuMjkzbDQuMzItNC4zMmwtLjExOC0uMzAzYTMuMDAxIDMuMDAxIDAgMCAxIDEuOTYtMy45NjVjLjMzLS40MjMuNzItLjc5NiAxLjE1Ny0xLjEwNnpNMTMuNSA2LjI1YS43NS43NSAwIDEgMCAwLTEuNWEuNzUuNzUgMCAwIDAgMCAxLjV6TTkgNi41YTQuNSA0LjUgMCAxIDEgNyAzLjc0MnYyLjA1bC43ODMuNzg0YS42LjYgMCAwIDEgMCAuODQ4TDE1LjcwNyAxNWwxLjA2OCAxLjA2N2EuNi42IDAgMCAxLS4wNS44OTNsLTIuMzUgMS44OGEuNi42IDAgMCAxLS43NSAwbC0yLjQtMS45MmEuNi42IDAgMCAxLS4yMjUtLjQ2OHYtNi4yMUE0LjQ5NiA0LjQ5NiAwIDAgMSA5IDYuNXpNMTMuNSAzYTMuNSAzLjUgMCAwIDAtMS43NSA2LjUzMmEuNS41IDAgMCAxIC4yNS40MzN2Ni4yOTVsMiAxLjZsMS43NTEtMS40MDFsLTEuMDM0LTEuMDM1YS42LjYgMCAwIDEgMC0uODQ4bDEuMDc2LTEuMDc2bC0uNjE3LS42MTdhLjYuNiAwIDAgMS0uMTc2LS40MjRWOS45NjVhLjUuNSAwIDAgMSAuMjUtLjQzM0EzLjUgMy41IDAgMCAwIDEzLjUgM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item__phantom,
|
||||
.various-complements__suggestion-item__phantom::before {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item__content__alias {
|
||||
padding-left: 20px;
|
||||
}
|
||||
.various-complements__suggestion-item__content__alias::before {
|
||||
width: 16px;
|
||||
margin-left: -20px;
|
||||
margin-right: 3px;
|
||||
filter: invert(0.5) hue-rotate(180deg);
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgY2xhc3M9ImZvcndhcmQtYXJyb3ciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTkuOSw4OS4wOTIyNmMtMC4wMzA5NCwwIC0wLjA1NDE0LDAgLTAuMDg1MDgsMGMtMS4wNjczNCwtMC4wNDY0MSAtMS45MTAzOSwtMC45MjgxMiAtMS44OTQ5MiwtMS45OTU0N2MwLjAwNzc0LC0wLjQ4NzI2IDEuMTQ0NjksLTQ4LjEzMTAxIDQ3LjUyLC00OS40NDU4NmwwLC0xMy44OTA5NGMwLC0wLjc2NTcgMC40NDA4NiwtMS40NjE4IDEuMTI5MjIsLTEuNzg2NjRjMC42ODA2MiwtMC4zMzI1OCAxLjUwODIsLTAuMjMyMDMgMi4wOTYwMSwwLjI0NzVsMzEuNjgsMjUuNzRjMC40NjQwNiwwLjM3ODk5IDAuNzM0NzYsMC45NDM2IDAuNzM0NzYsMS41MzkxNGMwLDAuNTk1NTUgLTAuMjcwNywxLjE2MDE2IC0wLjcyNzAzLDEuNTM5MTRsLTMxLjY4LDI1Ljc0Yy0wLjU5NTU1LDAuNDc5NTMgLTEuNDE1MzksMC41NzIzNCAtMi4xMDM3NSwwLjI0NzVjLTAuNjg4MzYsLTAuMzI0ODUgLTEuMTI5MjIsLTEuMDIwOTQgLTEuMTI5MjIsLTEuNzg2NjRsMCwtMTMuODQ0NTNjLTQxLjI2Mjg5LDAuNzUwMjQgLTQzLjQ5MDM5LDI0LjgxOTYxIC00My41Njc3MywyNS44NTYwMWMtMC4wNjk2MSwxLjA0NDE0IC0wLjkzNTg2LDEuODQwNzggLTEuOTcyMjYsMS44NDA3OHoiPjwvcGF0aD48L3N2Zz4=");
|
||||
}
|
||||
|
||||
.various-complements__selection-lock
|
||||
.various-complements__suggestion-item.is-selected {
|
||||
background-color: inherit;
|
||||
border: dotted 1px;
|
||||
}
|
||||
.various-complements__settings__text-area-path {
|
||||
height: 120px;
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
.various-complements__settings__text-area-path-dense {
|
||||
height: 120px;
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.various-complements__settings__current-settings-json {
|
||||
font-size: 0.75em;
|
||||
height: 800px;
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
.various-complements__settings__warning {
|
||||
color: darkorange;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.various-complements__settings__nested {
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.various-complements__settings__header {
|
||||
position: relative;
|
||||
padding-left: 25px;
|
||||
}
|
||||
.various-complements__settings__header::before {
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
margin-top: 3px;
|
||||
margin-left: -25px;
|
||||
filter: invert(0.5) hue-rotate(180deg);
|
||||
}
|
||||
|
||||
.various-complements__settings__header__main::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem02LjkzIDZoLTIuOTVhMTUuNjUgMTUuNjUgMCAwIDAtMS4zOC0zLjU2QTguMDMgOC4wMyAwIDAgMSAxOC45MiA4ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMnMuMDYgMS4zNC4xNCAySDQuMjZ6bS44MiAyaDIuOTVjLjMyIDEuMjUuNzggMi40NSAxLjM4IDMuNTZBNy45ODcgNy45ODcgMCAwIDEgNS4wOCAxNnptMi45NS04SDUuMDhhNy45ODcgNy45ODcgMCAwIDEgNC4zMy0zLjU2QTE1LjY1IDE1LjY1IDAgMCAwIDguMDMgOHpNMTIgMTkuOTZjLS44My0xLjItMS40OC0yLjUzLTEuOTEtMy45NmgzLjgyYy0uNDMgMS40My0xLjA4IDIuNzYtMS45MSAzLjk2ek0xNC4zNCAxNEg5LjY2Yy0uMDktLjY2LS4xNi0xLjMyLS4xNi0ycy4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAycy0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVhOC4wMyA4LjAzIDAgMCAxLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTJzLS4wNi0xLjM0LS4xNC0yaDMuMzhjLjE2LjY0LjI2IDEuMzEuMjYgMnMtLjEgMS4zNi0uMjYgMmgtMy4zOHoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__settings__header__appearance::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMCAzSDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoM2MtLjU1LjU1LTEgLjg3LTEgMS41OWMwIC43OC42MyAxLjQxIDEuNDEgMS40MWg5LjE3Yy43OCAwIDEuNDEtLjYzIDEuNDEtMS40MWMwLS43Mi0uNDQtMS4wMy0xLTEuNTloM2MxLjEgMCAyLS45IDItMlY1QzIyIDMuOSAyMS4xIDMgMjAgM3ptMCAxM0g0VjVoMTZ2MTF6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__key-customization::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik0yOCAyNkg0YTIgMiAwIDAgMS0yLTJWMTBhMiAyIDAgMCAxIDItMmgyNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJ6TTQgMTB2MTRoMjRWMTB6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNMTAgMjBoMTF2MkgxMHoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjxwYXRoIGQ9Ik02IDEyaDJ2Mkg2eiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PHBhdGggZD0iTTEwIDEyaDJ2MmgtMnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjxwYXRoIGQ9Ik0xNCAxMmgydjJoLTJ6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNMTggMTJoMnYyaC0yeiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PHBhdGggZD0iTTYgMjBoMnYySDZ6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNNiAxNmgydjJINnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjxwYXRoIGQ9Ik0xMCAxNmgydjJoLTJ6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNMTQgMTZoMnYyaC0yeiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PHBhdGggZD0iTTIyIDEyaDR2MmgtNHoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjxwYXRoIGQ9Ik0yMiAxNmg0djJoLTR6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48cGF0aCBkPSJNMTggMTZoMnYyaC0yeiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PHBhdGggZD0iTTIzIDIwaDN2MmgtM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__settings__header__current-file::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01IDFhMiAyIDAgMCAwLTIgMnY5Ljk5OGEyIDIgMCAwIDAgMiAyaDEuMDQ2bC4yNS0xSDVhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTFoM3YyLjVBMS41IDEuNSAwIDAgMCA5LjQ5OCA2aDIuNXYxLjQ0Yy4zMDYtLjIwOS42NDctLjM0NCAxLS40MDVWNS40MTNhMS41IDEuNSAwIDAgMC0uNDQtMS4wNkw5LjY0NSAxLjQzOUExLjUgMS41IDAgMCAwIDguNTg1IDFINXptNi43OTEgNEg5LjVhLjUuNSAwIDAgMS0uNS0uNVYyLjIwNmwyLjc5MiAyLjc5MnptMS4yMDcgMy4wNmMtLjI0Mi4wNzEtLjQ3LjIwMy0uNjYyLjM5NEw4LjA1IDEyLjc0YTIuNzc3IDIuNzc3IDAgMCAwLS43MjIgMS4yNTdsLS4wMDkuMDMzbC0uMzAyIDEuMjExYS42MS42MSAwIDAgMCAuNzM4Ljc0bDEuMjExLS4zMDNhMi43NzYgMi43NzYgMCAwIDAgMS4yOS0uNzNsNC4yODgtNC4yODhhMS41NiAxLjU2IDAgMCAwLTEuNTQ1LTIuNnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__current-vault::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEwLDEwYy00LjQsMC04LDMuNi04LDh2NjRjMCw0LjQsMy42LDgsOCw4aDJ2MmgxMHYtMmg1NnYyaDEwdi0yaDJjNC40LDAsOC0zLjYsOC04VjE4YzAtNC40LTMuNi04LTgtOEwxMCwxMHogTTEwLDE0aDgwIGMyLjIsMCw0LDEuOCw0LDR2NjRjMCwyLjItMS44LDQtNCw0SDEwYy0yLjIsMC00LTEuOC00LTRWMThDNiwxNS44LDcuOCwxNCwxMCwxNHogTTEzLjYsMjBjLTEsMC4yLTEuNiwxLTEuNiwydjIzLjQgYy0wLjEsMC40LTAuMSwwLjgsMCwxLjJ2Ny4xYzAsMC4xLDAsMC4xLDAsMC4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC4xLDAsMC4xLDAsMC4yVjc4YzAsMS4xLDAuOSwyLDIsMmg3MmMxLjEsMCwyLTAuOSwyLTJWMjIgYzAtMS4xLTAuOS0yLTItMkgxNGMtMC4xLDAtMC4xLDAtMC4yLDBTMTMuNywyMCwxMy42LDIweiBNMTYsMjRoNjh2NTJIMTZWNTQuOWwzLjQtMy40YzAuNC0wLjQsMC42LTAuOSwwLjYtMS40cy0wLjItMS4xLTAuNi0xLjQgTDE2LDQ1LjFMMTYsMjR6IE00OS44LDI3LjljLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuMSwwLTAuMSwwLTAuMiwwLjFjLTUuNSwwLjItMTAuNSwyLjQtMTQuMyw1LjljLTAuNSwwLjItMC45LDAuNi0xLjEsMS4xIGMtMy40LDMuNy01LjYsOC42LTUuOSwxMy45Yy0wLjQsMC42LTAuNCwxLjQsMCwyYzAuMiw1LjMsMi4zLDEwLjEsNS43LDEzLjhjMC4yLDAuNywwLjcsMS4zLDEuNCwxLjRjMy44LDMuNCw4LjgsNS41LDE0LjMsNS43IGMwLjEsMCwwLjEsMCwwLjIsMC4xYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMSwwLDAuMi0wLjFjNS40LTAuMiwxMC40LTIuMywxNC4yLTUuNyBjMC43LTAuMiwxLjMtMC44LDEuNC0xLjVjMy40LTMuOCw1LjUtOC43LDUuNy0xNC4yYzAsMCwwLTAuMSwwLjEtMC4xYzAsMCwwLDAsMC0wLjFjMC0wLjEsMC0wLjMsMC0wLjRjMC0wLjEsMC0wLjIsMC0wLjMgYzAtMC4xLDAtMC4zLTAuMS0wLjRjLTAuMi01LjYtMi40LTEwLjctNi0xNC41YzAsMCwwLDAtMC4xLTAuMWMwLDAsMC0wLjEtMC4xLTAuMWMtMC4yLTAuMi0wLjQtMC40LTAuNi0wLjYgYy0zLjgtMy42LTguOS01LjktMTQuNC02LjFDNTAuNSwyNy45LDUwLjEsMjcuOSw0OS44LDI3Ljl6IE00OCwzMi4xYzAsMS4xLDAuOSwyLDIsMmMxLjEsMCwyLTAuOSwyLTJjMy41LDAuNCw2LjYsMS44LDkuMywzLjkgYy0wLjYsMC41LTAuOSwxLjMtMC43LDJjMC4yLDAuNywwLjgsMS4zLDEuNSwxLjVjMC44LDAuMiwxLjUtMC4xLDItMC43YzIuMSwyLjYsMy41LDUuOCwzLjksOS4zYzAsMC0wLjEsMC0wLjEsMCBjLTAuMSwwLTAuMSwwLTAuMiwwYy0xLjEsMC4xLTEuOCwxLjEtMS43LDIuMXMxLDEuOSwyLjEsMS45Yy0wLjQsMy41LTEuOCw2LjYtMy45LDkuM2MtMC40LTAuNC0xLTAuNi0xLjYtMC42Yy0wLjEsMC0wLjEsMC0wLjIsMCBjLTAuNywwLjEtMS4zLDAuNy0xLjUsMS40Yy0wLjIsMC43LDAsMS41LDAuNSwyYy0yLjYsMi4xLTUuOCwzLjUtOS4zLDMuOWMwLTAuNi0wLjItMS4xLTAuNi0xLjVjLTAuNC0wLjQtMS0wLjYtMS41LTAuNSBjLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuOSwwLjItMS42LDEtMS42LDEuOWMtMy41LTAuNC02LjYtMS44LTkuMy0zLjljMC42LTAuNiwwLjctMS41LDAuNC0yLjJjLTAuMy0wLjctMS4xLTEuMi0xLjktMS4yIGMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuNCwwLjEtMC44LDAuMy0xLjEsMC42Yy0yLjEtMi42LTMuNS01LjgtMy45LTkuM2MxLjEsMCwyLTAuOSwyLTJjMC0xLjEtMC45LTItMi0yYzAuNC0zLjUsMS44LTYuNiwzLjktOS4zIGMwLjUsMC42LDEuMywwLjksMiwwLjdjMC43LTAuMiwxLjMtMC44LDEuNS0xLjVjMC4yLTAuOC0wLjEtMS41LTAuNy0yQzQxLjQsMzMuOSw0NC41LDMyLjQsNDgsMzIuMUw0OCwzMi4xeiBNNTAsNDAgYy01LjUsMC0xMCw0LjUtMTAsMTBzNC41LDEwLDEwLDEwczEwLTQuNSwxMC0xMFM1NS41LDQwLDUwLDQweiBNNTAsNDRjMy4zLDAsNiwyLjcsNiw2cy0yLjcsNi02LDZzLTYtMi43LTYtNlM0Ni43LDQ0LDUwLDQ0eiI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__settings__header__custom-dictionary::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHJlY3QgeD0iMzIiIHk9Ijk2IiB3aWR0aD0iNjQiIGhlaWdodD0iMzY4IiByeD0iMTYiIHJ5PSIxNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMzIiPjwvcmVjdD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDIyNGgxMjgiPjwvcGF0aD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDQwMGgxMjgiPjwvcGF0aD48cmVjdCB4PSIxMTIiIHk9IjE2MCIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIzMDQiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxyZWN0IHg9IjI1NiIgeT0iNDgiIHdpZHRoPSI5NiIgaGVpZ2h0PSI0MTYiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxwYXRoIGQ9Ik00MjIuNDYgOTYuMTFsLTQwLjQgNC4yNWMtMTEuMTIgMS4xNy0xOS4xOCAxMS41Ny0xNy45MyAyMy4xbDM0LjkyIDMyMS41OWMxLjI2IDExLjUzIDExLjM3IDIwIDIyLjQ5IDE4Ljg0bDQwLjQtNC4yNWMxMS4xMi0xLjE3IDE5LjE4LTExLjU3IDE3LjkzLTIzLjFMNDQ1IDExNWMtMS4zMS0xMS41OC0xMS40Mi0yMC4wNi0yMi41NC0xOC44OXoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__settings__header__internal-link::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEyLDBDNS40LDAsMCw1LjQsMCwxMnM1LjQsMTIsMTIsMTJjMi42LDAsNS0wLjgsNi45LTIuMmwxNS42LDE1LjZDMzEuNyw0MC44LDMwLDQ1LjIsMzAsNTBjMCw0LDEuMiw3LjYsMy4yLDEwLjcgTDIwLjEsNzEuMWMtMi4xLTEuOS01LTMuMS04LjEtMy4xQzUuNCw2OCwwLDczLjQsMCw4MHM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyYzAtMi4xLTAuNS00LTEuNS01LjhsMTMuMi0xMC40IEMzOS4zLDY3LjYsNDQuNCw3MCw1MCw3MGMyLjcsMCw1LjItMC41LDcuNS0xLjRsNS4zLDkuOUM1OS45LDgwLjcsNTgsODQuMSw1OCw4OGMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEycy01LjQtMTItMTItMTIgYy0xLjMsMC0yLjYsMC4yLTMuOCwwLjZMNjEsNjYuN2MzLjgtMi41LDYuNy02LjIsOC4xLTEwLjZsNi45LDEuNGMwLDAuMiwwLDAuMywwLDAuNWMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyIGMwLTYuNi01LjQtMTItMTItMTJjLTUuMSwwLTkuNCwzLjItMTEuMiw3LjZsLTYuOS0xLjVjMC4xLTAuNywwLjEtMS40LDAuMS0yLjFjMC03LjktNC42LTE0LjctMTEuMy0xNy45bDMuMS04LjIgYzAuNywwLjEsMS41LDAuMiwyLjIsMC4yYzYuNiwwLDEyLTUuNCwxMi0xMlM3MC42LDAsNjQsMFM1Miw1LjQsNTIsMTJjMCw0LjQsMi41LDguMyw2LjEsMTAuNEw1NSwzMC43Yy0xLjYtMC40LTMuMy0wLjctNS0wLjcgYy00LjgsMC05LjIsMS43LTEyLjYsNC41TDIxLjgsMTguOWMxLjQtMiwyLjItNC40LDIuMi02LjlDMjQsNS40LDE4LjYsMCwxMiwwTDEyLDB6IE0xMiw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LTggUzcuNiw0LDEyLDR6IE02NCw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LThTNTkuNiw0LDY0LDR6IE01MCwzNGM4LjksMCwxNiw3LjEsMTYsMTZjMCw4LjktNy4xLDE2LTE2LDE2IGMtOC45LDAtMTYtNy4xLTE2LTE2YzAtNC4zLDEuNy04LjIsNC40LTExLjFjMC4yLTAuMSwwLjMtMC4zLDAuNC0wLjRDNDEuOCwzNS43LDQ1LjcsMzQsNTAsMzR6IE04OCw1MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhzLTgtMy42LTgtOFM4My42LDUwLDg4LDUweiBNMTIsNzJjNC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDhzLTgtMy42LTgtOFM3LjYsNzIsMTIsNzJ6IE03MCw4MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhjLTQuNCwwLTgtMy42LTgtOGMwLTMsMS43LTUuNiw0LjEtN2MwLjEsMCwwLjEsMCwwLjItMC4xYzAsMCwwLDAsMC4xLTAuMWMwLDAsMC4xLDAsMC4xLTAuMUM2Ny42LDgwLjMsNjguNyw4MCw3MCw4MHogIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__settings__header__front-matter::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMC4zMiAyLjAxM0E0IDQgMCAwIDAgNi4xNjIgNy4xM2wtMy45ODcgMy45ODZhLjYuNiAwIDAgMC0uMTc2LjQyNFYxNC40YS42LjYgMCAwIDAgLjYuNmgyLjhhLjYuNiAwIDAgMCAuNi0uNlYxM2gxLjlhLjYuNiAwIDAgMCAuNi0uNnYtMS42OTNsLjczNS0uNzM1YTUuNTEgNS41MSAwIDAgMS0uNTY5LS44NDZsLS45OS45OTFhLjYuNiAwIDAgMC0uMTc2LjQyNFYxMkg1LjZhLjYuNiAwIDAgMC0uNi42VjE0SDN2LTIuMjkzbDQuMzItNC4zMmwtLjExOC0uMzAzYTMuMDAxIDMuMDAxIDAgMCAxIDEuOTYtMy45NjVjLjMzLS40MjMuNzItLjc5NiAxLjE1Ny0xLjEwNnpNMTMuNSA2LjI1YS43NS43NSAwIDEgMCAwLTEuNWEuNzUuNzUgMCAwIDAgMCAxLjV6TTkgNi41YTQuNSA0LjUgMCAxIDEgNyAzLjc0MnYyLjA1bC43ODMuNzg0YS42LjYgMCAwIDEgMCAuODQ4TDE1LjcwNyAxNWwxLjA2OCAxLjA2N2EuNi42IDAgMCAxLS4wNS44OTNsLTIuMzUgMS44OGEuNi42IDAgMCAxLS43NSAwbC0yLjQtMS45MmEuNi42IDAgMCAxLS4yMjUtLjQ2OHYtNi4yMUE0LjQ5NiA0LjQ5NiAwIDAgMSA5IDYuNXpNMTMuNSAzYTMuNSAzLjUgMCAwIDAtMS43NSA2LjUzMmEuNS41IDAgMCAxIC4yNS40MzN2Ni4yOTVsMiAxLjZsMS43NTEtMS40MDFsLTEuMDM0LTEuMDM1YS42LjYgMCAwIDEgMC0uODQ4bDEuMDc2LTEuMDc2bC0uNjE3LS42MTdhLjYuNiAwIDAgMS0uMTc2LS40MjRWOS45NjVhLjUuNSAwIDAgMSAuMjUtLjQzM0EzLjUgMy41IDAgMCAwIDEzLjUgM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__intelligent-suggestion-prioritization::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik02LjEzIDIuNzkzQTMuOTEgMy45MSAwIDAgMSA4LjUgMmExLjc1NyAxLjc1NyAwIDAgMSAxLjUuNzhBMS43NTcgMS43NTcgMCAwIDEgMTEuNSAyYTMuOTEgMy45MSAwIDAgMSAyLjM3Ljc5M2MuNTI1LjQwOC45My45NzMgMS4wNzMgMS42NTZjLjMyOC4wMjUuNjI4LjE2MS44OC4zNjZjLjM4Mi4zMS42Ni43NzUuODM1IDEuMjY3Yy4yNzQuNzY1LjM0OCAxLjc0LjA2NCAyLjU3Yy4wNzIuMDM0LjE0My4wNzQuMjEyLjEyYy4yNzUuMTgzLjQ4NC40NDUuNjM4Ljc1NGMuMzAzLjYwNS40MjggMS40NDkuNDI4IDIuNDc0YzAgMS4xNDEtLjQzNSAxLjkwNy0uOTg3IDIuMzhhMi42OCAyLjY4IDAgMCAxLTEuMDU0LjU1NWMtLjEuNTU4LS4zOCAxLjIwNC0uODE5IDEuNzUyQzE0LjU3IDE3LjQwMiAxMy42ODYgMTggMTIuNSAxOGMtLjk0IDAtMS42ODgtLjUyLTIuMTc0LTEuMDNhNC4yNTIgNC4yNTIgMCAwIDEtLjMyNi0uMzg1YTQuMjQ1IDQuMjQ1IDAgMCAxLS4zMjYuMzg1QzkuMTg4IDE3LjQ4IDguNDQxIDE4IDcuNSAxOGMtMS4xODYgMC0yLjA2OS0uNTk4LTIuNjQtMS4zMTNhNC4wNTcgNC4wNTcgMCAwIDEtLjgxOS0xLjc1MmEyLjY4IDIuNjggMCAwIDEtMS4wNTQtLjU1NUMyLjQzNSAxMy45MDcgMiAxMy4xNCAyIDEyYzAtMS4wMjUuMTI2LTEuODcuNDI4LTIuNDc0Yy4xNTQtLjMwOS4zNjMtLjU3LjYzOC0uNzU1YTEuNTggMS41OCAwIDAgMSAuMjEyLS4xMThjLS4yODQtLjgzMi0uMjEtMS44MDYuMDY0LTIuNTcxYy4xNzUtLjQ5Mi40NTMtLjk1Ny44MzUtMS4yNjdjLjI1Mi0uMjA1LjU1Mi0uMzQuODgtLjM2NmMuMTQ0LS42ODMuNTQ5LTEuMjQ4IDEuMDc0LTEuNjU2ek05LjUgNC41VjQuNDlsLS4wMDItLjA1YTIuNzQ0IDIuNzQ0IDAgMCAwLS4xNTQtLjc2NGExLjIyMiAxLjIyMiAwIDAgMC0uMzA5LS40OUEuNzYuNzYgMCAwIDAgOC41IDNhMi45MSAyLjkxIDAgMCAwLTEuNzU2LjU4MkM2LjI4IDMuOTQzIDYgNC40MzIgNiA1YS41LjUgMCAwIDEtLjY1OC40NzRjLS4xODgtLjA2Mi0uMzU2LS4wMjctLjUzNS4xMTdjLS4xOTYuMTYtLjM4Ny40NDQtLjUyNC44MjdjLS4yNzkuNzgyLS4yNSAxLjcyOS4xMzMgMi4zMDVBLjUuNSAwIDAgMSA0LjUgOWguNzVhMi4yNSAyLjI1IDAgMCAxIDIuMjUgMi4yNXYuMzM1YTEuNSAxLjUgMCAxIDEtMSAwdi0uMzM1YzAtLjY5LS41Ni0xLjI1LTEuMjUtMS4yNUgzLjVhLjQ5OS40OTkgMCAwIDEtLjE3NS0uMDMybC0uMDAzLjAwNkMzLjEyNCAxMC4zNjkgMyAxMS4wMjUgMyAxMmMwIC44NTkuMzE1IDEuMzQzLjYzOCAxLjYyYy4zNDcuMjk4LjczMi4zOC44NjIuMzhhLjUuNSAwIDAgMSAuNS41YzAgLjM2OC4yIDEuMDExLjY0IDEuNTYzYy40MjkuNTM1IDEuMDQ2LjkzNyAxLjg2LjkzN2MuNTYgMCAxLjA2Mi0uMzEzIDEuNDUtLjcyYy4xOTEtLjIuMzQtLjQwNy40MzctLjU3N2ExLjU3MyAxLjU3MyAwIDAgMCAuMTEzLS4yMzZWNy41SDguNDE1YTEuNSAxLjUgMCAxIDEgMC0xSDkuNXYtMnptMSA5Ljk5OXYuOTY3YTEuNTc1IDEuNTc1IDAgMCAwIC4xMTMuMjM2Yy4wOTguMTcuMjQ2LjM3Ny40MzYuNTc3Yy4zODkuNDA3Ljg5Mi43MiAxLjQ1MS43MmMuODE0IDAgMS40MzEtLjQwMiAxLjg2LS45MzdjLjQ0LS41NTIuNjQtMS4xOTUuNjQtMS41NjNhLjUuNSAwIDAgMSAuNS0uNWMuMTMgMCAuNTE1LS4wODIuODYyLS4zOGMuMzIzLS4yNzcuNjM4LS43NjEuNjM4LTEuNjJjMC0uOTc1LS4xMjUtMS42My0uMzIyLTIuMDI2YS45MjMuOTIzIDAgMCAwLS4zLS4zN0EuNjU3LjY1NyAwIDAgMCAxNiA5LjVhLjUuNSAwIDAgMS0uNDE2LS43NzdjLjM4NC0uNTc2LjQxMi0xLjUyMy4xMzMtMi4zMDVjLS4xMzctLjM4My0uMzI4LS42NjgtLjUyNC0uODI3Yy0uMTc5LS4xNDQtLjM0Ny0uMTgtLjUzNS0uMTE3QS41LjUgMCAwIDEgMTQgNWMwLS41NjgtLjI4LTEuMDU3LS43NDUtMS40MThBMi45MSAyLjkxIDAgMCAwIDExLjUgM2EuNzYuNzYgMCAwIDAtLjUzNS4xODZhMS4yMiAxLjIyIDAgMCAwLS4zMS40OWEyLjU3OSAyLjU3OSAwIDAgMC0uMTU1LjgxNHY5LjAxaC43NWMuNjkgMCAxLjI1LS41NiAxLjI1LTEuMjV2LTEuODM1YTEuNSAxLjUgMCAxIDEgMSAwdjEuODM1YTIuMjUgMi4yNSAwIDAgMS0yLjI1IDIuMjVoLS43NXpNNi41IDdhLjUuNSAwIDEgMCAxIDBhLjUuNSAwIDAgMC0xIDB6TTEzIDkuNWEuNS41IDAgMSAwIDAtMWEuNS41IDAgMCAwIDAgMXptLTYgM2EuNS41IDAgMSAwIDAgMWEuNS41IDAgMCAwIDAtMXoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__mobile::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNyAxLjAxTDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__settings__header__debug::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxwYXRoIGQ9Ik0yOS44MyAyMGwuMzQtMmwtNS4xNy0uODVWMTN2LS4yM2w1LjA2LTEuMzZsLS41MS0xLjkzbC00LjgzIDEuMjlBOSA5IDAgMCAwIDIwIDVWMmgtMnYyLjIzYTguODEgOC44MSAwIDAgMC00IDBWMmgtMnYzYTkgOSAwIDAgMC00LjcxIDUuODJMMi40NiA5LjQ4TDIgMTEuNDFsNSAxLjM2VjE3LjE1TDEuODQgMThsLjMyIDJMNyAxOS4xOGE4LjkgOC45IDAgMCAwIC44MiAzLjU3bC00LjUzIDQuNTRsMS40MiAxLjQybDQuMTktNC4yYTkgOSAwIDAgMCAxNC4yIDBsNC4xOSA0LjJsMS40Mi0xLjQybC00LjU0LTQuNTRhOC45IDguOSAwIDAgMCAuODMtMy41N3pNMTUgMjUuOTJBNyA3IDAgMCAxIDkgMTl2LTZoNnpNOS4yOSAxMWE3IDcgMCAwIDEgMTMuNDIgMHpNMjMgMTlhNyA3IDAgMCAxLTYgNi45MlYxM2g2eiIgZmlsbD0iY3VycmVudENvbG9yIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
|
||||
.various-complements__settings__popup-hotkey {
|
||||
padding: 1rem 0;
|
||||
/*noinspection CssUnresolvedCustomProperty*/
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.various-complements__settings__popup-hotkey-item {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
.various-complements__footer {
|
||||
position: relative;
|
||||
padding-right: 15px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
.various-complements__footer::before {
|
||||
position: absolute;
|
||||
width: 13px;
|
||||
margin-top: 1px;
|
||||
margin-left: -15px;
|
||||
filter: invert(0.5) hue-rotate(180deg);
|
||||
}
|
||||
.various-complements__footer__current-file::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01IDFhMiAyIDAgMCAwLTIgMnY5Ljk5OGEyIDIgMCAwIDAgMiAyaDEuMDQ2bC4yNS0xSDVhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTFoM3YyLjVBMS41IDEuNSAwIDAgMCA5LjQ5OCA2aDIuNXYxLjQ0Yy4zMDYtLjIwOS42NDctLjM0NCAxLS40MDVWNS40MTNhMS41IDEuNSAwIDAgMC0uNDQtMS4wNkw5LjY0NSAxLjQzOUExLjUgMS41IDAgMCAwIDguNTg1IDFINXptNi43OTEgNEg5LjVhLjUuNSAwIDAgMS0uNS0uNVYyLjIwNmwyLjc5MiAyLjc5MnptMS4yMDcgMy4wNmMtLjI0Mi4wNzEtLjQ3LjIwMy0uNjYyLjM5NEw4LjA1IDEyLjc0YTIuNzc3IDIuNzc3IDAgMCAwLS43MjIgMS4yNTdsLS4wMDkuMDMzbC0uMzAyIDEuMjExYS42MS42MSAwIDAgMCAuNzM4Ljc0bDEuMjExLS4zMDNhMi43NzYgMi43NzYgMCAwIDAgMS4yOS0uNzNsNC4yODgtNC4yODhhMS41NiAxLjU2IDAgMCAwLTEuNTQ1LTIuNnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__footer__current-vault::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEwLDEwYy00LjQsMC04LDMuNi04LDh2NjRjMCw0LjQsMy42LDgsOCw4aDJ2MmgxMHYtMmg1NnYyaDEwdi0yaDJjNC40LDAsOC0zLjYsOC04VjE4YzAtNC40LTMuNi04LTgtOEwxMCwxMHogTTEwLDE0aDgwIGMyLjIsMCw0LDEuOCw0LDR2NjRjMCwyLjItMS44LDQtNCw0SDEwYy0yLjIsMC00LTEuOC00LTRWMThDNiwxNS44LDcuOCwxNCwxMCwxNHogTTEzLjYsMjBjLTEsMC4yLTEuNiwxLTEuNiwydjIzLjQgYy0wLjEsMC40LTAuMSwwLjgsMCwxLjJ2Ny4xYzAsMC4xLDAsMC4xLDAsMC4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC4xLDAsMC4xLDAsMC4yVjc4YzAsMS4xLDAuOSwyLDIsMmg3MmMxLjEsMCwyLTAuOSwyLTJWMjIgYzAtMS4xLTAuOS0yLTItMkgxNGMtMC4xLDAtMC4xLDAtMC4yLDBTMTMuNywyMCwxMy42LDIweiBNMTYsMjRoNjh2NTJIMTZWNTQuOWwzLjQtMy40YzAuNC0wLjQsMC42LTAuOSwwLjYtMS40cy0wLjItMS4xLTAuNi0xLjQgTDE2LDQ1LjFMMTYsMjR6IE00OS44LDI3LjljLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuMSwwLTAuMSwwLTAuMiwwLjFjLTUuNSwwLjItMTAuNSwyLjQtMTQuMyw1LjljLTAuNSwwLjItMC45LDAuNi0xLjEsMS4xIGMtMy40LDMuNy01LjYsOC42LTUuOSwxMy45Yy0wLjQsMC42LTAuNCwxLjQsMCwyYzAuMiw1LjMsMi4zLDEwLjEsNS43LDEzLjhjMC4yLDAuNywwLjcsMS4zLDEuNCwxLjRjMy44LDMuNCw4LjgsNS41LDE0LjMsNS43IGMwLjEsMCwwLjEsMCwwLjIsMC4xYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMSwwLDAuMi0wLjFjNS40LTAuMiwxMC40LTIuMywxNC4yLTUuNyBjMC43LTAuMiwxLjMtMC44LDEuNC0xLjVjMy40LTMuOCw1LjUtOC43LDUuNy0xNC4yYzAsMCwwLTAuMSwwLjEtMC4xYzAsMCwwLDAsMC0wLjFjMC0wLjEsMC0wLjMsMC0wLjRjMC0wLjEsMC0wLjIsMC0wLjMgYzAtMC4xLDAtMC4zLTAuMS0wLjRjLTAuMi01LjYtMi40LTEwLjctNi0xNC41YzAsMCwwLDAtMC4xLTAuMWMwLDAsMC0wLjEtMC4xLTAuMWMtMC4yLTAuMi0wLjQtMC40LTAuNi0wLjYgYy0zLjgtMy42LTguOS01LjktMTQuNC02LjFDNTAuNSwyNy45LDUwLjEsMjcuOSw0OS44LDI3Ljl6IE00OCwzMi4xYzAsMS4xLDAuOSwyLDIsMmMxLjEsMCwyLTAuOSwyLTJjMy41LDAuNCw2LjYsMS44LDkuMywzLjkgYy0wLjYsMC41LTAuOSwxLjMtMC43LDJjMC4yLDAuNywwLjgsMS4zLDEuNSwxLjVjMC44LDAuMiwxLjUtMC4xLDItMC43YzIuMSwyLjYsMy41LDUuOCwzLjksOS4zYzAsMC0wLjEsMC0wLjEsMCBjLTAuMSwwLTAuMSwwLTAuMiwwYy0xLjEsMC4xLTEuOCwxLjEtMS43LDIuMXMxLDEuOSwyLjEsMS45Yy0wLjQsMy41LTEuOCw2LjYtMy45LDkuM2MtMC40LTAuNC0xLTAuNi0xLjYtMC42Yy0wLjEsMC0wLjEsMC0wLjIsMCBjLTAuNywwLjEtMS4zLDAuNy0xLjUsMS40Yy0wLjIsMC43LDAsMS41LDAuNSwyYy0yLjYsMi4xLTUuOCwzLjUtOS4zLDMuOWMwLTAuNi0wLjItMS4xLTAuNi0xLjVjLTAuNC0wLjQtMS0wLjYtMS41LTAuNSBjLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuOSwwLjItMS42LDEtMS42LDEuOWMtMy41LTAuNC02LjYtMS44LTkuMy0zLjljMC42LTAuNiwwLjctMS41LDAuNC0yLjJjLTAuMy0wLjctMS4xLTEuMi0xLjktMS4yIGMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuNCwwLjEtMC44LDAuMy0xLjEsMC42Yy0yLjEtMi42LTMuNS01LjgtMy45LTkuM2MxLjEsMCwyLTAuOSwyLTJjMC0xLjEtMC45LTItMi0yYzAuNC0zLjUsMS44LTYuNiwzLjktOS4zIGMwLjUsMC42LDEuMywwLjksMiwwLjdjMC43LTAuMiwxLjMtMC44LDEuNS0xLjVjMC4yLTAuOC0wLjEtMS41LTAuNy0yQzQxLjQsMzMuOSw0NC41LDMyLjQsNDgsMzIuMUw0OCwzMi4xeiBNNTAsNDAgYy01LjUsMC0xMCw0LjUtMTAsMTBzNC41LDEwLDEwLDEwczEwLTQuNSwxMC0xMFM1NS41LDQwLDUwLDQweiBNNTAsNDRjMy4zLDAsNiwyLjcsNiw2cy0yLjcsNi02LDZzLTYtMi43LTYtNlM0Ni43LDQ0LDUwLDQ0eiI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__footer__custom-dictionary::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHJlY3QgeD0iMzIiIHk9Ijk2IiB3aWR0aD0iNjQiIGhlaWdodD0iMzY4IiByeD0iMTYiIHJ5PSIxNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMzIiPjwvcmVjdD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDIyNGgxMjgiPjwvcGF0aD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDQwMGgxMjgiPjwvcGF0aD48cmVjdCB4PSIxMTIiIHk9IjE2MCIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIzMDQiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxyZWN0IHg9IjI1NiIgeT0iNDgiIHdpZHRoPSI5NiIgaGVpZ2h0PSI0MTYiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxwYXRoIGQ9Ik00MjIuNDYgOTYuMTFsLTQwLjQgNC4yNWMtMTEuMTIgMS4xNy0xOS4xOCAxMS41Ny0xNy45MyAyMy4xbDM0LjkyIDMyMS41OWMxLjI2IDExLjUzIDExLjM3IDIwIDIyLjQ5IDE4Ljg0bDQwLjQtNC4yNWMxMS4xMi0xLjE3IDE5LjE4LTExLjU3IDE3LjkzLTIzLjFMNDQ1IDExNWMtMS4zMS0xMS41OC0xMS40Mi0yMC4wNi0yMi41NC0xOC44OXoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__footer__internal-link::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEyLDBDNS40LDAsMCw1LjQsMCwxMnM1LjQsMTIsMTIsMTJjMi42LDAsNS0wLjgsNi45LTIuMmwxNS42LDE1LjZDMzEuNyw0MC44LDMwLDQ1LjIsMzAsNTBjMCw0LDEuMiw3LjYsMy4yLDEwLjcgTDIwLjEsNzEuMWMtMi4xLTEuOS01LTMuMS04LjEtMy4xQzUuNCw2OCwwLDczLjQsMCw4MHM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyYzAtMi4xLTAuNS00LTEuNS01LjhsMTMuMi0xMC40IEMzOS4zLDY3LjYsNDQuNCw3MCw1MCw3MGMyLjcsMCw1LjItMC41LDcuNS0xLjRsNS4zLDkuOUM1OS45LDgwLjcsNTgsODQuMSw1OCw4OGMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEycy01LjQtMTItMTItMTIgYy0xLjMsMC0yLjYsMC4yLTMuOCwwLjZMNjEsNjYuN2MzLjgtMi41LDYuNy02LjIsOC4xLTEwLjZsNi45LDEuNGMwLDAuMiwwLDAuMywwLDAuNWMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyIGMwLTYuNi01LjQtMTItMTItMTJjLTUuMSwwLTkuNCwzLjItMTEuMiw3LjZsLTYuOS0xLjVjMC4xLTAuNywwLjEtMS40LDAuMS0yLjFjMC03LjktNC42LTE0LjctMTEuMy0xNy45bDMuMS04LjIgYzAuNywwLjEsMS41LDAuMiwyLjIsMC4yYzYuNiwwLDEyLTUuNCwxMi0xMlM3MC42LDAsNjQsMFM1Miw1LjQsNTIsMTJjMCw0LjQsMi41LDguMyw2LjEsMTAuNEw1NSwzMC43Yy0xLjYtMC40LTMuMy0wLjctNS0wLjcgYy00LjgsMC05LjIsMS43LTEyLjYsNC41TDIxLjgsMTguOWMxLjQtMiwyLjItNC40LDIuMi02LjlDMjQsNS40LDE4LjYsMCwxMiwwTDEyLDB6IE0xMiw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LTggUzcuNiw0LDEyLDR6IE02NCw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LThTNTkuNiw0LDY0LDR6IE01MCwzNGM4LjksMCwxNiw3LjEsMTYsMTZjMCw4LjktNy4xLDE2LTE2LDE2IGMtOC45LDAtMTYtNy4xLTE2LTE2YzAtNC4zLDEuNy04LjIsNC40LTExLjFjMC4yLTAuMSwwLjMtMC4zLDAuNC0wLjRDNDEuOCwzNS43LDQ1LjcsMzQsNTAsMzR6IE04OCw1MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhzLTgtMy42LTgtOFM4My42LDUwLDg4LDUweiBNMTIsNzJjNC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDhzLTgtMy42LTgtOFM3LjYsNzIsMTIsNzJ6IE03MCw4MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhjLTQuNCwwLTgtMy42LTgtOGMwLTMsMS43LTUuNiw0LjEtN2MwLjEsMCwwLjEsMCwwLjItMC4xYzAsMCwwLDAsMC4xLTAuMWMwLDAsMC4xLDAsMC4xLTAuMUM2Ny42LDgwLjMsNjguNyw4MCw3MCw4MHogIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__footer__front-matter::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMC4zMiAyLjAxM0E0IDQgMCAwIDAgNi4xNjIgNy4xM2wtMy45ODcgMy45ODZhLjYuNiAwIDAgMC0uMTc2LjQyNFYxNC40YS42LjYgMCAwIDAgLjYuNmgyLjhhLjYuNiAwIDAgMCAuNi0uNlYxM2gxLjlhLjYuNiAwIDAgMCAuNi0uNnYtMS42OTNsLjczNS0uNzM1YTUuNTEgNS41MSAwIDAgMS0uNTY5LS44NDZsLS45OS45OTFhLjYuNiAwIDAgMC0uMTc2LjQyNFYxMkg1LjZhLjYuNiAwIDAgMC0uNi42VjE0SDN2LTIuMjkzbDQuMzItNC4zMmwtLjExOC0uMzAzYTMuMDAxIDMuMDAxIDAgMCAxIDEuOTYtMy45NjVjLjMzLS40MjMuNzItLjc5NiAxLjE1Ny0xLjEwNnpNMTMuNSA2LjI1YS43NS43NSAwIDEgMCAwLTEuNWEuNzUuNzUgMCAwIDAgMCAxLjV6TTkgNi41YTQuNSA0LjUgMCAxIDEgNyAzLjc0MnYyLjA1bC43ODMuNzg0YS42LjYgMCAwIDEgMCAuODQ4TDE1LjcwNyAxNWwxLjA2OCAxLjA2N2EuNi42IDAgMCAxLS4wNS44OTNsLTIuMzUgMS44OGEuNi42IDAgMCAxLS43NSAwbC0yLjQtMS45MmEuNi42IDAgMCAxLS4yMjUtLjQ2OHYtNi4yMUE0LjQ5NiA0LjQ5NiAwIDAgMSA5IDYuNXpNMTMuNSAzYTMuNSAzLjUgMCAwIDAtMS43NSA2LjUzMmEuNS41IDAgMCAxIC4yNS40MzN2Ni4yOTVsMiAxLjZsMS43NTEtMS40MDFsLTEuMDM0LTEuMDM1YS42LjYgMCAwIDEgMC0uODQ4bDEuMDc2LTEuMDc2bC0uNjE3LS42MTdhLjYuNiAwIDAgMS0uMTc2LS40MjRWOS45NjVhLjUuNSAwIDAgMSAuMjUtLjQzM0EzLjUgMy41IDAgMCAwIDEzLjUgM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__footer__match-strategy {
|
||||
cursor: pointer;
|
||||
}
|
||||
.various-complements__footer__match-strategy::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0yMSAxMWgtMS41di0uNWgtMnYzaDJWMTNIMjF2MWMwIC41NS0uNDUgMS0xIDFoLTNjLS41NSAwLTEtLjQ1LTEtMXYtNGMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXYxek04IDEwdjVINi41di0xLjVoLTJWMTVIM3YtNWMwLS41NS40NS0xIDEtMWgzYy41NSAwIDEgLjQ1IDEgMXptLTEuNS41aC0yVjEyaDJ2LTEuNXptNyAxLjVjLjU1IDAgMSAuNDUgMSAxdjFjMCAuNTUtLjQ1IDEtMSAxaC00VjloNGMuNTUgMCAxIC40NSAxIDF2MWMwIC41NS0uNDUgMS0xIDF6TTExIDEwLjV2Ljc1aDJ2LS43NWgtMnptMiAyLjI1aC0ydi43NWgydi0uNzV6IiBmaWxsPSJjdXJyZW50Q29sb3IiPjwvcGF0aD48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__footer__complement-automatically {
|
||||
cursor: pointer;
|
||||
}
|
||||
.various-complements__footer__complement-automatically::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTc2IDUxMiI+PHBhdGggZD0iTTUyOCA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQ4MGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjExMmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em04IDMzNmMwIDQuNDExLTMuNTg5IDgtOCA4SDQ4Yy00LjQxMSAwLTgtMy41ODktOC04VjExMmMwLTQuNDExIDMuNTg5LTggOC04aDQ4MGM0LjQxMSAwIDggMy41ODkgOCA4djI4OHpNMTcwIDI3MHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDgydi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDgyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMzg0IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNMTIyIDE4OHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMkg4MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTk4IDE1OHYtMTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxODBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item::before {
|
||||
display: inline-block;
|
||||
width: 16px;
|
||||
margin-top: 4px;
|
||||
margin-left: -20px;
|
||||
margin-right: 5px;
|
||||
filter: invert(0.5) hue-rotate(180deg);
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item {
|
||||
display: flex;
|
||||
align-items: start;
|
||||
padding-left: 30px !important;
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item > div {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item__description {
|
||||
font-size: 0.75em;
|
||||
/*noinspection CssUnresolvedCustomProperty*/
|
||||
color: var(--text-muted);
|
||||
padding-top: 0.75em;
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item__current-file::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTYgMTYiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik01IDFhMiAyIDAgMCAwLTIgMnY5Ljk5OGEyIDIgMCAwIDAgMiAyaDEuMDQ2bC4yNS0xSDVhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTFoM3YyLjVBMS41IDEuNSAwIDAgMCA5LjQ5OCA2aDIuNXYxLjQ0Yy4zMDYtLjIwOS42NDctLjM0NCAxLS40MDVWNS40MTNhMS41IDEuNSAwIDAgMC0uNDQtMS4wNkw5LjY0NSAxLjQzOUExLjUgMS41IDAgMCAwIDguNTg1IDFINXptNi43OTEgNEg5LjVhLjUuNSAwIDAgMS0uNS0uNVYyLjIwNmwyLjc5MiAyLjc5MnptMS4yMDcgMy4wNmMtLjI0Mi4wNzEtLjQ3LjIwMy0uNjYyLjM5NEw4LjA1IDEyLjc0YTIuNzc3IDIuNzc3IDAgMCAwLS43MjIgMS4yNTdsLS4wMDkuMDMzbC0uMzAyIDEuMjExYS42MS42MSAwIDAgMCAuNzM4Ljc0bDEuMjExLS4zMDNhMi43NzYgMi43NzYgMCAwIDAgMS4yOS0uNzNsNC4yODgtNC4yODhhMS41NiAxLjU2IDAgMCAwLTEuNTQ1LTIuNnoiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
.various-complements__suggestion-item__current-vault::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEwLDEwYy00LjQsMC04LDMuNi04LDh2NjRjMCw0LjQsMy42LDgsOCw4aDJ2MmgxMHYtMmg1NnYyaDEwdi0yaDJjNC40LDAsOC0zLjYsOC04VjE4YzAtNC40LTMuNi04LTgtOEwxMCwxMHogTTEwLDE0aDgwIGMyLjIsMCw0LDEuOCw0LDR2NjRjMCwyLjItMS44LDQtNCw0SDEwYy0yLjIsMC00LTEuOC00LTRWMThDNiwxNS44LDcuOCwxNCwxMCwxNHogTTEzLjYsMjBjLTEsMC4yLTEuNiwxLTEuNiwydjIzLjQgYy0wLjEsMC40LTAuMSwwLjgsMCwxLjJ2Ny4xYzAsMC4xLDAsMC4xLDAsMC4yYzAsMC4xLDAsMC4zLDAsMC40YzAsMC4xLDAsMC4xLDAsMC4yVjc4YzAsMS4xLDAuOSwyLDIsMmg3MmMxLjEsMCwyLTAuOSwyLTJWMjIgYzAtMS4xLTAuOS0yLTItMkgxNGMtMC4xLDAtMC4xLDAtMC4yLDBTMTMuNywyMCwxMy42LDIweiBNMTYsMjRoNjh2NTJIMTZWNTQuOWwzLjQtMy40YzAuNC0wLjQsMC42LTAuOSwwLjYtMS40cy0wLjItMS4xLTAuNi0xLjQgTDE2LDQ1LjFMMTYsMjR6IE00OS44LDI3LjljLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuMSwwLTAuMSwwLTAuMiwwLjFjLTUuNSwwLjItMTAuNSwyLjQtMTQuMyw1LjljLTAuNSwwLjItMC45LDAuNi0xLjEsMS4xIGMtMy40LDMuNy01LjYsOC42LTUuOSwxMy45Yy0wLjQsMC42LTAuNCwxLjQsMCwyYzAuMiw1LjMsMi4zLDEwLjEsNS43LDEzLjhjMC4yLDAuNywwLjcsMS4zLDEuNCwxLjRjMy44LDMuNCw4LjgsNS41LDE0LjMsNS43IGMwLjEsMCwwLjEsMCwwLjIsMC4xYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMywwLDAuNCwwYzAuMSwwLDAuMSwwLDAuMi0wLjFjNS40LTAuMiwxMC40LTIuMywxNC4yLTUuNyBjMC43LTAuMiwxLjMtMC44LDEuNC0xLjVjMy40LTMuOCw1LjUtOC43LDUuNy0xNC4yYzAsMCwwLTAuMSwwLjEtMC4xYzAsMCwwLDAsMC0wLjFjMC0wLjEsMC0wLjMsMC0wLjRjMC0wLjEsMC0wLjIsMC0wLjMgYzAtMC4xLDAtMC4zLTAuMS0wLjRjLTAuMi01LjYtMi40LTEwLjctNi0xNC41YzAsMCwwLDAtMC4xLTAuMWMwLDAsMC0wLjEtMC4xLTAuMWMtMC4yLTAuMi0wLjQtMC40LTAuNi0wLjYgYy0zLjgtMy42LTguOS01LjktMTQuNC02LjFDNTAuNSwyNy45LDUwLjEsMjcuOSw0OS44LDI3Ljl6IE00OCwzMi4xYzAsMS4xLDAuOSwyLDIsMmMxLjEsMCwyLTAuOSwyLTJjMy41LDAuNCw2LjYsMS44LDkuMywzLjkgYy0wLjYsMC41LTAuOSwxLjMtMC43LDJjMC4yLDAuNywwLjgsMS4zLDEuNSwxLjVjMC44LDAuMiwxLjUtMC4xLDItMC43YzIuMSwyLjYsMy41LDUuOCwzLjksOS4zYzAsMC0wLjEsMC0wLjEsMCBjLTAuMSwwLTAuMSwwLTAuMiwwYy0xLjEsMC4xLTEuOCwxLjEtMS43LDIuMXMxLDEuOSwyLjEsMS45Yy0wLjQsMy41LTEuOCw2LjYtMy45LDkuM2MtMC40LTAuNC0xLTAuNi0xLjYtMC42Yy0wLjEsMC0wLjEsMC0wLjIsMCBjLTAuNywwLjEtMS4zLDAuNy0xLjUsMS40Yy0wLjIsMC43LDAsMS41LDAuNSwyYy0yLjYsMi4xLTUuOCwzLjUtOS4zLDMuOWMwLTAuNi0wLjItMS4xLTAuNi0xLjVjLTAuNC0wLjQtMS0wLjYtMS41LTAuNSBjLTAuMSwwLTAuMiwwLTAuMywwLjFjLTAuOSwwLjItMS42LDEtMS42LDEuOWMtMy41LTAuNC02LjYtMS44LTkuMy0zLjljMC42LTAuNiwwLjctMS41LDAuNC0yLjJjLTAuMy0wLjctMS4xLTEuMi0xLjktMS4yIGMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuNCwwLjEtMC44LDAuMy0xLjEsMC42Yy0yLjEtMi42LTMuNS01LjgtMy45LTkuM2MxLjEsMCwyLTAuOSwyLTJjMC0xLjEtMC45LTItMi0yYzAuNC0zLjUsMS44LTYuNiwzLjktOS4zIGMwLjUsMC42LDEuMywwLjksMiwwLjdjMC43LTAuMiwxLjMtMC44LDEuNS0xLjVjMC4yLTAuOC0wLjEtMS41LTAuNy0yQzQxLjQsMzMuOSw0NC41LDMyLjQsNDgsMzIuMUw0OCwzMi4xeiBNNTAsNDAgYy01LjUsMC0xMCw0LjUtMTAsMTBzNC41LDEwLDEwLDEwczEwLTQuNSwxMC0xMFM1NS41LDQwLDUwLDQweiBNNTAsNDRjMy4zLDAsNiwyLjcsNiw2cy0yLjcsNi02LDZzLTYtMi43LTYtNlM0Ni43LDQ0LDUwLDQ0eiI+PC9wYXRoPjwvc3ZnPg==");
|
||||
}
|
||||
.various-complements__suggestion-item__custom-dictionary::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHJlY3QgeD0iMzIiIHk9Ijk2IiB3aWR0aD0iNjQiIGhlaWdodD0iMzY4IiByeD0iMTYiIHJ5PSIxNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMzIiPjwvcmVjdD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDIyNGgxMjgiPjwvcGF0aD48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIiBkPSJNMTEyIDQwMGgxMjgiPjwvcGF0aD48cmVjdCB4PSIxMTIiIHk9IjE2MCIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIzMDQiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxyZWN0IHg9IjI1NiIgeT0iNDgiIHdpZHRoPSI5NiIgaGVpZ2h0PSI0MTYiIHJ4PSIxNiIgcnk9IjE2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzMiI+PC9yZWN0PjxwYXRoIGQ9Ik00MjIuNDYgOTYuMTFsLTQwLjQgNC4yNWMtMTEuMTIgMS4xNy0xOS4xOCAxMS41Ny0xNy45MyAyMy4xbDM0LjkyIDMyMS41OWMxLjI2IDExLjUzIDExLjM3IDIwIDIyLjQ5IDE4Ljg0bDQwLjQtNC4yNWMxMS4xMi0xLjE3IDE5LjE4LTExLjU3IDE3LjkzLTIzLjFMNDQ1IDExNWMtMS4zMS0xMS41OC0xMS40Mi0yMC4wNi0yMi41NC0xOC44OXoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMyIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__suggestion-item__internal-link::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTTEyLDBDNS40LDAsMCw1LjQsMCwxMnM1LjQsMTIsMTIsMTJjMi42LDAsNS0wLjgsNi45LTIuMmwxNS42LDE1LjZDMzEuNyw0MC44LDMwLDQ1LjIsMzAsNTBjMCw0LDEuMiw3LjYsMy4yLDEwLjcgTDIwLjEsNzEuMWMtMi4xLTEuOS01LTMuMS04LjEtMy4xQzUuNCw2OCwwLDczLjQsMCw4MHM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyYzAtMi4xLTAuNS00LTEuNS01LjhsMTMuMi0xMC40IEMzOS4zLDY3LjYsNDQuNCw3MCw1MCw3MGMyLjcsMCw1LjItMC41LDcuNS0xLjRsNS4zLDkuOUM1OS45LDgwLjcsNTgsODQuMSw1OCw4OGMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEycy01LjQtMTItMTItMTIgYy0xLjMsMC0yLjYsMC4yLTMuOCwwLjZMNjEsNjYuN2MzLjgtMi41LDYuNy02LjIsOC4xLTEwLjZsNi45LDEuNGMwLDAuMiwwLDAuMywwLDAuNWMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyIGMwLTYuNi01LjQtMTItMTItMTJjLTUuMSwwLTkuNCwzLjItMTEuMiw3LjZsLTYuOS0xLjVjMC4xLTAuNywwLjEtMS40LDAuMS0yLjFjMC03LjktNC42LTE0LjctMTEuMy0xNy45bDMuMS04LjIgYzAuNywwLjEsMS41LDAuMiwyLjIsMC4yYzYuNiwwLDEyLTUuNCwxMi0xMlM3MC42LDAsNjQsMFM1Miw1LjQsNTIsMTJjMCw0LjQsMi41LDguMyw2LjEsMTAuNEw1NSwzMC43Yy0xLjYtMC40LTMuMy0wLjctNS0wLjcgYy00LjgsMC05LjIsMS43LTEyLjYsNC41TDIxLjgsMTguOWMxLjQtMiwyLjItNC40LDIuMi02LjlDMjQsNS40LDE4LjYsMCwxMiwwTDEyLDB6IE0xMiw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LTggUzcuNiw0LDEyLDR6IE02NCw0YzQuNCwwLDgsMy42LDgsOHMtMy42LDgtOCw4cy04LTMuNi04LThTNTkuNiw0LDY0LDR6IE01MCwzNGM4LjksMCwxNiw3LjEsMTYsMTZjMCw4LjktNy4xLDE2LTE2LDE2IGMtOC45LDAtMTYtNy4xLTE2LTE2YzAtNC4zLDEuNy04LjIsNC40LTExLjFjMC4yLTAuMSwwLjMtMC4zLDAuNC0wLjRDNDEuOCwzNS43LDQ1LjcsMzQsNTAsMzR6IE04OCw1MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhzLTgtMy42LTgtOFM4My42LDUwLDg4LDUweiBNMTIsNzJjNC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDhzLTgtMy42LTgtOFM3LjYsNzIsMTIsNzJ6IE03MCw4MGM0LjQsMCw4LDMuNiw4LDggcy0zLjYsOC04LDhjLTQuNCwwLTgtMy42LTgtOGMwLTMsMS43LTUuNiw0LjEtN2MwLjEsMCwwLjEsMCwwLjItMC4xYzAsMCwwLDAsMC4xLTAuMWMwLDAsMC4xLDAsMC4xLTAuMUM2Ny42LDgwLjMsNjguNyw4MCw3MCw4MHogIj48L3BhdGg+PC9zdmc+");
|
||||
}
|
||||
.various-complements__suggestion-item__front-matter::before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAgMjAiPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMC4zMiAyLjAxM0E0IDQgMCAwIDAgNi4xNjIgNy4xM2wtMy45ODcgMy45ODZhLjYuNiAwIDAgMC0uMTc2LjQyNFYxNC40YS42LjYgMCAwIDAgLjYuNmgyLjhhLjYuNiAwIDAgMCAuNi0uNlYxM2gxLjlhLjYuNiAwIDAgMCAuNi0uNnYtMS42OTNsLjczNS0uNzM1YTUuNTEgNS41MSAwIDAgMS0uNTY5LS44NDZsLS45OS45OTFhLjYuNiAwIDAgMC0uMTc2LjQyNFYxMkg1LjZhLjYuNiAwIDAgMC0uNi42VjE0SDN2LTIuMjkzbDQuMzItNC4zMmwtLjExOC0uMzAzYTMuMDAxIDMuMDAxIDAgMCAxIDEuOTYtMy45NjVjLjMzLS40MjMuNzItLjc5NiAxLjE1Ny0xLjEwNnpNMTMuNSA2LjI1YS43NS43NSAwIDEgMCAwLTEuNWEuNzUuNzUgMCAwIDAgMCAxLjV6TTkgNi41YTQuNSA0LjUgMCAxIDEgNyAzLjc0MnYyLjA1bC43ODMuNzg0YS42LjYgMCAwIDEgMCAuODQ4TDE1LjcwNyAxNWwxLjA2OCAxLjA2N2EuNi42IDAgMCAxLS4wNS44OTNsLTIuMzUgMS44OGEuNi42IDAgMCAxLS43NSAwbC0yLjQtMS45MmEuNi42IDAgMCAxLS4yMjUtLjQ2OHYtNi4yMUE0LjQ5NiA0LjQ5NiAwIDAgMSA5IDYuNXpNMTMuNSAzYTMuNSAzLjUgMCAwIDAtMS43NSA2LjUzMmEuNS41IDAgMCAxIC4yNS40MzN2Ni4yOTVsMiAxLjZsMS43NTEtMS40MDFsLTEuMDM0LTEuMDM1YS42LjYgMCAwIDEgMC0uODQ4bDEuMDc2LTEuMDc2bC0uNjE3LS42MTdhLjYuNiAwIDAgMS0uMTc2LS40MjRWOS45NjVhLjUuNSAwIDAgMSAuMjUtLjQzM0EzLjUgMy41IDAgMCAwIDEzLjUgM3oiIGZpbGw9ImN1cnJlbnRDb2xvciI+PC9wYXRoPjwvZz48L3N2Zz4=");
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item__phantom,
|
||||
.various-complements__suggestion-item__phantom::before {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.various-complements__suggestion-item__content__alias {
|
||||
padding-left: 20px;
|
||||
}
|
||||
.various-complements__suggestion-item__content__alias::before {
|
||||
width: 16px;
|
||||
margin-left: -20px;
|
||||
margin-right: 3px;
|
||||
filter: invert(0.5) hue-rotate(180deg);
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgY2xhc3M9ImZvcndhcmQtYXJyb3ciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0ibTkuOSw4OS4wOTIyNmMtMC4wMzA5NCwwIC0wLjA1NDE0LDAgLTAuMDg1MDgsMGMtMS4wNjczNCwtMC4wNDY0MSAtMS45MTAzOSwtMC45MjgxMiAtMS44OTQ5MiwtMS45OTU0N2MwLjAwNzc0LC0wLjQ4NzI2IDEuMTQ0NjksLTQ4LjEzMTAxIDQ3LjUyLC00OS40NDU4NmwwLC0xMy44OTA5NGMwLC0wLjc2NTcgMC40NDA4NiwtMS40NjE4IDEuMTI5MjIsLTEuNzg2NjRjMC42ODA2MiwtMC4zMzI1OCAxLjUwODIsLTAuMjMyMDMgMi4wOTYwMSwwLjI0NzVsMzEuNjgsMjUuNzRjMC40NjQwNiwwLjM3ODk5IDAuNzM0NzYsMC45NDM2IDAuNzM0NzYsMS41MzkxNGMwLDAuNTk1NTUgLTAuMjcwNywxLjE2MDE2IC0wLjcyNzAzLDEuNTM5MTRsLTMxLjY4LDI1Ljc0Yy0wLjU5NTU1LDAuNDc5NTMgLTEuNDE1MzksMC41NzIzNCAtMi4xMDM3NSwwLjI0NzVjLTAuNjg4MzYsLTAuMzI0ODUgLTEuMTI5MjIsLTEuMDIwOTQgLTEuMTI5MjIsLTEuNzg2NjRsMCwtMTMuODQ0NTNjLTQxLjI2Mjg5LDAuNzUwMjQgLTQzLjQ5MDM5LDI0LjgxOTYxIC00My41Njc3MywyNS44NTYwMWMtMC4wNjk2MSwxLjA0NDE0IC0wLjkzNTg2LDEuODQwNzggLTEuOTcyMjYsMS44NDA3OHoiPjwvcGF0aD48L3N2Zz4=");
|
||||
}
|
||||
|
||||
.various-complements__selection-lock
|
||||
.various-complements__suggestion-item.is-selected {
|
||||
background-color: inherit;
|
||||
border: dotted 1px;
|
||||
}
|
||||
|
40
README.md
40
README.md
@ -1,20 +1,20 @@
|
||||
# My Notes
|
||||
|
||||
## UNB
|
||||
### Year 1-3
|
||||
Notes were taken either using OneNote, pencil and paper, or not at all lol
|
||||
|
||||
### Year 4
|
||||
#### Semester 1
|
||||
- CS2418: Intro to Information Security
|
||||
- CS3418: Operating Systems 1
|
||||
#### Semester 2
|
||||
- CS2333: Computability and Formal Languages
|
||||
- CS3873: Net-centric Computing
|
||||
- STAT2593: Statistics for Engineers
|
||||
### Year 5
|
||||
#### Semester 1
|
||||
- CS3113:
|
||||
- HIST1001:
|
||||
- HIST1451:
|
||||
- MAAC3113:
|
||||
# My Notes
|
||||
|
||||
## UNB
|
||||
### Year 1-3
|
||||
Notes were taken either using OneNote, pencil and paper, or not at all lol
|
||||
|
||||
### Year 4
|
||||
#### Semester 1
|
||||
- CS2418: Intro to Information Security
|
||||
- CS3418: Operating Systems 1
|
||||
#### Semester 2
|
||||
- CS2333: Computability and Formal Languages
|
||||
- CS3873: Net-centric Computing
|
||||
- STAT2593: Statistics for Engineers
|
||||
### Year 5
|
||||
#### Semester 1
|
||||
- CS3113:
|
||||
- HIST1001:
|
||||
- HIST1451:
|
||||
- MAAC3113:
|
||||
|
@ -1,5 +1,5 @@
|
||||
Lecture Topic: Access Control
|
||||
|
||||
[Module Four PDF](https://lms.unb.ca/d2l/le/content/231513/viewContent/2614490/View)
|
||||
|
||||
|
||||
Lecture Topic: Access Control
|
||||
|
||||
[Module Four PDF](https://lms.unb.ca/d2l/le/content/231513/viewContent/2614490/View)
|
||||
|
||||
|
||||
|
@ -1,30 +1,30 @@
|
||||
Lecture Topic: Access Control
|
||||
|
||||
[Module Four PDF](https://lms.unb.ca/d2l/le/content/231513/viewContent/2614490/View)
|
||||
|
||||
Access Control Policies:
|
||||
- Discretionary access control (DAC): Controls access based on the identity of the requestor, and based on access rules. The term discretionary is used because it implies that the authorized user might be able to give access to another user (?)
|
||||
- Mandatory access control (MAC): Controls access based on security labels which indicate how sensitive the data is, and use security clearances. The term mandatory is used because a user who has access to a resource may not enable another user to have access
|
||||
- Role based access control (RBAC): Controls access based on roles that users have in a given system, and rules that control access to resources based on those roles
|
||||
- Attribute based access control (ABAC): Controls access based on attributes a user has, the resource being requested and the current environment
|
||||
|
||||
Subject, Object and Access Right
|
||||
- Subject: A subject is an entity capable of accessing objects. A comparison is that a subject can be equated to a process. A process is often a representation of a given user.
|
||||
- Owner: The creator of the resource, full access to the resource. May belong to system administrator, or a project administrator for project resources
|
||||
- Group: A group of users that may be assigned in addition to the owner. In most schemes a user can belong to multiple groups
|
||||
- World: Generally the least amount of access, and applies to everyone who isn't the owner or in an allowed group
|
||||
- Object: An object is the resources which access is being controlled. Usually objects store or receive information. Examples would include files, directories, blocks, pages, programs
|
||||
- Access Right: The way in which a subject may access an object
|
||||
- Read: The subject can view information. This also allows copying and printing
|
||||
- Write: The user may add, modify or delete the object being requested. Write includes access to read
|
||||
- Execute: You can execute the object if it is a program or script that contains code/machine code
|
||||
- Delete: The subject can delete the object that is being accessed
|
||||
- Create: The subject can create new objects
|
||||
- Search: The subject can access the a of objects and search a directory
|
||||
|
||||
Example: UNIX file access control
|
||||
All UNIX file systems are administered by the OS in terms of inodes. An inode (index node) is a control structure for a particular file. Several files may be associated with a single inode, but an active inode is associated with exactly one file, and each file is controlled by exactly one inode.
|
||||
|
||||
Attributes of the file as well as permissions are stored in the inode. On the disk there is an inode table or inode list, which stores all the files on the system. When a file is opened its inode is stored in a memory resident inode table.
|
||||
|
||||
|
||||
Lecture Topic: Access Control
|
||||
|
||||
[Module Four PDF](https://lms.unb.ca/d2l/le/content/231513/viewContent/2614490/View)
|
||||
|
||||
Access Control Policies:
|
||||
- Discretionary access control (DAC): Controls access based on the identity of the requestor, and based on access rules. The term discretionary is used because it implies that the authorized user might be able to give access to another user (?)
|
||||
- Mandatory access control (MAC): Controls access based on security labels which indicate how sensitive the data is, and use security clearances. The term mandatory is used because a user who has access to a resource may not enable another user to have access
|
||||
- Role based access control (RBAC): Controls access based on roles that users have in a given system, and rules that control access to resources based on those roles
|
||||
- Attribute based access control (ABAC): Controls access based on attributes a user has, the resource being requested and the current environment
|
||||
|
||||
Subject, Object and Access Right
|
||||
- Subject: A subject is an entity capable of accessing objects. A comparison is that a subject can be equated to a process. A process is often a representation of a given user.
|
||||
- Owner: The creator of the resource, full access to the resource. May belong to system administrator, or a project administrator for project resources
|
||||
- Group: A group of users that may be assigned in addition to the owner. In most schemes a user can belong to multiple groups
|
||||
- World: Generally the least amount of access, and applies to everyone who isn't the owner or in an allowed group
|
||||
- Object: An object is the resources which access is being controlled. Usually objects store or receive information. Examples would include files, directories, blocks, pages, programs
|
||||
- Access Right: The way in which a subject may access an object
|
||||
- Read: The subject can view information. This also allows copying and printing
|
||||
- Write: The user may add, modify or delete the object being requested. Write includes access to read
|
||||
- Execute: You can execute the object if it is a program or script that contains code/machine code
|
||||
- Delete: The subject can delete the object that is being accessed
|
||||
- Create: The subject can create new objects
|
||||
- Search: The subject can access the a of objects and search a directory
|
||||
|
||||
Example: UNIX file access control
|
||||
All UNIX file systems are administered by the OS in terms of inodes. An inode (index node) is a control structure for a particular file. Several files may be associated with a single inode, but an active inode is associated with exactly one file, and each file is controlled by exactly one inode.
|
||||
|
||||
Attributes of the file as well as permissions are stored in the inode. On the disk there is an inode table or inode list, which stores all the files on the system. When a file is opened its inode is stored in a memory resident inode table.
|
||||
|
||||
|
||||
|
@ -1,68 +1,68 @@
|
||||
Lecture Topic: UNIX file access control
|
||||
|
||||
[Module Four PDF](https://lms.unb.ca/d2l/le/content/231513/viewContent/2614490/View)
|
||||
|
||||
# Unix file access control
|
||||
|
||||
Each Unix user is assigned a UUID, a user is also a member of a primary group, and possibly a number of other groups, each identified by a group ID
|
||||
|
||||
When a file is created, it is designed as owned by a particular user and marked with that users id, It also belongs to a specific group, which initially is is either its creators primary group or the group of its parents directory that has SETGID permission set
|
||||
|
||||
Associated with each file is a set of 12 protection bits
|
||||
|
||||
Table of Unix permissions goes here
|
||||
## Superuser
|
||||
|
||||
One particular user ID is designated as "super user"
|
||||
|
||||
This user is exempt from the usual file access control constraints and has systemwide accesses.
|
||||
|
||||
Any program that is owned by, and SetUID to, the superuser potentially grants unrestricted access to the system. Great care must be taken when running or making programs which run as the superuser
|
||||
|
||||
## Access Control Lists in Unix
|
||||
|
||||
Many modern unix and unix based OS, support access control lists, including FreeBSD, OpenBSD and Solaris, often called the "extended access control list" while the traditional Unix system is called the "minimal access control list"
|
||||
|
||||
## Mandatory access control
|
||||
|
||||
In this nondiscretionary model, people are granted access based on information clearance.
|
||||
|
||||
A central authority regulates access rights based on different security levels
|
||||
|
||||
Policies are set by the administrator, the users cannot able to interact with permissions.
|
||||
|
||||
This model is common in military or government.
|
||||
|
||||
MAC puts strict controls on users and information being accessed
|
||||
|
||||
## Role-based access control
|
||||
|
||||
In RBAC, permissions are based on roles that users assume, rather than identity.
|
||||
|
||||
This is typically a job function within an organization.
|
||||
|
||||
Users are often given roles either statically or dynamically according to their responsibilities.
|
||||
|
||||
The relationship of users to roles is many to many, as is the relationship to roles to resources or system objects
|
||||
|
||||
The set of users changes, and the assignment of roles can often be dynamic
|
||||
|
||||
The set of roles is often static, usually only adding or deleting occasionally
|
||||
|
||||
Each role will often have access rights to one or more given resources. The set of resources that a role can access often does not change frequently as well.
|
||||
|
||||
Insert RBAC table example here
|
||||
|
||||
RBAC reference models
|
||||
- RBAC0: This is the minimum for a RBAC system
|
||||
- RBAC1: This is RBAC0 with the addition of role hierarchies, which enables role inheritance
|
||||
- RBAC2: This is RBAC0 which adds constraints, which restrict the way in which componants of an RBAC system can be configured (ex, only x times a day)
|
||||
- RBAC3: Is RBAC0, RBAC1 and RBAC2
|
||||
|
||||
## Attribute based access control
|
||||
|
||||
ABAC is a dynamic, context based policy that defines access based on policies granted by users. The system is used in identity and access management frameworks.
|
||||
|
||||
An ABAC model can define authorizations that express conditions on properties of both the resources and the subject
|
||||
|
||||
Lecture Topic: UNIX file access control
|
||||
|
||||
[Module Four PDF](https://lms.unb.ca/d2l/le/content/231513/viewContent/2614490/View)
|
||||
|
||||
# Unix file access control
|
||||
|
||||
Each Unix user is assigned a UUID, a user is also a member of a primary group, and possibly a number of other groups, each identified by a group ID
|
||||
|
||||
When a file is created, it is designed as owned by a particular user and marked with that users id, It also belongs to a specific group, which initially is is either its creators primary group or the group of its parents directory that has SETGID permission set
|
||||
|
||||
Associated with each file is a set of 12 protection bits
|
||||
|
||||
Table of Unix permissions goes here
|
||||
## Superuser
|
||||
|
||||
One particular user ID is designated as "super user"
|
||||
|
||||
This user is exempt from the usual file access control constraints and has systemwide accesses.
|
||||
|
||||
Any program that is owned by, and SetUID to, the superuser potentially grants unrestricted access to the system. Great care must be taken when running or making programs which run as the superuser
|
||||
|
||||
## Access Control Lists in Unix
|
||||
|
||||
Many modern unix and unix based OS, support access control lists, including FreeBSD, OpenBSD and Solaris, often called the "extended access control list" while the traditional Unix system is called the "minimal access control list"
|
||||
|
||||
## Mandatory access control
|
||||
|
||||
In this nondiscretionary model, people are granted access based on information clearance.
|
||||
|
||||
A central authority regulates access rights based on different security levels
|
||||
|
||||
Policies are set by the administrator, the users cannot able to interact with permissions.
|
||||
|
||||
This model is common in military or government.
|
||||
|
||||
MAC puts strict controls on users and information being accessed
|
||||
|
||||
## Role-based access control
|
||||
|
||||
In RBAC, permissions are based on roles that users assume, rather than identity.
|
||||
|
||||
This is typically a job function within an organization.
|
||||
|
||||
Users are often given roles either statically or dynamically according to their responsibilities.
|
||||
|
||||
The relationship of users to roles is many to many, as is the relationship to roles to resources or system objects
|
||||
|
||||
The set of users changes, and the assignment of roles can often be dynamic
|
||||
|
||||
The set of roles is often static, usually only adding or deleting occasionally
|
||||
|
||||
Each role will often have access rights to one or more given resources. The set of resources that a role can access often does not change frequently as well.
|
||||
|
||||
Insert RBAC table example here
|
||||
|
||||
RBAC reference models
|
||||
- RBAC0: This is the minimum for a RBAC system
|
||||
- RBAC1: This is RBAC0 with the addition of role hierarchies, which enables role inheritance
|
||||
- RBAC2: This is RBAC0 which adds constraints, which restrict the way in which componants of an RBAC system can be configured (ex, only x times a day)
|
||||
- RBAC3: Is RBAC0, RBAC1 and RBAC2
|
||||
|
||||
## Attribute based access control
|
||||
|
||||
ABAC is a dynamic, context based policy that defines access based on policies granted by users. The system is used in identity and access management frameworks.
|
||||
|
||||
An ABAC model can define authorizations that express conditions on properties of both the resources and the subject
|
||||
|
||||
Long ass list in the slides
|
@ -1,5 +1,5 @@
|
||||
Lecture Topic: Database Security
|
||||
|
||||
[Module Five](https://lms.unb.ca/d2l/le/content/231513/viewContent/2617915/View)
|
||||
|
||||
Lecture Topic: Database Security
|
||||
|
||||
[Module Five](https://lms.unb.ca/d2l/le/content/231513/viewContent/2617915/View)
|
||||
|
||||
I'm tired as shit might not type anything
|
@ -1,7 +1,7 @@
|
||||
Lecture Topic: Databases
|
||||
|
||||
A view is a virtual table
|
||||
|
||||
A view is the result of a query, that returns selected rows and columns from one or more tables
|
||||
|
||||
Lecture Topic: Databases
|
||||
|
||||
A view is a virtual table
|
||||
|
||||
A view is the result of a query, that returns selected rows and columns from one or more tables
|
||||
|
||||
SQL injection is the one of the most common forms of database attacks
|
@ -1,23 +1,23 @@
|
||||
Lecture Topic: SQL attacks
|
||||
|
||||
[Slides](https://lms.unb.ca/d2l/le/content/231513/viewContent/2617915/View)
|
||||
## Inferential attack:
|
||||
An inferential attack, there is no transfer of data, but the attacker is able to reconstruct information by sending particular requests, and observing the behavior of the website or database
|
||||
Examples include
|
||||
- Illegal/logically incorrect queries: This lets the attacker gain information by observing the behavior of the backend system. Even error codes can often give the attacker information about vulnerable/injectable
|
||||
- Blind SQL injection: This attacks allow the attacker to infer data present on the server, by noticing the differences in of the result of the injection. An example would be the difference between a request with injection being true or false, it could be a result code, an empty response, result strings.
|
||||
|
||||
## Out of band attack:
|
||||
This is a type of attack where the attacker receives information through another method, like an email containing data. This can happen when the outbound connectivity of a system is lax.
|
||||
|
||||
|
||||
# SQL injection countermeasures
|
||||
There are three types of countermeasures, generally
|
||||
|
||||
## Defensive Coding
|
||||
Here are a few defensive coding techniques:
|
||||
- Manual defensive coding practices like type checking (only allow alphanumeric characters in username)
|
||||
- Parameterized query inspection, by specifying the structure of a query, we can inspect the contents of input and not allow the parameters to affect the structure of the query itself
|
||||
- SQL DOM is a way to do automatic data validation and escaping by providing a standard structure to database queries.
|
||||
|
||||
## Detection
|
||||
Lecture Topic: SQL attacks
|
||||
|
||||
[Slides](https://lms.unb.ca/d2l/le/content/231513/viewContent/2617915/View)
|
||||
## Inferential attack:
|
||||
An inferential attack, there is no transfer of data, but the attacker is able to reconstruct information by sending particular requests, and observing the behavior of the website or database
|
||||
Examples include
|
||||
- Illegal/logically incorrect queries: This lets the attacker gain information by observing the behavior of the backend system. Even error codes can often give the attacker information about vulnerable/injectable
|
||||
- Blind SQL injection: This attacks allow the attacker to infer data present on the server, by noticing the differences in of the result of the injection. An example would be the difference between a request with injection being true or false, it could be a result code, an empty response, result strings.
|
||||
|
||||
## Out of band attack:
|
||||
This is a type of attack where the attacker receives information through another method, like an email containing data. This can happen when the outbound connectivity of a system is lax.
|
||||
|
||||
|
||||
# SQL injection countermeasures
|
||||
There are three types of countermeasures, generally
|
||||
|
||||
## Defensive Coding
|
||||
Here are a few defensive coding techniques:
|
||||
- Manual defensive coding practices like type checking (only allow alphanumeric characters in username)
|
||||
- Parameterized query inspection, by specifying the structure of a query, we can inspect the contents of input and not allow the parameters to affect the structure of the query itself
|
||||
- SQL DOM is a way to do automatic data validation and escaping by providing a standard structure to database queries.
|
||||
|
||||
## Detection
|
||||
|
@ -1,5 +1,5 @@
|
||||
Lecture Topic: Database Encryption
|
||||
|
||||
[Slides](https://lms.unb.ca/d2l/le/content/231513/viewContent/2617915/View)
|
||||
|
||||
Lecture Topic: Database Encryption
|
||||
|
||||
[Slides](https://lms.unb.ca/d2l/le/content/231513/viewContent/2617915/View)
|
||||
|
||||
database encryption and problems with database encryption and database encryption schemes
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: Malicious Software
|
||||
|
||||
Lecture Topic: Malicious Software
|
||||
|
||||
Look in slides on it, not that hard
|
@ -1,30 +1,30 @@
|
||||
Lecture Topic: User authentication
|
||||
|
||||
Exploiting User Mistakes:
|
||||
If the system assigns password the user is more likely to write it down because of difficulty in remembering it.
|
||||
A user might share a password between colleagues to make it easier to share files
|
||||
Social engineering may be used to trick users into sharing passwords
|
||||
Many systems have administration accounts with preconfigured passwords
|
||||
|
||||
Exploiting Multiple Password Use:
|
||||
Attacks can be much more effective if users share the same password between services
|
||||
|
||||
Electronic Monitoring:
|
||||
If a password is communicated across a network to log on to a remote system, it is vulnerable to eavesdropping. Encryption will not fix this, because the attacker can simply replay the encrypted password to the endpoint.
|
||||
|
||||
Why is password based authentication still popular?
|
||||
Physical tokens can be expensive and inconvenient, and biometrics require hardware that authenticates said biometrics that can be potentially exploited
|
||||
|
||||
The use of hashed passwords:
|
||||
You can hash a password to not store plaintext passwords on a server or service. This hash is designed to be slow to execute as to slow down attackers who are trying to brute force the passwords.
|
||||
|
||||
Salting is when you add a random salt value to a password to avoid duplicates in a password database, as hashes of common passwords can be analyzed to deduce the plaintext password. It makes it way harder to perform dictionary attacks on the database as the hash function would not give the same hash as the hash + salt
|
||||
|
||||
This scheme comes from UNIX, and a password file. It stores the user ID, salt, and the hash code, and the slow hash function uses the salt + plaintext password and compares this result to the hash code for authentication.
|
||||
|
||||
The salt is okay to store because the salt is truly random data and knowing the salt does not make it easier to reverse the plaintext based on the hash code.
|
||||
|
||||
Password Cracking of User-Chosen passwords:
|
||||
A traditional approach is to use a large dictionary and trying each entry against the password file.
|
||||
|
||||
Lecture Topic: User authentication
|
||||
|
||||
Exploiting User Mistakes:
|
||||
If the system assigns password the user is more likely to write it down because of difficulty in remembering it.
|
||||
A user might share a password between colleagues to make it easier to share files
|
||||
Social engineering may be used to trick users into sharing passwords
|
||||
Many systems have administration accounts with preconfigured passwords
|
||||
|
||||
Exploiting Multiple Password Use:
|
||||
Attacks can be much more effective if users share the same password between services
|
||||
|
||||
Electronic Monitoring:
|
||||
If a password is communicated across a network to log on to a remote system, it is vulnerable to eavesdropping. Encryption will not fix this, because the attacker can simply replay the encrypted password to the endpoint.
|
||||
|
||||
Why is password based authentication still popular?
|
||||
Physical tokens can be expensive and inconvenient, and biometrics require hardware that authenticates said biometrics that can be potentially exploited
|
||||
|
||||
The use of hashed passwords:
|
||||
You can hash a password to not store plaintext passwords on a server or service. This hash is designed to be slow to execute as to slow down attackers who are trying to brute force the passwords.
|
||||
|
||||
Salting is when you add a random salt value to a password to avoid duplicates in a password database, as hashes of common passwords can be analyzed to deduce the plaintext password. It makes it way harder to perform dictionary attacks on the database as the hash function would not give the same hash as the hash + salt
|
||||
|
||||
This scheme comes from UNIX, and a password file. It stores the user ID, salt, and the hash code, and the slow hash function uses the salt + plaintext password and compares this result to the hash code for authentication.
|
||||
|
||||
The salt is okay to store because the salt is truly random data and knowing the salt does not make it easier to reverse the plaintext based on the hash code.
|
||||
|
||||
Password Cracking of User-Chosen passwords:
|
||||
A traditional approach is to use a large dictionary and trying each entry against the password file.
|
||||
|
||||
Another approach is to use precomputed hashes, and compare this against the password file directly. This approach can be countered by using a large salt value and a large hash length
|
@ -1,66 +1,66 @@
|
||||
Lecture Topic: Passwords
|
||||
|
||||
Password File Access Control:
|
||||
One way to thwart a password attack is to deny the attacker access to the password file
|
||||
|
||||
Shadow password?
|
||||
|
||||
There are four techniques to attempt make users select a secure password:
|
||||
- User Education (Can be ignored)
|
||||
- Computer Generated Passwords (Users are unable to remember)
|
||||
- Reactive password checking (Resource intensity issues)
|
||||
- The system runs its own password cracker in the background and finds guessable passwords
|
||||
- Any vulnerable passwords remain vulnerable until the checker checks it
|
||||
- Complex Password Policy (Proactive password checker - Promising approach)
|
||||
- Password must be at least 16 characters (basic16)
|
||||
- Must have 8 characters including an uppercase and lowercase, a digit and may not contain a dictionary word (comprehensive8)
|
||||
|
||||
Another possible procedure is to simply compile a large dictionary of bad passwords, and when the user selects a password, it makes sure it's not in the list
|
||||
|
||||
But there are problems with this approach
|
||||
- Space: The dictionary must be very large to be effective
|
||||
- Time: The time required to search a large dictionary may itself be large. If the checker also checks permutations the time cost increases exponentially
|
||||
|
||||
Bloom filter
|
||||
A technique for developing an effective and proactive password checker
|
||||
- It is based on rejecting words on a list that has been implemented on a number of systems
|
||||
|
||||
Token based Authentication
|
||||
Objects that a user posses for the purpose of user authentication are called tokens
|
||||
- Memory Cards can store but not process data
|
||||
- For authentication a user provides both the memory card and some form of password or PIN
|
||||
- A typical example is an ATM, which uses a card in addition for a PIN for access to your money
|
||||
Potential Drawbacks
|
||||
- Requires reader
|
||||
- Token loss
|
||||
- User dissatisfaction
|
||||
|
||||
Smart Cards
|
||||
Physical Characteristics:
|
||||
- Has an embedded micro pressor. A smart token that looks like a card is called a smart card
|
||||
User Interface:
|
||||
- Manual interface includes a keypad and display for human/token interaction
|
||||
Electronic Interface:
|
||||
- Contact
|
||||
- A smart card that needs to be inserted, and data transfer is done over physical contact points
|
||||
- Contactless
|
||||
- A contactless card only requires a close proximity to a reader. Both the reader and the card have an antenna and the two communicate using radio frequencies.
|
||||
- Most contactless cards also derive power from these signals
|
||||
- NFC is a common example
|
||||
|
||||
Authentication protocol
|
||||
The purpose of a smart token is to provide authentication
|
||||
|
||||
Static:
|
||||
With a static protocol, the user authenticates himself with the token and then the token authenticates with the computer. The second part is similar to the operation of a memory token
|
||||
|
||||
Dynamic password generator:
|
||||
In this case the token generates a password periodically. The password is entered into the computer either manually or automatically. The computer needs to synchronized with the token for this method to work, as the computer needs to know the correct password for the given time
|
||||
|
||||
Challenge-response:
|
||||
In this case the computer system generates a challenge …
|
||||
|
||||
|
||||
Electronic Identity Cards - Digital applications of identity cards
|
||||
|
||||
Lecture Topic: Passwords
|
||||
|
||||
Password File Access Control:
|
||||
One way to thwart a password attack is to deny the attacker access to the password file
|
||||
|
||||
Shadow password?
|
||||
|
||||
There are four techniques to attempt make users select a secure password:
|
||||
- User Education (Can be ignored)
|
||||
- Computer Generated Passwords (Users are unable to remember)
|
||||
- Reactive password checking (Resource intensity issues)
|
||||
- The system runs its own password cracker in the background and finds guessable passwords
|
||||
- Any vulnerable passwords remain vulnerable until the checker checks it
|
||||
- Complex Password Policy (Proactive password checker - Promising approach)
|
||||
- Password must be at least 16 characters (basic16)
|
||||
- Must have 8 characters including an uppercase and lowercase, a digit and may not contain a dictionary word (comprehensive8)
|
||||
|
||||
Another possible procedure is to simply compile a large dictionary of bad passwords, and when the user selects a password, it makes sure it's not in the list
|
||||
|
||||
But there are problems with this approach
|
||||
- Space: The dictionary must be very large to be effective
|
||||
- Time: The time required to search a large dictionary may itself be large. If the checker also checks permutations the time cost increases exponentially
|
||||
|
||||
Bloom filter
|
||||
A technique for developing an effective and proactive password checker
|
||||
- It is based on rejecting words on a list that has been implemented on a number of systems
|
||||
|
||||
Token based Authentication
|
||||
Objects that a user posses for the purpose of user authentication are called tokens
|
||||
- Memory Cards can store but not process data
|
||||
- For authentication a user provides both the memory card and some form of password or PIN
|
||||
- A typical example is an ATM, which uses a card in addition for a PIN for access to your money
|
||||
Potential Drawbacks
|
||||
- Requires reader
|
||||
- Token loss
|
||||
- User dissatisfaction
|
||||
|
||||
Smart Cards
|
||||
Physical Characteristics:
|
||||
- Has an embedded micro pressor. A smart token that looks like a card is called a smart card
|
||||
User Interface:
|
||||
- Manual interface includes a keypad and display for human/token interaction
|
||||
Electronic Interface:
|
||||
- Contact
|
||||
- A smart card that needs to be inserted, and data transfer is done over physical contact points
|
||||
- Contactless
|
||||
- A contactless card only requires a close proximity to a reader. Both the reader and the card have an antenna and the two communicate using radio frequencies.
|
||||
- Most contactless cards also derive power from these signals
|
||||
- NFC is a common example
|
||||
|
||||
Authentication protocol
|
||||
The purpose of a smart token is to provide authentication
|
||||
|
||||
Static:
|
||||
With a static protocol, the user authenticates himself with the token and then the token authenticates with the computer. The second part is similar to the operation of a memory token
|
||||
|
||||
Dynamic password generator:
|
||||
In this case the token generates a password periodically. The password is entered into the computer either manually or automatically. The computer needs to synchronized with the token for this method to work, as the computer needs to know the correct password for the given time
|
||||
|
||||
Challenge-response:
|
||||
In this case the computer system generates a challenge …
|
||||
|
||||
|
||||
Electronic Identity Cards - Digital applications of identity cards
|
||||
|
||||
Biometric Authentication: Covered next class
|
@ -1,48 +1,48 @@
|
||||
Lecture Topic:
|
||||
Security & Cryptographic Tools
|
||||
|
||||
# Security
|
||||
Prevention: Ideally, no attack can be performed. The use of encryption, prevent unauthorised access, to prevent the loss of confidentiality of the system
|
||||
|
||||
Detection: If we cannot prevent, we should at least detect them. The use of intrusion detection systems, like firewalls, to log unauthorised access to system is important. An example of this would be denial of service detection so we can fall to a more available system
|
||||
|
||||
Something 1
|
||||
|
||||
Something 2
|
||||
|
||||
Assurance and Evaluation
|
||||
|
||||
Assurance is the degree of confidence that a system meets the needs of the system being protected, like if the design meets the requirements and the implementation meets the specifications of the design.
|
||||
|
||||
Evaluation is the examination of the security system, either through testing (pen testing) by internal teams or external teams, or analysis through of use of mathematical methods. A pillar of this area of work is the use of standard evaluation criteria that can be applied to any security system
|
||||
|
||||
# Cryptographic Tools
|
||||
Recap: Information is the most valuable business resource. If this data is private or confidential, we must protect it. It needs to be protected while in motion and at rest
|
||||
|
||||
## Symmetric Encryption
|
||||
Conventional single key encryption example:
|
||||
Plaintext input is fed into an algorithm (for example DES) and encrypted with a single key. The output is then transferred. On the other side the same key is used to decrypt the data back to the same input text.
|
||||
|
||||
The five ingredients of symmetric encryption:
|
||||
- Plaintext: The input
|
||||
- Encryption algorithm: It performs substitutions and transformations to the plaintext
|
||||
- Secret key: It determines what the encryption algorithm does to the plaintext
|
||||
- Cipher text: This is the scrambled (meaningless) message that the algorithm outputs based on the secret key
|
||||
- Decryption algorithm: This is the encryption algorithm run in reverse. It requires the secret key as an input, as well as the plaintext. It extracts the original plaintext from the cipher text
|
||||
Strong Symmetric Encryption:
|
||||
- Assume the opponent knows the encryption algorithm, without knowing the key
|
||||
- The target should not be able toe get the plaintext or the secret key, even if a number of cipher texts are known by the opponent
|
||||
|
||||
Approaches to attacking symmetric encryption
|
||||
- Cryptanalysis: Tries to analyze the algorithm, with maybe some guesses about what the plaintext contains, and maybe some sample pairs of plaintext-ciphertext pairs. The attacker tried to deduce the original plaintext or secret key used.
|
||||
- Brute force: Try every possible key until something that makes sense is obtained. On average, half the number of total keys need to be tried in order to achieve success.
|
||||
## Cryptographic Systems Classification:
|
||||
The types of operations used by algorithms:
|
||||
- Substitution
|
||||
- Transposition
|
||||
An simple an unsecure example would be a Caesar cipher, which uses solely transposition and has basically no key. An example of the key for a Caesar cipher would be 13, for ROT13, an application of the Caesar cipher
|
||||
|
||||
The number of keys used to encryption
|
||||
- Symmetric, single-key, secret-key, conventional encryption
|
||||
- Asymmetric, two-key, public-key encryption
|
||||
|
||||
Lecture Topic:
|
||||
Security & Cryptographic Tools
|
||||
|
||||
# Security
|
||||
Prevention: Ideally, no attack can be performed. The use of encryption, prevent unauthorised access, to prevent the loss of confidentiality of the system
|
||||
|
||||
Detection: If we cannot prevent, we should at least detect them. The use of intrusion detection systems, like firewalls, to log unauthorised access to system is important. An example of this would be denial of service detection so we can fall to a more available system
|
||||
|
||||
Something 1
|
||||
|
||||
Something 2
|
||||
|
||||
Assurance and Evaluation
|
||||
|
||||
Assurance is the degree of confidence that a system meets the needs of the system being protected, like if the design meets the requirements and the implementation meets the specifications of the design.
|
||||
|
||||
Evaluation is the examination of the security system, either through testing (pen testing) by internal teams or external teams, or analysis through of use of mathematical methods. A pillar of this area of work is the use of standard evaluation criteria that can be applied to any security system
|
||||
|
||||
# Cryptographic Tools
|
||||
Recap: Information is the most valuable business resource. If this data is private or confidential, we must protect it. It needs to be protected while in motion and at rest
|
||||
|
||||
## Symmetric Encryption
|
||||
Conventional single key encryption example:
|
||||
Plaintext input is fed into an algorithm (for example DES) and encrypted with a single key. The output is then transferred. On the other side the same key is used to decrypt the data back to the same input text.
|
||||
|
||||
The five ingredients of symmetric encryption:
|
||||
- Plaintext: The input
|
||||
- Encryption algorithm: It performs substitutions and transformations to the plaintext
|
||||
- Secret key: It determines what the encryption algorithm does to the plaintext
|
||||
- Cipher text: This is the scrambled (meaningless) message that the algorithm outputs based on the secret key
|
||||
- Decryption algorithm: This is the encryption algorithm run in reverse. It requires the secret key as an input, as well as the plaintext. It extracts the original plaintext from the cipher text
|
||||
Strong Symmetric Encryption:
|
||||
- Assume the opponent knows the encryption algorithm, without knowing the key
|
||||
- The target should not be able toe get the plaintext or the secret key, even if a number of cipher texts are known by the opponent
|
||||
|
||||
Approaches to attacking symmetric encryption
|
||||
- Cryptanalysis: Tries to analyze the algorithm, with maybe some guesses about what the plaintext contains, and maybe some sample pairs of plaintext-ciphertext pairs. The attacker tried to deduce the original plaintext or secret key used.
|
||||
- Brute force: Try every possible key until something that makes sense is obtained. On average, half the number of total keys need to be tried in order to achieve success.
|
||||
## Cryptographic Systems Classification:
|
||||
The types of operations used by algorithms:
|
||||
- Substitution
|
||||
- Transposition
|
||||
An simple an unsecure example would be a Caesar cipher, which uses solely transposition and has basically no key. An example of the key for a Caesar cipher would be 13, for ROT13, an application of the Caesar cipher
|
||||
|
||||
The number of keys used to encryption
|
||||
- Symmetric, single-key, secret-key, conventional encryption
|
||||
- Asymmetric, two-key, public-key encryption
|
||||
|
||||
|
@ -1,59 +1,59 @@
|
||||
Lecture Topic:
|
||||
|
||||
Symmetric Block Encryption Algorithms:
|
||||
A block cipher processes the plaintext into in fixed sized blocks and produces a ciphertext of equal size for each plaintext block, the algorithm process longer plaintexts amounts as a series of fixed sized blocks
|
||||
- DES
|
||||
- AES
|
||||
- Triple DES
|
||||
|
||||
Comparison of three popular symmetric encryption algorithms
|
||||
|
||||
| Size in Bits | DES | Triple DES | AES |
|
||||
| --------------------- | --- | ---------- | ------------- |
|
||||
| Plaintext Block Size | 64 | 64 | 128 |
|
||||
| Ciphertext Block Size | 64 | 54 | 128 |
|
||||
| Key size | 56 | 112 or 168 | 128, 192, 256 |
|
||||
|
||||
Average Time for Exhaustive Key Search
|
||||
|
||||
| Key Size (bits) | Cipher | Number of Alternative Keys | Time Required at 10^9 decryptions/us | Time Required at 10^13 decyption/us |
|
||||
| --------------- | ---------- | -------------------------- | ------------------------------------ | ----------------------------------- |
|
||||
| 56 | DES | 2^56 | 2^55us = 1.125 years | 1 hour |
|
||||
| 128 | AES | 2^128 | 2^127us = 5.3x10^21 years | 5.3^10^17 years |
|
||||
| 168 | Triple DES | 2^168 | 2^127us | 5.3x10^17 years |
|
||||
| 192 | AES | | | |
|
||||
| 256 | AES | | | |
|
||||
|
||||
Practical Security issues
|
||||
How do you encrypt a unit of data larger than a single 64 bit or 128 bit block?
|
||||
Larger data must be broken down into a series of fixed length blocks
|
||||
|
||||
Problem: You use the same key for every single block
|
||||
|
||||
Stream Cipher:
|
||||
A stream cipher processes the input elements continuously, producing output one element at a time, as it goes along. It goes by bit, or by byte, not by block
|
||||
|
||||
A pseudorandom stream is one that is unpredictable without knowledge of the input key. The output of the generator called a keystream, is combined one byte at a time with the plaintext stream using the bitwise exclusive or operator (XOR)
|
||||
|
||||
What is Message (Data) Authentication?
|
||||
Encryption protects against passive attacks (eavesdropping)
|
||||
A different requirement is to protect against active attack (falsification of data or transactions). Protection against this is Message or Data Authentication
|
||||
|
||||
A message, file, document or other data is said to be authentic, when it is genuine and came from its alleged source. We may also with to verify a message's timeliness (if it has not been delayed or replayed) and sequence relative to other message flowing between the two parties
|
||||
|
||||
Authentication using symmetric encryption?
|
||||
Perform authentication by using symmetric encryption. If we assume only the sender and receiver share a key, then only the genuine sender would be able to encrypt a message successfully or the other participant, provided the receiver can recognize a valid message
|
||||
|
||||
If the message includes an error detection code and a sequence number the receiver is assured that no alterations have been made and the sequence is proper. If the message includes a timestamp, the receiver is assured that the message has not been delayed beyond that normally expected for network transit
|
||||
|
||||
But note! Symmetric encryption alone cannot guarantee that data is authenticated
|
||||
|
||||
Message Authentication without message encryption:
|
||||
An exchange in which one side has a heavy load and can't afford to decrypt all incoming messages, authentication is carried out on a selective basis, with messages being chosen at random for checking.
|
||||
|
||||
Message Authentication Code:
|
||||
The use of a secret key to generate a small block of data, known as a message authentication code (MAC) that is appended to the message. This verifies that the message has not been modified if the MAC value can be verified.
|
||||
|
||||
The MAC is generated by using a secret key in combination with the rest of the message. This verifies that the message is authentic, even if it is not encrypted, as only the sender and receiver could generate a valid MAC.
|
||||
|
||||
Lecture Topic:
|
||||
|
||||
Symmetric Block Encryption Algorithms:
|
||||
A block cipher processes the plaintext into in fixed sized blocks and produces a ciphertext of equal size for each plaintext block, the algorithm process longer plaintexts amounts as a series of fixed sized blocks
|
||||
- DES
|
||||
- AES
|
||||
- Triple DES
|
||||
|
||||
Comparison of three popular symmetric encryption algorithms
|
||||
|
||||
| Size in Bits | DES | Triple DES | AES |
|
||||
| --------------------- | --- | ---------- | ------------- |
|
||||
| Plaintext Block Size | 64 | 64 | 128 |
|
||||
| Ciphertext Block Size | 64 | 54 | 128 |
|
||||
| Key size | 56 | 112 or 168 | 128, 192, 256 |
|
||||
|
||||
Average Time for Exhaustive Key Search
|
||||
|
||||
| Key Size (bits) | Cipher | Number of Alternative Keys | Time Required at 10^9 decryptions/us | Time Required at 10^13 decyption/us |
|
||||
| --------------- | ---------- | -------------------------- | ------------------------------------ | ----------------------------------- |
|
||||
| 56 | DES | 2^56 | 2^55us = 1.125 years | 1 hour |
|
||||
| 128 | AES | 2^128 | 2^127us = 5.3x10^21 years | 5.3^10^17 years |
|
||||
| 168 | Triple DES | 2^168 | 2^127us | 5.3x10^17 years |
|
||||
| 192 | AES | | | |
|
||||
| 256 | AES | | | |
|
||||
|
||||
Practical Security issues
|
||||
How do you encrypt a unit of data larger than a single 64 bit or 128 bit block?
|
||||
Larger data must be broken down into a series of fixed length blocks
|
||||
|
||||
Problem: You use the same key for every single block
|
||||
|
||||
Stream Cipher:
|
||||
A stream cipher processes the input elements continuously, producing output one element at a time, as it goes along. It goes by bit, or by byte, not by block
|
||||
|
||||
A pseudorandom stream is one that is unpredictable without knowledge of the input key. The output of the generator called a keystream, is combined one byte at a time with the plaintext stream using the bitwise exclusive or operator (XOR)
|
||||
|
||||
What is Message (Data) Authentication?
|
||||
Encryption protects against passive attacks (eavesdropping)
|
||||
A different requirement is to protect against active attack (falsification of data or transactions). Protection against this is Message or Data Authentication
|
||||
|
||||
A message, file, document or other data is said to be authentic, when it is genuine and came from its alleged source. We may also with to verify a message's timeliness (if it has not been delayed or replayed) and sequence relative to other message flowing between the two parties
|
||||
|
||||
Authentication using symmetric encryption?
|
||||
Perform authentication by using symmetric encryption. If we assume only the sender and receiver share a key, then only the genuine sender would be able to encrypt a message successfully or the other participant, provided the receiver can recognize a valid message
|
||||
|
||||
If the message includes an error detection code and a sequence number the receiver is assured that no alterations have been made and the sequence is proper. If the message includes a timestamp, the receiver is assured that the message has not been delayed beyond that normally expected for network transit
|
||||
|
||||
But note! Symmetric encryption alone cannot guarantee that data is authenticated
|
||||
|
||||
Message Authentication without message encryption:
|
||||
An exchange in which one side has a heavy load and can't afford to decrypt all incoming messages, authentication is carried out on a selective basis, with messages being chosen at random for checking.
|
||||
|
||||
Message Authentication Code:
|
||||
The use of a secret key to generate a small block of data, known as a message authentication code (MAC) that is appended to the message. This verifies that the message has not been modified if the MAC value can be verified.
|
||||
|
||||
The MAC is generated by using a secret key in combination with the rest of the message. This verifies that the message is authentic, even if it is not encrypted, as only the sender and receiver could generate a valid MAC.
|
||||
|
||||
The code can also be called a message integrity code instead of a MAC
|
@ -1,41 +1,41 @@
|
||||
Lecture Topic:
|
||||
|
||||
## One way hash function:
|
||||
An alternative to the message authentication is the one way hash function.
|
||||
As with MAC, a hash function accepts a variable size message as input and produces a fixed size message digest as output (eg 1024 bits). Unlike a MAC ta hash function does not take a secret key as input. The message is padded out toe and integer multiple of some fixed length. The padding includes the value of the length of the original message in bits
|
||||
|
||||
Common one way hash functions:
|
||||
- MD5
|
||||
- SHA
|
||||
|
||||
Secure Hash Functions:
|
||||
Important to note in addition to message authentication, but also digital signatures produce a fingerprint
|
||||
|
||||
Requirements:
|
||||
1. H can be applied to a block of data of any size
|
||||
2. H produces a fixed length output
|
||||
3. H(x) is relatively easy to compute for any given x
|
||||
4. For any given code h, it is computationally infeasible to find x such that H(x) = h
|
||||
(Property: one way, or primage resistant)
|
||||
5. For any given block x, it is computationally infeasible to find y = x with H(y) = H(x)
|
||||
(Property: second preimage resistant)
|
||||
6. It is computationally infeasible to find any pair (x, y) such that H(x) = H(y)
|
||||
(Property: collision resistance)
|
||||
|
||||
## Security of Hash functions
|
||||
Approaches to attacking a secure hash function
|
||||
- cryptanalysis: exploiting logical weaknesses in the algorithm
|
||||
- brute-force attacks:
|
||||
- the strength of a hash function attacks depends solely on the length of the hash code produces by the algorithm
|
||||
- preimage resistant: $2^n$ (level of effort)
|
||||
- collision resistance: $2^{n/2}$ due to birthday problem
|
||||
|
||||
Secure hash function algorithms:
|
||||
The most widely used hash function has been the Secure Hash Function (SHA)
|
||||
|
||||
Passwords:
|
||||
- a hash of a password is stored in the OS rather than the password itself
|
||||
- this ensures that the password is not retrievable by a hacker who gains access to the password file
|
||||
- when a user logs in the password value is hashed and compared to the hash value stored in the system
|
||||
Intrusion Detection
|
||||
Lecture Topic:
|
||||
|
||||
## One way hash function:
|
||||
An alternative to the message authentication is the one way hash function.
|
||||
As with MAC, a hash function accepts a variable size message as input and produces a fixed size message digest as output (eg 1024 bits). Unlike a MAC ta hash function does not take a secret key as input. The message is padded out toe and integer multiple of some fixed length. The padding includes the value of the length of the original message in bits
|
||||
|
||||
Common one way hash functions:
|
||||
- MD5
|
||||
- SHA
|
||||
|
||||
Secure Hash Functions:
|
||||
Important to note in addition to message authentication, but also digital signatures produce a fingerprint
|
||||
|
||||
Requirements:
|
||||
1. H can be applied to a block of data of any size
|
||||
2. H produces a fixed length output
|
||||
3. H(x) is relatively easy to compute for any given x
|
||||
4. For any given code h, it is computationally infeasible to find x such that H(x) = h
|
||||
(Property: one way, or primage resistant)
|
||||
5. For any given block x, it is computationally infeasible to find y = x with H(y) = H(x)
|
||||
(Property: second preimage resistant)
|
||||
6. It is computationally infeasible to find any pair (x, y) such that H(x) = H(y)
|
||||
(Property: collision resistance)
|
||||
|
||||
## Security of Hash functions
|
||||
Approaches to attacking a secure hash function
|
||||
- cryptanalysis: exploiting logical weaknesses in the algorithm
|
||||
- brute-force attacks:
|
||||
- the strength of a hash function attacks depends solely on the length of the hash code produces by the algorithm
|
||||
- preimage resistant: $2^n$ (level of effort)
|
||||
- collision resistance: $2^{n/2}$ due to birthday problem
|
||||
|
||||
Secure hash function algorithms:
|
||||
The most widely used hash function has been the Secure Hash Function (SHA)
|
||||
|
||||
Passwords:
|
||||
- a hash of a password is stored in the OS rather than the password itself
|
||||
- this ensures that the password is not retrievable by a hacker who gains access to the password file
|
||||
- when a user logs in the password value is hashed and compared to the hash value stored in the system
|
||||
Intrusion Detection
|
||||
- store the hash value for a file h(f)
|
@ -1,16 +1,16 @@
|
||||
Lecture Topic: Public Key Encryption
|
||||
Public Key Encryption, first proposed by Diffie and Hellman in 1976.
|
||||
|
||||
Asymmetric Encryption is when we use different keys for encrypting and decrypting text. It is slow and is used for encrypting keys, so you have to remember
|
||||
|
||||
One key: fast, large data
|
||||
Pair of keys: slow, small data
|
||||
|
||||
Requirements for public key cryptography
|
||||
It is computationally easy for party B to generate a pair
|
||||
It is computationally easy for a sender A knowing the public key and the message to be encrypted M to generate the corresponding cipher text:
|
||||
-
|
||||
-
|
||||
-
|
||||
|
||||
|
||||
Lecture Topic: Public Key Encryption
|
||||
Public Key Encryption, first proposed by Diffie and Hellman in 1976.
|
||||
|
||||
Asymmetric Encryption is when we use different keys for encrypting and decrypting text. It is slow and is used for encrypting keys, so you have to remember
|
||||
|
||||
One key: fast, large data
|
||||
Pair of keys: slow, small data
|
||||
|
||||
Requirements for public key cryptography
|
||||
It is computationally easy for party B to generate a pair
|
||||
It is computationally easy for a sender A knowing the public key and the message to be encrypted M to generate the corresponding cipher text:
|
||||
-
|
||||
-
|
||||
-
|
||||
|
||||
|
||||
|
@ -1,21 +1,21 @@
|
||||
Lecture Topic: Public Key Infrastructure
|
||||
|
||||
PKI protects information assets in several ways
|
||||
- Authentication (using digital certificates)
|
||||
- Integrity (content not changed)
|
||||
- Privacy (secure information)
|
||||
- Authorization (access control)
|
||||
- Nonrepudiation (can validate action)
|
||||
|
||||
The Diffie Hellman key exchange provides no authentication of the two communicating partners, so it is vulnerable to man in the middle attacks
|
||||
|
||||
Digital envelopes are an application of public key encryption which can be used to protect a symmetric key, which can be used to protect a message without needing to first arrange for sender and receiver to have the same secret key
|
||||
|
||||
Randomness
|
||||
Two criteria are used to valid a sequence of random numbers:
|
||||
- Uniform Distribution: The distribution of the numbers should be uniform, that is the frequency of occurrence of each of the number should be approximately the same
|
||||
- Independence: No one value in the sequence can be inferred from the others
|
||||
|
||||
Random vs Pseudorandom
|
||||
…
|
||||
|
||||
Lecture Topic: Public Key Infrastructure
|
||||
|
||||
PKI protects information assets in several ways
|
||||
- Authentication (using digital certificates)
|
||||
- Integrity (content not changed)
|
||||
- Privacy (secure information)
|
||||
- Authorization (access control)
|
||||
- Nonrepudiation (can validate action)
|
||||
|
||||
The Diffie Hellman key exchange provides no authentication of the two communicating partners, so it is vulnerable to man in the middle attacks
|
||||
|
||||
Digital envelopes are an application of public key encryption which can be used to protect a symmetric key, which can be used to protect a message without needing to first arrange for sender and receiver to have the same secret key
|
||||
|
||||
Randomness
|
||||
Two criteria are used to valid a sequence of random numbers:
|
||||
- Uniform Distribution: The distribution of the numbers should be uniform, that is the frequency of occurrence of each of the number should be approximately the same
|
||||
- Independence: No one value in the sequence can be inferred from the others
|
||||
|
||||
Random vs Pseudorandom
|
||||
…
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Lecture Topic: Round Roblin Scheduling
|
||||
Lecture Topic: Round Roblin Scheduling
|
||||
|
@ -1,70 +1,70 @@
|
||||
# Lecture Topic: Real Time CPU scheduling
|
||||
|
||||
**Material up to 5.27 on the slides will be on the midterm**
|
||||
|
||||
Multilevel Feedback Queue:
|
||||
A process can move between multiple queues
|
||||
Get from slides (?)
|
||||
|
||||
|
||||
Real Time CPU scheduling
|
||||
Can present challenges
|
||||
Soft real time systems: Critical real time tasks have the highest priortiy but there are no guarantees
|
||||
Hard real time systems: Tasks need to be scheduled first (?)
|
||||
|
||||
Event Latency: The amount of time that elapses from when an event occurs to when it is serviced
|
||||
Two types of latency's affect performance:
|
||||
- Interrupt latency
|
||||
- Dispatch Latency
|
||||
|
||||
Dispatch latency conflicts:
|
||||
- You need to preempt any processes running in kernel mode
|
||||
- Release by low priority processes of resource needed by high priority processes
|
||||
|
||||
Priority based scheduling:
|
||||
For real time scheduling, you need to support preemptive, priority based scheduling, but this only guarantees soft real time
|
||||
For hard real time, must also provide ability to meet deadlines:
|
||||
Processes have new characteristics, periodic ones require CPU at constant intervals:
|
||||
- has processing time t, deadline of d, and a period p
|
||||
- 0 < t < d < p
|
||||
- rate of period task is 1/p
|
||||
|
||||
|
||||
Rate monotonic Scheduling:
|
||||
A priority is assigned based on the inverse of its period.
|
||||
Shorter periods = higher priority
|
||||
longer periods = lower priority
|
||||
|
||||
Earliest deadline first:
|
||||
Priorities are assigned according to deadlines:
|
||||
The earlier the deadline, the higher the priority
|
||||
The later the deadline, the lower the priority
|
||||
|
||||
Algorithm Evaluation:
|
||||
(?)
|
||||
|
||||
|
||||
# **Midterm Review:**
|
||||
|
||||
Midterm is balanced:
|
||||
Applying tools relevant to concepts
|
||||
Answering theory questions
|
||||
About 60% of the grade is theory (no coding)
|
||||
50 minutes
|
||||
|
||||
Understanding the labs and stuff under misc. in d2l should be enough
|
||||
|
||||
Topics to review:
|
||||
Slides (Chapter 1 to Chapter 5, until rate monotonic scheduling)
|
||||
Lab 2 and Lab 3
|
||||
A1 and A2
|
||||
Content of the misc. useful stuff folder
|
||||
Scheduling, metrics
|
||||
Materials occurring multiple times in the lectures
|
||||
|
||||
How to answer if you don't know
|
||||
If you remember the book answer - use that
|
||||
answer in your own words if you are trying to explain a concept
|
||||
the book is the most reliable source
|
||||
|
||||
# Lecture Topic: Real Time CPU scheduling
|
||||
|
||||
**Material up to 5.27 on the slides will be on the midterm**
|
||||
|
||||
Multilevel Feedback Queue:
|
||||
A process can move between multiple queues
|
||||
Get from slides (?)
|
||||
|
||||
|
||||
Real Time CPU scheduling
|
||||
Can present challenges
|
||||
Soft real time systems: Critical real time tasks have the highest priortiy but there are no guarantees
|
||||
Hard real time systems: Tasks need to be scheduled first (?)
|
||||
|
||||
Event Latency: The amount of time that elapses from when an event occurs to when it is serviced
|
||||
Two types of latency's affect performance:
|
||||
- Interrupt latency
|
||||
- Dispatch Latency
|
||||
|
||||
Dispatch latency conflicts:
|
||||
- You need to preempt any processes running in kernel mode
|
||||
- Release by low priority processes of resource needed by high priority processes
|
||||
|
||||
Priority based scheduling:
|
||||
For real time scheduling, you need to support preemptive, priority based scheduling, but this only guarantees soft real time
|
||||
For hard real time, must also provide ability to meet deadlines:
|
||||
Processes have new characteristics, periodic ones require CPU at constant intervals:
|
||||
- has processing time t, deadline of d, and a period p
|
||||
- 0 < t < d < p
|
||||
- rate of period task is 1/p
|
||||
|
||||
|
||||
Rate monotonic Scheduling:
|
||||
A priority is assigned based on the inverse of its period.
|
||||
Shorter periods = higher priority
|
||||
longer periods = lower priority
|
||||
|
||||
Earliest deadline first:
|
||||
Priorities are assigned according to deadlines:
|
||||
The earlier the deadline, the higher the priority
|
||||
The later the deadline, the lower the priority
|
||||
|
||||
Algorithm Evaluation:
|
||||
(?)
|
||||
|
||||
|
||||
# **Midterm Review:**
|
||||
|
||||
Midterm is balanced:
|
||||
Applying tools relevant to concepts
|
||||
Answering theory questions
|
||||
About 60% of the grade is theory (no coding)
|
||||
50 minutes
|
||||
|
||||
Understanding the labs and stuff under misc. in d2l should be enough
|
||||
|
||||
Topics to review:
|
||||
Slides (Chapter 1 to Chapter 5, until rate monotonic scheduling)
|
||||
Lab 2 and Lab 3
|
||||
A1 and A2
|
||||
Content of the misc. useful stuff folder
|
||||
Scheduling, metrics
|
||||
Materials occurring multiple times in the lectures
|
||||
|
||||
How to answer if you don't know
|
||||
If you remember the book answer - use that
|
||||
answer in your own words if you are trying to explain a concept
|
||||
the book is the most reliable source
|
||||
|
||||
What would the output of the following function will probably be on the midterm
|
@ -1,13 +1,13 @@
|
||||
Lecture Topic: Producer Consumer
|
||||
|
||||
There is a problem with using a counter in a multithreaded queue, as the counter can be stored in the CPU's registers at the same time, and when saving that register with changes, with out of order execution, can lead to misleading counts.
|
||||
|
||||
Say a CPU loads a variable into a register and on two threads, one increments it, and the other decrements it, you can encounter a scenario where it saves the the variable as not the intended value. This is called a race condition.
|
||||
|
||||
You need some for of synchronization mechanism to ensure this operation occurs correctly
|
||||
|
||||
You may also need a synchronization mechanism for scenarios where only 1 thread reads and 1 thread writes. An example is an ATM, where a read reads a valid valance, and another separate transaction occurs, and in the time between the start and finalization of the purchase, there is now insufficient funds.
|
||||
|
||||
Critical Section Problem:
|
||||
|
||||
Lecture Topic: Producer Consumer
|
||||
|
||||
There is a problem with using a counter in a multithreaded queue, as the counter can be stored in the CPU's registers at the same time, and when saving that register with changes, with out of order execution, can lead to misleading counts.
|
||||
|
||||
Say a CPU loads a variable into a register and on two threads, one increments it, and the other decrements it, you can encounter a scenario where it saves the the variable as not the intended value. This is called a race condition.
|
||||
|
||||
You need some for of synchronization mechanism to ensure this operation occurs correctly
|
||||
|
||||
You may also need a synchronization mechanism for scenarios where only 1 thread reads and 1 thread writes. An example is an ATM, where a read reads a valid valance, and another separate transaction occurs, and in the time between the start and finalization of the purchase, there is now insufficient funds.
|
||||
|
||||
Critical Section Problem:
|
||||
|
||||
A typical example of a critical section problem that, in a loop, there is some critical section is reading shared memory.
|
@ -1,37 +1,37 @@
|
||||
Lecture Topic: Critical Section
|
||||
|
||||
A solution to the critical section problem has to
|
||||
- Ensure mutual exclusion
|
||||
- Progress: If 2 resources are needed to progress, the program needs to properly assign resources, and not perform no progress work, such as assigning threads only 1 resource to each thread? Pen and form problem from notes
|
||||
- Bounded waiting
|
||||
|
||||
|
||||
Discusses this algorithm
|
||||
https://en.wikipedia.org/wiki/Peterson%27s_algorithm
|
||||
|
||||
It is mentioned that the problem with this algorithm is that the initial implementation is only applicable to 2 threads
|
||||
|
||||
It also has problems with modern implementations that implement instruction or memory access reordering
|
||||
|
||||
Memory models
|
||||
- Strongly ordered: Changes are immediately visible to all other processors
|
||||
- Weakly ordered: Changes in memory are not immediately visible to all other processors
|
||||
|
||||
A memory barrier is a way to force a propagation of changes values in memory to all other processors
|
||||
|
||||
# Mutex Locks:
|
||||
Before a critical section, acquire a mutex lock, and then release it after
|
||||
|
||||
For this to be functional you need atomic operations on acquire and release
|
||||
|
||||
This also requires busy waiting, because it needs to poll for the lock. Thus it is called a spinlock
|
||||
|
||||
# Semaphore
|
||||
|
||||
It is accesses with the wait and signal functions, these atomic functions perform these things
|
||||
|
||||
- wait: It waits while the semaphore is less than or equal to 0, and after it decrements the semaphore.
|
||||
- signal: Simply increases the semaphore by 1
|
||||
A semaphore can be thought of as a mutex lock that allows execution to more than one thread at once. The initial semaphore value is the number of threads that are allowed concurrent execution.
|
||||
|
||||
Lecture Topic: Critical Section
|
||||
|
||||
A solution to the critical section problem has to
|
||||
- Ensure mutual exclusion
|
||||
- Progress: If 2 resources are needed to progress, the program needs to properly assign resources, and not perform no progress work, such as assigning threads only 1 resource to each thread? Pen and form problem from notes
|
||||
- Bounded waiting
|
||||
|
||||
|
||||
Discusses this algorithm
|
||||
https://en.wikipedia.org/wiki/Peterson%27s_algorithm
|
||||
|
||||
It is mentioned that the problem with this algorithm is that the initial implementation is only applicable to 2 threads
|
||||
|
||||
It also has problems with modern implementations that implement instruction or memory access reordering
|
||||
|
||||
Memory models
|
||||
- Strongly ordered: Changes are immediately visible to all other processors
|
||||
- Weakly ordered: Changes in memory are not immediately visible to all other processors
|
||||
|
||||
A memory barrier is a way to force a propagation of changes values in memory to all other processors
|
||||
|
||||
# Mutex Locks:
|
||||
Before a critical section, acquire a mutex lock, and then release it after
|
||||
|
||||
For this to be functional you need atomic operations on acquire and release
|
||||
|
||||
This also requires busy waiting, because it needs to poll for the lock. Thus it is called a spinlock
|
||||
|
||||
# Semaphore
|
||||
|
||||
It is accesses with the wait and signal functions, these atomic functions perform these things
|
||||
|
||||
- wait: It waits while the semaphore is less than or equal to 0, and after it decrements the semaphore.
|
||||
- signal: Simply increases the semaphore by 1
|
||||
A semaphore can be thought of as a mutex lock that allows execution to more than one thread at once. The initial semaphore value is the number of threads that are allowed concurrent execution.
|
||||
|
||||
Semaphores can be also used to solve synchronization problems, not just the critical section problem
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: Synchronization
|
||||
|
||||
Lecture Topic: Synchronization
|
||||
|
||||
Look at slides later, was about posix and waiting for variables to change for synconization
|
@ -1,46 +1,46 @@
|
||||
Lecture Topic: Producer Consumer & Reader Writer Problem
|
||||
|
||||
[Lecture 20](https://lms.unb.ca/d2l/le/content/231539/viewContent/2623161/View)
|
||||
|
||||
If you were to use two semaphores and a mutex you can have multiple producers and multiple consumers.
|
||||
|
||||
|
||||
Producer
|
||||
```c
|
||||
while(true) {
|
||||
// produce am item
|
||||
wait(empty)
|
||||
wait(mutex)
|
||||
buffer[index] = item
|
||||
index++
|
||||
signal(mutex)
|
||||
signal(full)
|
||||
}
|
||||
```
|
||||
|
||||
Consumer
|
||||
```c
|
||||
while(true) {
|
||||
// consume an item
|
||||
wait(empty)
|
||||
wait(mutex)
|
||||
item = buffer[index]
|
||||
index--
|
||||
signal(mutex)
|
||||
signal(full)
|
||||
}
|
||||
```
|
||||
|
||||
[Slides Chapter 7](https://lms.unb.ca/d2l/le/content/231539/viewContent/2622059/View)
|
||||
|
||||
In the reader writer problem, you can encounter the "First reader-writer problem", in which the writer process never writes. A "second reader-writer problem" in which when a writer is ready to write, no reader is available. These problems can sometimes be solved by kernel reader writer locks.
|
||||
|
||||
[Dining Philosopher problem](https://en.wikipedia.org/wiki/Dining_philosophers_problem)
|
||||
|
||||
|
||||
[Slides Chapter 8](https://lms.unb.ca/d2l/le/content/231539/viewContent/2623159/View)
|
||||
|
||||
Deadlock Characterization:
|
||||
|
||||
Deadlocks can occur if four conditions are true simultaneously
|
||||
Lecture Topic: Producer Consumer & Reader Writer Problem
|
||||
|
||||
[Lecture 20](https://lms.unb.ca/d2l/le/content/231539/viewContent/2623161/View)
|
||||
|
||||
If you were to use two semaphores and a mutex you can have multiple producers and multiple consumers.
|
||||
|
||||
|
||||
Producer
|
||||
```c
|
||||
while(true) {
|
||||
// produce am item
|
||||
wait(empty)
|
||||
wait(mutex)
|
||||
buffer[index] = item
|
||||
index++
|
||||
signal(mutex)
|
||||
signal(full)
|
||||
}
|
||||
```
|
||||
|
||||
Consumer
|
||||
```c
|
||||
while(true) {
|
||||
// consume an item
|
||||
wait(empty)
|
||||
wait(mutex)
|
||||
item = buffer[index]
|
||||
index--
|
||||
signal(mutex)
|
||||
signal(full)
|
||||
}
|
||||
```
|
||||
|
||||
[Slides Chapter 7](https://lms.unb.ca/d2l/le/content/231539/viewContent/2622059/View)
|
||||
|
||||
In the reader writer problem, you can encounter the "First reader-writer problem", in which the writer process never writes. A "second reader-writer problem" in which when a writer is ready to write, no reader is available. These problems can sometimes be solved by kernel reader writer locks.
|
||||
|
||||
[Dining Philosopher problem](https://en.wikipedia.org/wiki/Dining_philosophers_problem)
|
||||
|
||||
|
||||
[Slides Chapter 8](https://lms.unb.ca/d2l/le/content/231539/viewContent/2623159/View)
|
||||
|
||||
Deadlock Characterization:
|
||||
|
||||
Deadlocks can occur if four conditions are true simultaneously
|
||||
- Mutual exclusion: only one process can use a resource
|
@ -1,16 +1,16 @@
|
||||
Lecture Topic: Memory Management
|
||||
|
||||
# Midterm Review
|
||||
|
||||
1. When a syscall is performed.
|
||||
2. Difference is single core vs multiple core concurrency, and yes its possible for concurrency and parallel execution to occur at the same time
|
||||
3. It is not going to differ in output
|
||||
4. It's a visual answer
|
||||
5. Depends on 4
|
||||
|
||||
|
||||
|
||||
There are three forms of memory generally, Memory in the CPU, System Memory, and Block Devices. In the CPU you have registers and cache.
|
||||
|
||||
Cost increases as you go from Block devices to CPU memory, but speed also increases, so it is an important tradeoff to consider.
|
||||
|
||||
Lecture Topic: Memory Management
|
||||
|
||||
# Midterm Review
|
||||
|
||||
1. When a syscall is performed.
|
||||
2. Difference is single core vs multiple core concurrency, and yes its possible for concurrency and parallel execution to occur at the same time
|
||||
3. It is not going to differ in output
|
||||
4. It's a visual answer
|
||||
5. Depends on 4
|
||||
|
||||
|
||||
|
||||
There are three forms of memory generally, Memory in the CPU, System Memory, and Block Devices. In the CPU you have registers and cache.
|
||||
|
||||
Cost increases as you go from Block devices to CPU memory, but speed also increases, so it is an important tradeoff to consider.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
Lecture Topic: Multithreading
|
||||
Scheduling Algorithms:
|
||||
Preemptive and non-preemptive
|
||||
|
||||
Preemptive means that the process might be interuppted to improve responsiveness of the ssytem
|
||||
|
||||
Lecture Topic: Multithreading
|
||||
Scheduling Algorithms:
|
||||
Preemptive and non-preemptive
|
||||
|
||||
Preemptive means that the process might be interuppted to improve responsiveness of the ssytem
|
||||
|
||||
Non-preemptive means that processes are allowed to execute until I/O request or termination
|
@ -1,90 +1,90 @@
|
||||
Lecture Topic: Scheduling
|
||||
|
||||
Scheduling Criteria:
|
||||
- CPU Utilization
|
||||
- Throughput
|
||||
- Turnaround Time
|
||||
- Waiting Time: Time spent in ready queue
|
||||
- Response Time
|
||||
|
||||
Multiprocessing Scheduler Design Choices:
|
||||
- One Queue for all processes
|
||||
- A queue per process
|
||||
|
||||
CPU: Homogeneous or heterogenous
|
||||
|
||||
| CPU 0 | CPU 1 |
|
||||
| ----- | ----- |
|
||||
| Cache | Cache |
|
||||
| ISA | ISA |
|
||||
|
||||
Affinity:
|
||||
Soft - May be scheduled on multiple CPUs
|
||||
Hard - Has to be scheduled on a designated CPU
|
||||
|
||||
Load Balancing: Keeping jobs evenly distributed
|
||||
- Job pushing: Jobs may be pushed to another CPU
|
||||
- Job stealing: Unused CPU may steal jobs from the queue
|
||||
|
||||
CPU alternates between computation and input output
|
||||
|
||||
Load stalls minimization
|
||||
A load stall is when the CPU is idle when memory access is being performed
|
||||
|
||||
Instruction reordering
|
||||
The CPU may perform operations out of order to better align with CPU computation and input output cycles, to minimize load stalls
|
||||
|
||||
Hyper threading:
|
||||
|
||||
CPU bursts are most frequently short
|
||||
|
||||
There are different kinds of algorithms that solve a few kinds of problems:
|
||||
- First Come First Serve: When job arrives it immediately gets worked on
|
||||
- Tie Breaker: When two jobs arrive at the same time
|
||||
|
||||
So, P0 comes first, but since we have a tie between P1 and P2. In the first come first serve case:
|
||||
|
||||
| Process | Arrival | Duration | Wait Time | Response Time | Turnaround |
|
||||
| ------- | ------- | -------- | --------- | ------------- | ---------- |
|
||||
| P0 | 0 | 3 | 0 | 0 | 3 |
|
||||
| P1 | 1 | 20 | 2 | 2 | 22 |
|
||||
| P2 | 1 | 5 | 22 | 22 | 27 |
|
||||
|
||||
So the average wait time is
|
||||
(0 + 2 + 22)/3 = 8
|
||||
|
||||
If there are different arrival times:
|
||||
|
||||
| Process | Arrival | Duration | Wait | Turnaround |
|
||||
| ------- | ------- | -------- | ---- | ---------- |
|
||||
| P0 | 0 | 3 | 0 | 3 |
|
||||
| P1 | 2 | 20 | 6 | 26 |
|
||||
| P2 | 1 | 5 | 2 | 7 |
|
||||
|
||||
In this case the average wait time is
|
||||
(0 + 6 + 2)/3 = 2.666666...
|
||||
|
||||
Much better.
|
||||
We can reorder jobs to reduce the wait time for jobs
|
||||
|
||||
The turnaround time also improves (do the calculation in your head dummy)
|
||||
|
||||
The throughput remains the same however
|
||||
|
||||
|
||||
Kinds of algorithms:
|
||||
Shortest Job first
|
||||
|
||||
| Process | Arrival | Duration | Wait Time | Response Time | Turnaround |
|
||||
| ------- | ------- | -------- | --------- | ------------- | ---------- |
|
||||
| P0 | 0 | 9 | | | |
|
||||
| P1 | 1 | 15 | | | |
|
||||
| P2 | 1 | 7 | | | |
|
||||
|
||||
The Gantt Chart
|
||||
|
||||
| | P0 | | P2 | | P3 | |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| 0 | | 9 | | 16 | | 31 |
|
||||
|
||||
Lecture Topic: Scheduling
|
||||
|
||||
Scheduling Criteria:
|
||||
- CPU Utilization
|
||||
- Throughput
|
||||
- Turnaround Time
|
||||
- Waiting Time: Time spent in ready queue
|
||||
- Response Time
|
||||
|
||||
Multiprocessing Scheduler Design Choices:
|
||||
- One Queue for all processes
|
||||
- A queue per process
|
||||
|
||||
CPU: Homogeneous or heterogenous
|
||||
|
||||
| CPU 0 | CPU 1 |
|
||||
| ----- | ----- |
|
||||
| Cache | Cache |
|
||||
| ISA | ISA |
|
||||
|
||||
Affinity:
|
||||
Soft - May be scheduled on multiple CPUs
|
||||
Hard - Has to be scheduled on a designated CPU
|
||||
|
||||
Load Balancing: Keeping jobs evenly distributed
|
||||
- Job pushing: Jobs may be pushed to another CPU
|
||||
- Job stealing: Unused CPU may steal jobs from the queue
|
||||
|
||||
CPU alternates between computation and input output
|
||||
|
||||
Load stalls minimization
|
||||
A load stall is when the CPU is idle when memory access is being performed
|
||||
|
||||
Instruction reordering
|
||||
The CPU may perform operations out of order to better align with CPU computation and input output cycles, to minimize load stalls
|
||||
|
||||
Hyper threading:
|
||||
|
||||
CPU bursts are most frequently short
|
||||
|
||||
There are different kinds of algorithms that solve a few kinds of problems:
|
||||
- First Come First Serve: When job arrives it immediately gets worked on
|
||||
- Tie Breaker: When two jobs arrive at the same time
|
||||
|
||||
So, P0 comes first, but since we have a tie between P1 and P2. In the first come first serve case:
|
||||
|
||||
| Process | Arrival | Duration | Wait Time | Response Time | Turnaround |
|
||||
| ------- | ------- | -------- | --------- | ------------- | ---------- |
|
||||
| P0 | 0 | 3 | 0 | 0 | 3 |
|
||||
| P1 | 1 | 20 | 2 | 2 | 22 |
|
||||
| P2 | 1 | 5 | 22 | 22 | 27 |
|
||||
|
||||
So the average wait time is
|
||||
(0 + 2 + 22)/3 = 8
|
||||
|
||||
If there are different arrival times:
|
||||
|
||||
| Process | Arrival | Duration | Wait | Turnaround |
|
||||
| ------- | ------- | -------- | ---- | ---------- |
|
||||
| P0 | 0 | 3 | 0 | 3 |
|
||||
| P1 | 2 | 20 | 6 | 26 |
|
||||
| P2 | 1 | 5 | 2 | 7 |
|
||||
|
||||
In this case the average wait time is
|
||||
(0 + 6 + 2)/3 = 2.666666...
|
||||
|
||||
Much better.
|
||||
We can reorder jobs to reduce the wait time for jobs
|
||||
|
||||
The turnaround time also improves (do the calculation in your head dummy)
|
||||
|
||||
The throughput remains the same however
|
||||
|
||||
|
||||
Kinds of algorithms:
|
||||
Shortest Job first
|
||||
|
||||
| Process | Arrival | Duration | Wait Time | Response Time | Turnaround |
|
||||
| ------- | ------- | -------- | --------- | ------------- | ---------- |
|
||||
| P0 | 0 | 9 | | | |
|
||||
| P1 | 1 | 15 | | | |
|
||||
| P2 | 1 | 7 | | | |
|
||||
|
||||
The Gantt Chart
|
||||
|
||||
| | P0 | | P2 | | P3 | |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| 0 | | 9 | | 16 | | 31 |
|
||||
|
||||
The problem with this kind of algorithm is determining the duration of jobs
|
@ -1,5 +1,5 @@
|
||||
Lecture Topic: Memory
|
||||
|
||||
There is a problem with 32 bit systems in which the max addressable ram is 4GB at a time.
|
||||
|
||||
Lecture Topic: Memory
|
||||
|
||||
There is a problem with 32 bit systems in which the max addressable ram is 4GB at a time.
|
||||
|
||||
This can be solved with the use of 64 bit systems, which allow a max addressable space of 2^64 memory locations, which is in the tens of thousands of petabytes.
|
@ -1 +1 @@
|
||||
Lecture Topic: Paging
|
||||
Lecture Topic: Paging
|
||||
|
@ -1 +1 @@
|
||||
Lecture Topic: Mass Storage
|
||||
Lecture Topic: Mass Storage
|
||||
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: Mass Storage
|
||||
|
||||
Shortest Seek Time First:
|
||||
Lecture Topic: Mass Storage
|
||||
|
||||
Shortest Seek Time First:
|
||||
|
@ -1,47 +1,47 @@
|
||||
Lecture Topic: Virtualization
|
||||
|
||||
| | Windows | Linux |
|
||||
| ----------------- | -------------- | --------------------- |
|
||||
| Executable Format | .exe .bat .ps1 | .sh ELF standard .out |
|
||||
| Library Format | .dll | ELF .o .so |
|
||||
|
||||
Executables tend to not be portable, on Linux usually due to differences in the flavor of Linux, and even on windows due to different platform architecture. Interoperability is not guaranteed.
|
||||
|
||||
The differences between simulation and emulation
|
||||
Simulation: getting the result
|
||||
Emulation: mimicking the behavior
|
||||
|
||||
Virtualization:
|
||||
Alternative to emulation and simulation: allows access to hardware by generating appropriate machine code
|
||||
|
||||
Why Virtualization?
|
||||
- Access to hardware
|
||||
- Safety, sandboxed, controlled environment
|
||||
- Multiple Users
|
||||
|
||||
Kinds of VMs
|
||||
|
||||
Type 1 virtual machine: manages the VMs directly, with no interaction with a base kernel
|
||||
Type 2 virtual machine: manages the VMs through interactions with the hardware with a main kernel
|
||||
|
||||
Process VM
|
||||
- One purpose functionality VM
|
||||
- Java VM as an example
|
||||
|
||||
OS VM
|
||||
- Virtual machine that emulates entire OS/machine functionality
|
||||
|
||||
Example VM stack
|
||||
- VirtualBox VM
|
||||
- VirtualBox VMM
|
||||
- Windows
|
||||
- Hyper-V
|
||||
- Hardware
|
||||
|
||||
| Virtualbox | Hyper-V |
|
||||
| ---------------- | -------------- |
|
||||
| OS VM, Type 2 VM | VMM, Type 1 VM |
|
||||
|
||||
| WSL | Docker |
|
||||
| --------------------------------------------- | -------------------------------- |
|
||||
| Uses Hyper-V, Reuses system calls if possible | Containers, minimal dependencies |
|
||||
Lecture Topic: Virtualization
|
||||
|
||||
| | Windows | Linux |
|
||||
| ----------------- | -------------- | --------------------- |
|
||||
| Executable Format | .exe .bat .ps1 | .sh ELF standard .out |
|
||||
| Library Format | .dll | ELF .o .so |
|
||||
|
||||
Executables tend to not be portable, on Linux usually due to differences in the flavor of Linux, and even on windows due to different platform architecture. Interoperability is not guaranteed.
|
||||
|
||||
The differences between simulation and emulation
|
||||
Simulation: getting the result
|
||||
Emulation: mimicking the behavior
|
||||
|
||||
Virtualization:
|
||||
Alternative to emulation and simulation: allows access to hardware by generating appropriate machine code
|
||||
|
||||
Why Virtualization?
|
||||
- Access to hardware
|
||||
- Safety, sandboxed, controlled environment
|
||||
- Multiple Users
|
||||
|
||||
Kinds of VMs
|
||||
|
||||
Type 1 virtual machine: manages the VMs directly, with no interaction with a base kernel
|
||||
Type 2 virtual machine: manages the VMs through interactions with the hardware with a main kernel
|
||||
|
||||
Process VM
|
||||
- One purpose functionality VM
|
||||
- Java VM as an example
|
||||
|
||||
OS VM
|
||||
- Virtual machine that emulates entire OS/machine functionality
|
||||
|
||||
Example VM stack
|
||||
- VirtualBox VM
|
||||
- VirtualBox VMM
|
||||
- Windows
|
||||
- Hyper-V
|
||||
- Hardware
|
||||
|
||||
| Virtualbox | Hyper-V |
|
||||
| ---------------- | -------------- |
|
||||
| OS VM, Type 2 VM | VMM, Type 1 VM |
|
||||
|
||||
| WSL | Docker |
|
||||
| --------------------------------------------- | -------------------------------- |
|
||||
| Uses Hyper-V, Reuses system calls if possible | Containers, minimal dependencies |
|
||||
|
@ -1,39 +1,39 @@
|
||||
Lecture Topic: Operating System Services
|
||||
|
||||
Operating systems provide an environment for execution of programs and services to programs and users
|
||||
|
||||
Some of these services are:
|
||||
- User Interface (CLI, GUI, Touch Screen)
|
||||
- Program Execution: Load the program into memory, run, and end execution either normally or abnormally (errors)
|
||||
- I/O operations: Files, I/O device
|
||||
- File system manipulation: Supports the reading, writing of files and directories, create and delete, search, list file metadata and permission management of files and directories
|
||||
|
||||
There are 2 ways to design CLI:
|
||||
- Executing the program by jumping directly into the program code
|
||||
- Creating a new process and then invoking the program in that new process
|
||||
|
||||
A few sets of services that are helpful are:
|
||||
- Communication between different processes on the same PC, and computers on the network, either by shared memory or message passing (packets)
|
||||
- Error handling/detection
|
||||
- Resource allocation: multiple users or jobs are running concurrently and resources need to be shared, like CPU cycles, memory, storage, IO devices
|
||||
- Logging
|
||||
- Protection and Security, protection being that all access to system resources are controlled and security is protecting the OS from outsiders, by using authentication
|
||||
|
||||
System Calls:
|
||||
Programming interface provided by OS, typically written in C or C++, usually accessed with a high level API, not using direct system calls. Common examples would be the Win32 API, the POSIX API for Linux, Unix, BSD, macOS, or the Java API for the JVM
|
||||
|
||||
Typically a number is associated with each system call, the System-call interface maintains a tabled indexed according to these numbers. The system call interface invokes the intended system call and the OS returns the status and any other return values. The caller need to know nothing about how the system call is implemented. They just need to obey the API and understand what the OS will return
|
||||
|
||||
Often more information is required than simply the identity of the system call. Three methods are generally used to pass information to the OS
|
||||
|
||||
- Simplest: Pass the parameters in registers. In some cases there are more parameters than registers
|
||||
- Parameters are stored in a block/table in memory and then pass the address of the block and pass it in as a parameter
|
||||
- Parameters and placed on the stack and then popped of the stack as used
|
||||
|
||||
Linkers and Loaders:
|
||||
When source code is compiled it is loaded into a physical memory location - relocatable object file. A linker combines these into a single binary executable file (also brings in libraries).
|
||||
- Program resides on secondary storage as binary executable.
|
||||
- Must be brought into memory by loader to be executed
|
||||
- Relocation assigns final addressed to program parts and adjusts code and data in program to match those address
|
||||
- Modern general purpose systems don't link libraries into executables, rather using dynamically linked libraries that are loaded as needed, shared by all that use the same version of the same library
|
||||
Lecture Topic: Operating System Services
|
||||
|
||||
Operating systems provide an environment for execution of programs and services to programs and users
|
||||
|
||||
Some of these services are:
|
||||
- User Interface (CLI, GUI, Touch Screen)
|
||||
- Program Execution: Load the program into memory, run, and end execution either normally or abnormally (errors)
|
||||
- I/O operations: Files, I/O device
|
||||
- File system manipulation: Supports the reading, writing of files and directories, create and delete, search, list file metadata and permission management of files and directories
|
||||
|
||||
There are 2 ways to design CLI:
|
||||
- Executing the program by jumping directly into the program code
|
||||
- Creating a new process and then invoking the program in that new process
|
||||
|
||||
A few sets of services that are helpful are:
|
||||
- Communication between different processes on the same PC, and computers on the network, either by shared memory or message passing (packets)
|
||||
- Error handling/detection
|
||||
- Resource allocation: multiple users or jobs are running concurrently and resources need to be shared, like CPU cycles, memory, storage, IO devices
|
||||
- Logging
|
||||
- Protection and Security, protection being that all access to system resources are controlled and security is protecting the OS from outsiders, by using authentication
|
||||
|
||||
System Calls:
|
||||
Programming interface provided by OS, typically written in C or C++, usually accessed with a high level API, not using direct system calls. Common examples would be the Win32 API, the POSIX API for Linux, Unix, BSD, macOS, or the Java API for the JVM
|
||||
|
||||
Typically a number is associated with each system call, the System-call interface maintains a tabled indexed according to these numbers. The system call interface invokes the intended system call and the OS returns the status and any other return values. The caller need to know nothing about how the system call is implemented. They just need to obey the API and understand what the OS will return
|
||||
|
||||
Often more information is required than simply the identity of the system call. Three methods are generally used to pass information to the OS
|
||||
|
||||
- Simplest: Pass the parameters in registers. In some cases there are more parameters than registers
|
||||
- Parameters are stored in a block/table in memory and then pass the address of the block and pass it in as a parameter
|
||||
- Parameters and placed on the stack and then popped of the stack as used
|
||||
|
||||
Linkers and Loaders:
|
||||
When source code is compiled it is loaded into a physical memory location - relocatable object file. A linker combines these into a single binary executable file (also brings in libraries).
|
||||
- Program resides on secondary storage as binary executable.
|
||||
- Must be brought into memory by loader to be executed
|
||||
- Relocation assigns final addressed to program parts and adjusts code and data in program to match those address
|
||||
- Modern general purpose systems don't link libraries into executables, rather using dynamically linked libraries that are loaded as needed, shared by all that use the same version of the same library
|
||||
- Object and executable files have standard formats so operating system knows how to load and start them
|
@ -1,48 +1,48 @@
|
||||
Lecture Topic: Processes
|
||||
Parts of memory
|
||||
- Stack
|
||||
- Heap
|
||||
- Program Counter
|
||||
- Registers
|
||||
- Arguments Vector
|
||||
- Environment PATH
|
||||
|
||||
| Stack Layout |
|
||||
| ------------------------------ |
|
||||
| argv, argc |
|
||||
| stack |
|
||||
| heap |
|
||||
| uninitialized global variables |
|
||||
| initialized global variables |
|
||||
| text |
|
||||
|
||||
Heap Memory, only the result of calls to malloc or calloc
|
||||
Stack Memory, anything else, even pointers or custom typedefs, unless it was specifically allocated
|
||||
|
||||
Possible Process States
|
||||
- New: First Stage, when the OS loads the program and before it is given CPU cycles
|
||||
- Ready: When the program is ready to execute and has been added to the OS queue for execution
|
||||
- Running: The program is executing instructions on the CPU
|
||||
- Waiting: The program is waiting for CPU cycles or is dormant, either due to timeout or waiting for IO or events
|
||||
- Terminated: The program memory is unallocated and revoked. Can be invoked by program itself or by parent (includes OS)
|
||||
|
||||
Process Control Block or Task Control Block
|
||||
- Process state
|
||||
- Program counter
|
||||
- Scheduling information
|
||||
- Memory info
|
||||
- Accounting info
|
||||
- IO status info (fds, etc)
|
||||
In Linux this is implemented with a structure called `task_struct`
|
||||
|
||||
It's organized in a Linked List, it's used for scheduling.
|
||||
|
||||
The process scheduler, selects which process get CPU attention, with the goal of improving response time, as well as multiprorgramming.
|
||||
|
||||
Maintained Queues
|
||||
- Waiting Queue
|
||||
- Ready Queue
|
||||
|
||||
Processes could be CPU bound or IO bound
|
||||
|
||||
Lecture Topic: Processes
|
||||
Parts of memory
|
||||
- Stack
|
||||
- Heap
|
||||
- Program Counter
|
||||
- Registers
|
||||
- Arguments Vector
|
||||
- Environment PATH
|
||||
|
||||
| Stack Layout |
|
||||
| ------------------------------ |
|
||||
| argv, argc |
|
||||
| stack |
|
||||
| heap |
|
||||
| uninitialized global variables |
|
||||
| initialized global variables |
|
||||
| text |
|
||||
|
||||
Heap Memory, only the result of calls to malloc or calloc
|
||||
Stack Memory, anything else, even pointers or custom typedefs, unless it was specifically allocated
|
||||
|
||||
Possible Process States
|
||||
- New: First Stage, when the OS loads the program and before it is given CPU cycles
|
||||
- Ready: When the program is ready to execute and has been added to the OS queue for execution
|
||||
- Running: The program is executing instructions on the CPU
|
||||
- Waiting: The program is waiting for CPU cycles or is dormant, either due to timeout or waiting for IO or events
|
||||
- Terminated: The program memory is unallocated and revoked. Can be invoked by program itself or by parent (includes OS)
|
||||
|
||||
Process Control Block or Task Control Block
|
||||
- Process state
|
||||
- Program counter
|
||||
- Scheduling information
|
||||
- Memory info
|
||||
- Accounting info
|
||||
- IO status info (fds, etc)
|
||||
In Linux this is implemented with a structure called `task_struct`
|
||||
|
||||
It's organized in a Linked List, it's used for scheduling.
|
||||
|
||||
The process scheduler, selects which process get CPU attention, with the goal of improving response time, as well as multiprorgramming.
|
||||
|
||||
Maintained Queues
|
||||
- Waiting Queue
|
||||
- Ready Queue
|
||||
|
||||
Processes could be CPU bound or IO bound
|
||||
|
||||
In general 100% utilization (CPU, IO) is not bad
|
@ -1,21 +1,21 @@
|
||||
Lecture Topic: Processes
|
||||
|
||||
Resource Sharing Options:
|
||||
Not Shared
|
||||
Shared
|
||||
Partially Shared
|
||||
|
||||
fork ()
|
||||
stack not shared
|
||||
heap not shared
|
||||
|
||||
Process creation options:
|
||||
Child duplicates the parent
|
||||
Child has a program loaded into it
|
||||
|
||||
examples:
|
||||
fork()
|
||||
exec()
|
||||
|
||||
|
||||
Lecture Topic: Processes
|
||||
|
||||
Resource Sharing Options:
|
||||
Not Shared
|
||||
Shared
|
||||
Partially Shared
|
||||
|
||||
fork ()
|
||||
stack not shared
|
||||
heap not shared
|
||||
|
||||
Process creation options:
|
||||
Child duplicates the parent
|
||||
Child has a program loaded into it
|
||||
|
||||
examples:
|
||||
fork()
|
||||
exec()
|
||||
|
||||
|
||||
Was a bit late today, but was mostly a demo of how forking worked in C
|
@ -1,3 +1,3 @@
|
||||
Topic: Consumer Producer
|
||||
|
||||
Topic: Consumer Producer
|
||||
|
||||
Forgor ADHD medication 💀
|
@ -1 +1 @@
|
||||
Lecture Topic: Forking and Threading
|
||||
Lecture Topic: Forking and Threading
|
||||
|
@ -1,49 +1,49 @@
|
||||
Strings and languages:
|
||||
- An alphabet is a finite set of symbols, such as {1,2,3} or {0,1}
|
||||
- A string is an alphabet $\sum$ is a finite sequence of symblols from $\sum$, for example 010010 and 10010101 are strings over the alphabet {0,1}
|
||||
- A languge is a set of strings
|
||||
- L1 = {00, 01, 10, 11}
|
||||
- L2 = {a^n | n is an integer non-negative}
|
||||
Notation: a to the power of n just means a repeated n times
|
||||
|
||||
Examples
|
||||
$L_8 = \{a^m b^n | m,n \in \mathbb{z}^{nonneg}\}$
|
||||
|
||||
So valid strings would be
|
||||
aaabbb, aaabbbb, ab, abb
|
||||
|
||||
$L_9 = \{a^n b^n | n \in \mathbb{z}^{nonneg}\}$
|
||||
|
||||
So valid strings would be
|
||||
aabb, ab, aaaabbbb, aaaaaabbbbbb
|
||||
|
||||
|
||||
$L_{11} = \{w \in \{a, b\}^* | \text{The number of "a"s is equal to the number of "b"s}\}$
|
||||
This would include everything that L9 includes, but allows for the alphabet can be out of order
|
||||
|
||||
You can also written this as
|
||||
$L_{11} = \{w \in \{a, b\}^* | n_a(w) = n_b(w)\}$
|
||||
|
||||
|
||||
You can extend the repetition notation (exponent) to include multiple symbols by wrapping it in parentheses
|
||||
|
||||
Example:
|
||||
$L_{12} = \{(ab)^n | n \in \mathbb{z}^{nonneg}\}$
|
||||
|
||||
This means we need to be careful as
|
||||
$L_{13} = \{ab^n | n \in \mathbb{z}^{nonneg}\}$
|
||||
is different, as L12 is asking for repetition of ab, while L13 is assigning a prefix of a and repetition of b
|
||||
|
||||
$L_{14} = \{a^i b^j c^k | i,j,k \in \mathbb{z}^{nonneg}, j = 2i + 3k\}$
|
||||
|
||||
So this means that for any number of "a"s and "c"s, the number of "b"s is predetermined if you have selected your "a"s and "c"s
|
||||
|
||||
Intro to functions and relations
|
||||
|
||||
Informally, a function (f) descrives an input output situation (A -> B)
|
||||
For every input element a in A, there is exactly one ouput element b in B
|
||||
|
||||
f maps a to b
|
||||
|
||||
A is the domain of f
|
||||
Strings and languages:
|
||||
- An alphabet is a finite set of symbols, such as {1,2,3} or {0,1}
|
||||
- A string is an alphabet $\sum$ is a finite sequence of symblols from $\sum$, for example 010010 and 10010101 are strings over the alphabet {0,1}
|
||||
- A languge is a set of strings
|
||||
- L1 = {00, 01, 10, 11}
|
||||
- L2 = {a^n | n is an integer non-negative}
|
||||
Notation: a to the power of n just means a repeated n times
|
||||
|
||||
Examples
|
||||
$L_8 = \{a^m b^n | m,n \in \mathbb{z}^{nonneg}\}$
|
||||
|
||||
So valid strings would be
|
||||
aaabbb, aaabbbb, ab, abb
|
||||
|
||||
$L_9 = \{a^n b^n | n \in \mathbb{z}^{nonneg}\}$
|
||||
|
||||
So valid strings would be
|
||||
aabb, ab, aaaabbbb, aaaaaabbbbbb
|
||||
|
||||
|
||||
$L_{11} = \{w \in \{a, b\}^* | \text{The number of "a"s is equal to the number of "b"s}\}$
|
||||
This would include everything that L9 includes, but allows for the alphabet can be out of order
|
||||
|
||||
You can also written this as
|
||||
$L_{11} = \{w \in \{a, b\}^* | n_a(w) = n_b(w)\}$
|
||||
|
||||
|
||||
You can extend the repetition notation (exponent) to include multiple symbols by wrapping it in parentheses
|
||||
|
||||
Example:
|
||||
$L_{12} = \{(ab)^n | n \in \mathbb{z}^{nonneg}\}$
|
||||
|
||||
This means we need to be careful as
|
||||
$L_{13} = \{ab^n | n \in \mathbb{z}^{nonneg}\}$
|
||||
is different, as L12 is asking for repetition of ab, while L13 is assigning a prefix of a and repetition of b
|
||||
|
||||
$L_{14} = \{a^i b^j c^k | i,j,k \in \mathbb{z}^{nonneg}, j = 2i + 3k\}$
|
||||
|
||||
So this means that for any number of "a"s and "c"s, the number of "b"s is predetermined if you have selected your "a"s and "c"s
|
||||
|
||||
Intro to functions and relations
|
||||
|
||||
Informally, a function (f) descrives an input output situation (A -> B)
|
||||
For every input element a in A, there is exactly one ouput element b in B
|
||||
|
||||
f maps a to b
|
||||
|
||||
A is the domain of f
|
||||
B is the co-domain of f
|
@ -1,52 +1,52 @@
|
||||
Lecture Topic: Functions
|
||||
|
||||
For every input element $a \in A$ there is exactly one output element $b \in B$
|
||||
|
||||
Jargon:
|
||||
- f maps a to b
|
||||
- the image of a under f is b
|
||||
|
||||
functions are one-to-one (or injective):
|
||||
$\forall x,y \in A, x \neq y \rightarrow f(x) \neq f(y)$
|
||||
or in other terms
|
||||
$\forall x,y \in A, x = y \rightarrow f(x) = f(y)$
|
||||
|
||||
Example:
|
||||
$f(x) = x^2$ is not one to one
|
||||
|
||||
Proof by counter example:
|
||||
$x = -1$ and $y = 1$ are two integers in the domain that $x=y$ but $f(-1)$ and $f(1)$ are both equal to 1, so it is not one to one
|
||||
|
||||
To prove a function is one to one, it is a little more tricky, and needs to be general, for example:
|
||||
|
||||
Let x and y be any arbitrary elements of the domain where f(x) = f(y)
|
||||
So it follows that x and y are equal (x = y)
|
||||
|
||||
Example for a real function: $g(x) = 3x - 11$
|
||||
Real Numbers
|
||||
Let x and y be any real number such that $g(x) = g(y)$. We will show that $x = y$
|
||||
Since we know that g(x) = g(y), it means that $3x - 11 = 3y - 11$
|
||||
Add 11 to both sides: $\therefore 3x = 3y$
|
||||
Divide both sides by 3: $\therefore x = y$
|
||||
|
||||
Important to note: The definition (domain and co-domain) can change if a function is one to one, for example the square function on all integers vs all positive integers
|
||||
|
||||
To prove that a function A -> B is onto:
|
||||
- Let be represent and arbitrary element in the co-domain B
|
||||
- We want to find an element a in the domain and show that f(a) = b
|
||||
|
||||
Example:
|
||||
Real Numbers, $f(x) = 5x + 2$ is onto
|
||||
|
||||
Proof: Let b be any arbitrary real number (we want to find a real number a and show that f(a) = b)
|
||||
|
||||
A through process might follow that, I want a value a such that f(a) = b, I want $5a + 2 = b$, then $5a = b - 2$, then $a = \frac{b - 2}{5}$
|
||||
|
||||
So, let $a = \frac{b - 2}{5}$ , which is a real number. Then plug this back into the function
|
||||
$f(a) = f(\frac{b - 2}{5}$) (Substitution)
|
||||
$= 5\frac{b-2}{5}+2$ (Definition of f)
|
||||
$= (b-2) +2)$ (Algebra)
|
||||
$=b$ (Algebra)
|
||||
|
||||
Beginning of proving a function is not onto:
|
||||
Lecture Topic: Functions
|
||||
|
||||
For every input element $a \in A$ there is exactly one output element $b \in B$
|
||||
|
||||
Jargon:
|
||||
- f maps a to b
|
||||
- the image of a under f is b
|
||||
|
||||
functions are one-to-one (or injective):
|
||||
$\forall x,y \in A, x \neq y \rightarrow f(x) \neq f(y)$
|
||||
or in other terms
|
||||
$\forall x,y \in A, x = y \rightarrow f(x) = f(y)$
|
||||
|
||||
Example:
|
||||
$f(x) = x^2$ is not one to one
|
||||
|
||||
Proof by counter example:
|
||||
$x = -1$ and $y = 1$ are two integers in the domain that $x=y$ but $f(-1)$ and $f(1)$ are both equal to 1, so it is not one to one
|
||||
|
||||
To prove a function is one to one, it is a little more tricky, and needs to be general, for example:
|
||||
|
||||
Let x and y be any arbitrary elements of the domain where f(x) = f(y)
|
||||
So it follows that x and y are equal (x = y)
|
||||
|
||||
Example for a real function: $g(x) = 3x - 11$
|
||||
Real Numbers
|
||||
Let x and y be any real number such that $g(x) = g(y)$. We will show that $x = y$
|
||||
Since we know that g(x) = g(y), it means that $3x - 11 = 3y - 11$
|
||||
Add 11 to both sides: $\therefore 3x = 3y$
|
||||
Divide both sides by 3: $\therefore x = y$
|
||||
|
||||
Important to note: The definition (domain and co-domain) can change if a function is one to one, for example the square function on all integers vs all positive integers
|
||||
|
||||
To prove that a function A -> B is onto:
|
||||
- Let be represent and arbitrary element in the co-domain B
|
||||
- We want to find an element a in the domain and show that f(a) = b
|
||||
|
||||
Example:
|
||||
Real Numbers, $f(x) = 5x + 2$ is onto
|
||||
|
||||
Proof: Let b be any arbitrary real number (we want to find a real number a and show that f(a) = b)
|
||||
|
||||
A through process might follow that, I want a value a such that f(a) = b, I want $5a + 2 = b$, then $5a = b - 2$, then $a = \frac{b - 2}{5}$
|
||||
|
||||
So, let $a = \frac{b - 2}{5}$ , which is a real number. Then plug this back into the function
|
||||
$f(a) = f(\frac{b - 2}{5}$) (Substitution)
|
||||
$= 5\frac{b-2}{5}+2$ (Definition of f)
|
||||
$= (b-2) +2)$ (Algebra)
|
||||
$=b$ (Algebra)
|
||||
|
||||
Beginning of proving a function is not onto:
|
||||
Find some specific co-domain element b and show that there is no domain element that could map to b
|
@ -1,61 +1,61 @@
|
||||
Lecture Topic: Functions & Relations
|
||||
|
||||
When a function is onto, it means that the entire co-domain of a function is the range of the function
|
||||
|
||||
Proving a function is not onto:
|
||||
|
||||
Just prove for any element b in the co-domain B and show that b cannot be equal to f(a) for any a in the domain.
|
||||
|
||||
Example: $g: \mathbb{R} \rightarrow \mathbb{R}, g(x) = x^2 + 10$ is not onto
|
||||
|
||||
Proof:
|
||||
For example, choose the element $-1$ from the co-domain $\mathbb{R}$
|
||||
Consider any domain element $a$
|
||||
The function will square $a$, and $a^2 \geq 0$ (because no squares are negative reals)
|
||||
Then $a^2 + 10 \geq 10$, so this means that $-1$ is not in the co-domain
|
||||
$\therefore$ The function is not onto
|
||||
|
||||
You can also use a proof by contradiction by saying that:
|
||||
$g(a) = -1$
|
||||
$\therefore a^2 + 10 = -1$
|
||||
$\therefore a^2 = -11$
|
||||
Squares of a real number cannot be negative, so the function is not onto
|
||||
|
||||
A function is not always numbers:
|
||||
|
||||
Example: Favourite UNB Course : S -> C
|
||||
Where S is all students and C is all courses
|
||||
|
||||
What would have to be true for this to be one to one or onto?:
|
||||
- One to one:
|
||||
- Onto:
|
||||
|
||||
# Relations:
|
||||
A binary relation R on two sets A and B is a subset of $A \times B$
|
||||
- e.g. S = all students, C = all students, s is any given student, c is any given course
|
||||
- Relation: HasTaken: for (s, c) s has taken c
|
||||
- Relation Aplus: for (s,c) s got A+ in c
|
||||
|
||||
A relation can be between the same set, for example the set of A = {John, Jane, Bill, Sue, Mary, Betty}, we can define a relation that is the relationship between who loves who $A \times A$
|
||||
- e.g. (John, Jane)
|
||||
|
||||
A binary relation $R \subseteq A \times A$ is also called an equivalence relation if the following conditions hold:
|
||||
- reflexive: $\forall a \in A, (a,a) \in R$
|
||||
- symmetric: $\forall a,b \in A, (a,b) \in R \rightarrow (b,a) \in R$
|
||||
- transitive: $\forall a,b,c \in A, [(a,b) \in R \wedge (b,c) \in R] \rightarrow (a,c) \in R$
|
||||
|
||||
Example:
|
||||
|
||||
$G = \{(x,y) | x \in \mathbb{R}, y \in \mathbb{R}, x > y\}$
|
||||
|
||||
Is G reflexive? (Is is true that every real number is relation to itself)
|
||||
No, because we can show that $(5,5) \notin \mathbb{R}$ because $5 \ngtr 5$
|
||||
|
||||
Is G symmetric? (Is it the case that whenever $(a,b) \in G, (b,a)$ will also be in G)
|
||||
No, for example $(10,3) \in G$ because $10 > 3$ but $(3, 10) \notin G$ because $3 \ngtr 10$
|
||||
|
||||
Is G transitive? (Is it true that whenever (a,b) and (b,c) are in G, (a,c) will also be in G)
|
||||
Yes, let a,b,c be any real numbers where $(a,b) \in G$ and $(b,c) \in G$
|
||||
Since $(a,b) \in G$, we know that $a > b$
|
||||
Since $(b,c) \in G$, we know that $b > c$
|
||||
Lecture Topic: Functions & Relations
|
||||
|
||||
When a function is onto, it means that the entire co-domain of a function is the range of the function
|
||||
|
||||
Proving a function is not onto:
|
||||
|
||||
Just prove for any element b in the co-domain B and show that b cannot be equal to f(a) for any a in the domain.
|
||||
|
||||
Example: $g: \mathbb{R} \rightarrow \mathbb{R}, g(x) = x^2 + 10$ is not onto
|
||||
|
||||
Proof:
|
||||
For example, choose the element $-1$ from the co-domain $\mathbb{R}$
|
||||
Consider any domain element $a$
|
||||
The function will square $a$, and $a^2 \geq 0$ (because no squares are negative reals)
|
||||
Then $a^2 + 10 \geq 10$, so this means that $-1$ is not in the co-domain
|
||||
$\therefore$ The function is not onto
|
||||
|
||||
You can also use a proof by contradiction by saying that:
|
||||
$g(a) = -1$
|
||||
$\therefore a^2 + 10 = -1$
|
||||
$\therefore a^2 = -11$
|
||||
Squares of a real number cannot be negative, so the function is not onto
|
||||
|
||||
A function is not always numbers:
|
||||
|
||||
Example: Favourite UNB Course : S -> C
|
||||
Where S is all students and C is all courses
|
||||
|
||||
What would have to be true for this to be one to one or onto?:
|
||||
- One to one:
|
||||
- Onto:
|
||||
|
||||
# Relations:
|
||||
A binary relation R on two sets A and B is a subset of $A \times B$
|
||||
- e.g. S = all students, C = all students, s is any given student, c is any given course
|
||||
- Relation: HasTaken: for (s, c) s has taken c
|
||||
- Relation Aplus: for (s,c) s got A+ in c
|
||||
|
||||
A relation can be between the same set, for example the set of A = {John, Jane, Bill, Sue, Mary, Betty}, we can define a relation that is the relationship between who loves who $A \times A$
|
||||
- e.g. (John, Jane)
|
||||
|
||||
A binary relation $R \subseteq A \times A$ is also called an equivalence relation if the following conditions hold:
|
||||
- reflexive: $\forall a \in A, (a,a) \in R$
|
||||
- symmetric: $\forall a,b \in A, (a,b) \in R \rightarrow (b,a) \in R$
|
||||
- transitive: $\forall a,b,c \in A, [(a,b) \in R \wedge (b,c) \in R] \rightarrow (a,c) \in R$
|
||||
|
||||
Example:
|
||||
|
||||
$G = \{(x,y) | x \in \mathbb{R}, y \in \mathbb{R}, x > y\}$
|
||||
|
||||
Is G reflexive? (Is is true that every real number is relation to itself)
|
||||
No, because we can show that $(5,5) \notin \mathbb{R}$ because $5 \ngtr 5$
|
||||
|
||||
Is G symmetric? (Is it the case that whenever $(a,b) \in G, (b,a)$ will also be in G)
|
||||
No, for example $(10,3) \in G$ because $10 > 3$ but $(3, 10) \notin G$ because $3 \ngtr 10$
|
||||
|
||||
Is G transitive? (Is it true that whenever (a,b) and (b,c) are in G, (a,c) will also be in G)
|
||||
Yes, let a,b,c be any real numbers where $(a,b) \in G$ and $(b,c) \in G$
|
||||
Since $(a,b) \in G$, we know that $a > b$
|
||||
Since $(b,c) \in G$, we know that $b > c$
|
||||
Then $a > b > c$, so that means that $a > c$, so also $(a,c) \in G$
|
@ -1,76 +1,76 @@
|
||||
Lecture Topic: Relation examples
|
||||
|
||||
# Relation Example 1
|
||||
$R = \{(i,j) | i \in \mathbb{Z}, j \in \mathbb{Z}, i-j =5n \text{ for some integer n}\}$
|
||||
e.g $(22,7) \in R$ because $22-7 = 5(3)$
|
||||
e.g $(7,22) \in R$ because $7-22 = -15 = 5(-3)$
|
||||
e.g $(22,9) \notin R$ because $22-9 = 13$, which is not a multiple of 5
|
||||
|
||||
Reflexive? Yes
|
||||
For every integer a, $a-a = 0 = 5(0)$
|
||||
Therefor $(a,a) \in R$ for every integer a
|
||||
|
||||
Symmetric? Yes
|
||||
Let a, b be any integer, such that (a,b) is in the relation (can we prove that (b,a) is in relation as well?)
|
||||
|
||||
Since (a,b) is in the relation, $a-b = 5n$, so, $b-a = -5(n) = 5(-n)$
|
||||
Note: $(b-a) = -(a-b)$
|
||||
|
||||
Transitive? Yes
|
||||
Let a,b,c be any integers such that $(a,b) \in R$ and $(b,c) \in R$
|
||||
Can we prove that $(a,c) \in R$ ?
|
||||
|
||||
Since $(a,b) \in R$, we know $a-b=5n$ for some $n \in \mathbb{Z}$
|
||||
Since $(b,c) \in R$, we know $b-c=5p$ for some $n \in \mathbb{Z}$
|
||||
|
||||
Now, $(a-c) = (a-b) + (b-c) = 5n + 5p = 5(np)$
|
||||
Therefore, $(a-c) \in R$
|
||||
Note: This is an integer because it is the sum of integers
|
||||
|
||||
# Relation Example 2
|
||||
$R = \{(i,j) | i \in \mathbb{R}, j \in \mathbb{R}, i + 2 > j\}$
|
||||
|
||||
Examples:
|
||||
- $(5,2) \in R$ because $(5+2) > 2$
|
||||
- $(3,4) \in R$ because $(3+2) > 4$
|
||||
- $(0,7) \notin R$ because $(0+2) \ngtr 7$
|
||||
|
||||
Reflexive? Yes
|
||||
Symmetric? No
|
||||
Transitive? No
|
||||
|
||||
Proof: We need to find real numbers where $a,b,c$ where $(a,b) \in R$ and $(b,c) \in R$ but $(a,c) \notin R$
|
||||
|
||||
For example, a = 1, b = 2, c = 3
|
||||
$(1,2) \in R$ because $1+2 > 2$
|
||||
$(2,3) \in R$ because $2+2 > 3$
|
||||
|
||||
But $(1,3) \notin R$ because $(1+2) \ngtr 3$
|
||||
$\therefore$ R is not transitive
|
||||
|
||||
# Equivalence relations
|
||||
Equivalence relations have all three of these properties
|
||||
Any equivalence relation R on a set A induces a partition of A
|
||||
- Splits A into equivalence classes
|
||||
- Each class contains elements that are related to themselves and to each other, but to nothing outside the class
|
||||
|
||||
So, for the above relation:
|
||||
$$R = \{(i,j) | i \in \mathbb{Z}, j \in \mathbb{Z}, i-j =5n \text{ for some integer n}\}$$
|
||||
This forms an equivalence relation
|
||||
|
||||
So for the set of all integers, this forms 5 equivalence classes:
|
||||
- $..., 0, 5, 10, ...$
|
||||
- $..., 1, 6, 11, ...$
|
||||
- $..., 2, 7, 12, ...$
|
||||
- $..., 3, 8, 13, ...$
|
||||
- $..., 4, 9, 14, ...$
|
||||
|
||||
## Example
|
||||
$A = \{-3, -2, -1, 0, 1, 2, 3\}$
|
||||
$R = \{(i,j) | i \in \mathbb{A}, j \in \mathbb{A}, i^2 = j^2\}$
|
||||
|
||||
So the equivalence classes induced by this relation:
|
||||
- -3, 3
|
||||
- -2, 2
|
||||
- -1, 1
|
||||
Lecture Topic: Relation examples
|
||||
|
||||
# Relation Example 1
|
||||
$R = \{(i,j) | i \in \mathbb{Z}, j \in \mathbb{Z}, i-j =5n \text{ for some integer n}\}$
|
||||
e.g $(22,7) \in R$ because $22-7 = 5(3)$
|
||||
e.g $(7,22) \in R$ because $7-22 = -15 = 5(-3)$
|
||||
e.g $(22,9) \notin R$ because $22-9 = 13$, which is not a multiple of 5
|
||||
|
||||
Reflexive? Yes
|
||||
For every integer a, $a-a = 0 = 5(0)$
|
||||
Therefor $(a,a) \in R$ for every integer a
|
||||
|
||||
Symmetric? Yes
|
||||
Let a, b be any integer, such that (a,b) is in the relation (can we prove that (b,a) is in relation as well?)
|
||||
|
||||
Since (a,b) is in the relation, $a-b = 5n$, so, $b-a = -5(n) = 5(-n)$
|
||||
Note: $(b-a) = -(a-b)$
|
||||
|
||||
Transitive? Yes
|
||||
Let a,b,c be any integers such that $(a,b) \in R$ and $(b,c) \in R$
|
||||
Can we prove that $(a,c) \in R$ ?
|
||||
|
||||
Since $(a,b) \in R$, we know $a-b=5n$ for some $n \in \mathbb{Z}$
|
||||
Since $(b,c) \in R$, we know $b-c=5p$ for some $n \in \mathbb{Z}$
|
||||
|
||||
Now, $(a-c) = (a-b) + (b-c) = 5n + 5p = 5(np)$
|
||||
Therefore, $(a-c) \in R$
|
||||
Note: This is an integer because it is the sum of integers
|
||||
|
||||
# Relation Example 2
|
||||
$R = \{(i,j) | i \in \mathbb{R}, j \in \mathbb{R}, i + 2 > j\}$
|
||||
|
||||
Examples:
|
||||
- $(5,2) \in R$ because $(5+2) > 2$
|
||||
- $(3,4) \in R$ because $(3+2) > 4$
|
||||
- $(0,7) \notin R$ because $(0+2) \ngtr 7$
|
||||
|
||||
Reflexive? Yes
|
||||
Symmetric? No
|
||||
Transitive? No
|
||||
|
||||
Proof: We need to find real numbers where $a,b,c$ where $(a,b) \in R$ and $(b,c) \in R$ but $(a,c) \notin R$
|
||||
|
||||
For example, a = 1, b = 2, c = 3
|
||||
$(1,2) \in R$ because $1+2 > 2$
|
||||
$(2,3) \in R$ because $2+2 > 3$
|
||||
|
||||
But $(1,3) \notin R$ because $(1+2) \ngtr 3$
|
||||
$\therefore$ R is not transitive
|
||||
|
||||
# Equivalence relations
|
||||
Equivalence relations have all three of these properties
|
||||
Any equivalence relation R on a set A induces a partition of A
|
||||
- Splits A into equivalence classes
|
||||
- Each class contains elements that are related to themselves and to each other, but to nothing outside the class
|
||||
|
||||
So, for the above relation:
|
||||
$$R = \{(i,j) | i \in \mathbb{Z}, j \in \mathbb{Z}, i-j =5n \text{ for some integer n}\}$$
|
||||
This forms an equivalence relation
|
||||
|
||||
So for the set of all integers, this forms 5 equivalence classes:
|
||||
- $..., 0, 5, 10, ...$
|
||||
- $..., 1, 6, 11, ...$
|
||||
- $..., 2, 7, 12, ...$
|
||||
- $..., 3, 8, 13, ...$
|
||||
- $..., 4, 9, 14, ...$
|
||||
|
||||
## Example
|
||||
$A = \{-3, -2, -1, 0, 1, 2, 3\}$
|
||||
$R = \{(i,j) | i \in \mathbb{A}, j \in \mathbb{A}, i^2 = j^2\}$
|
||||
|
||||
So the equivalence classes induced by this relation:
|
||||
- -3, 3
|
||||
- -2, 2
|
||||
- -1, 1
|
||||
- 0
|
@ -1,52 +1,52 @@
|
||||
Lecture Topic:
|
||||
|
||||
# Equivalence Classes
|
||||
You can represent equivalence classes by writing each one as a set:
|
||||
$$C_0 = \{..., -10, -5, 0, 5, 10, 15, ...\} \text{ or } \{5p | p \in \mathbb{Z}\}$$
|
||||
$$C_0 = \{..., -9, -4, 1, 6, 11, 16, ...\} \text{ or } \{5p + 1| p \in \mathbb{Z}\}$$
|
||||
$$\text{and so on...}$$
|
||||
# Graphs
|
||||
Definitions:
|
||||
- For each *vertex* v, the **degree** of v is the number of edges incident on v
|
||||
- A *path* is a **sequence** of vertices connected by edges
|
||||
- A *cycle* is a path that **starts and ends** at the same vertex
|
||||
- A *simple path* is a path that has **no repeated** vertices
|
||||
- A *connected graph* contains a path between **every pair** of vertices
|
||||
- A *disconnected graph* is the opposite (look at slides for real def)
|
||||
|
||||
# Regular Languages
|
||||
A class of languages that can be processed by simple computers called **finite automata**
|
||||
|
||||
## Simple Example of a finite automaton
|
||||
Vending machine/toll booth gate
|
||||
Requires 25 cents or more to be deposited (gives no change)
|
||||
|
||||
Takes as input, 5 cent, 10 cent, 25 cent coins
|
||||
Uses **states** to remember how much has been deposited so far
|
||||
|
||||
States:
|
||||
- q_0 : 0 cents deposited (START STATE)
|
||||
- q_5 : 5 cents
|
||||
- q_10 : 10 cents
|
||||
- q_15 : 15 cents
|
||||
- q_20 : 20 cents
|
||||
- q_25 : 25 cents (ACCEPT STATE)
|
||||
|
||||
We represent the input as a **string** of symbols.
|
||||
- n = nickel
|
||||
- d = dime
|
||||
- q = quarter
|
||||
Examples:
|
||||
- ddn
|
||||
- ndd
|
||||
- dnd
|
||||
- q
|
||||
Not accepted examples:
|
||||
- nd
|
||||
- d
|
||||
- $\epsilon$
|
||||
## State Diagram
|
||||
(not really possible without an image in obsidian)
|
||||
|
||||
# Finite Automata
|
||||
Lecture Topic:
|
||||
|
||||
# Equivalence Classes
|
||||
You can represent equivalence classes by writing each one as a set:
|
||||
$$C_0 = \{..., -10, -5, 0, 5, 10, 15, ...\} \text{ or } \{5p | p \in \mathbb{Z}\}$$
|
||||
$$C_0 = \{..., -9, -4, 1, 6, 11, 16, ...\} \text{ or } \{5p + 1| p \in \mathbb{Z}\}$$
|
||||
$$\text{and so on...}$$
|
||||
# Graphs
|
||||
Definitions:
|
||||
- For each *vertex* v, the **degree** of v is the number of edges incident on v
|
||||
- A *path* is a **sequence** of vertices connected by edges
|
||||
- A *cycle* is a path that **starts and ends** at the same vertex
|
||||
- A *simple path* is a path that has **no repeated** vertices
|
||||
- A *connected graph* contains a path between **every pair** of vertices
|
||||
- A *disconnected graph* is the opposite (look at slides for real def)
|
||||
|
||||
# Regular Languages
|
||||
A class of languages that can be processed by simple computers called **finite automata**
|
||||
|
||||
## Simple Example of a finite automaton
|
||||
Vending machine/toll booth gate
|
||||
Requires 25 cents or more to be deposited (gives no change)
|
||||
|
||||
Takes as input, 5 cent, 10 cent, 25 cent coins
|
||||
Uses **states** to remember how much has been deposited so far
|
||||
|
||||
States:
|
||||
- q_0 : 0 cents deposited (START STATE)
|
||||
- q_5 : 5 cents
|
||||
- q_10 : 10 cents
|
||||
- q_15 : 15 cents
|
||||
- q_20 : 20 cents
|
||||
- q_25 : 25 cents (ACCEPT STATE)
|
||||
|
||||
We represent the input as a **string** of symbols.
|
||||
- n = nickel
|
||||
- d = dime
|
||||
- q = quarter
|
||||
Examples:
|
||||
- ddn
|
||||
- ndd
|
||||
- dnd
|
||||
- q
|
||||
Not accepted examples:
|
||||
- nd
|
||||
- d
|
||||
- $\epsilon$
|
||||
## State Diagram
|
||||
(not really possible without an image in obsidian)
|
||||
|
||||
# Finite Automata
|
||||
(look at slides, didn't catch it)
|
@ -1,85 +1,85 @@
|
||||
# Finite Automata
|
||||
Simple machines that take in strings (sequences of symbols) as input and recognize whether or note each input string satisfies some condition(s)
|
||||
|
||||
Finite automata use states to keep track of important information about symbols
|
||||
|
||||
## Mathematical definition of a finite automaton
|
||||
$M = (Q, \sum, \delta, q, F)$
|
||||
- $Q$ is a finite set of states
|
||||
- $\sum$ is a finite set of input symbols called the input alphabet
|
||||
- $\delta$ is the transition function
|
||||
- Takes every pair consisting of a state and an input smbol and returns the next state, this tells us everything we need to know about what the machine does in one computation step
|
||||
- $q \in Q$ is the start state
|
||||
- $F \subseteq Q$ is the set of accept states
|
||||
|
||||
## Acceptance by a finite automaton
|
||||
Let M be a finite automaton
|
||||
Let $w = w_1, w_2, ..., w_n$ be n input string over \sum
|
||||
As input string w is process by $M$, define the sequence of visited states $r_0, r_1, ..., r_n$ as follows:
|
||||
- $r_0 = q$
|
||||
- $\forall i = 0,1, ... n-1, r_{i+1} = \delta(r_i, w_{i+1})$
|
||||
If $r_n \in F$ then $M$ accepts $w$, otherwise $M$ rejects $w$
|
||||
|
||||
Note: The empty string $\epsilon$ has length $0$, it is accepted by $M$ if any only if the start state is an accept state
|
||||
|
||||
For a given finite automaton $M$, the set of stings accepted by $M$ is the language of $M$ and is denoted $L(M)$
|
||||
|
||||
A language $A$ is called regular if there exists a finite automaton $M$ such that $A = L(M)$
|
||||
|
||||
## Example of finite automata
|
||||
A finite automation $M_1$ that accepts
|
||||
$$\{w \in \{0,1\}^* \ | \ n_1(w) \geq 2\}$$
|
||||
(State diagram on board)
|
||||
A is the start sate and C is the accept state
|
||||
A -> B (On 1)
|
||||
B -> C (On 1)
|
||||
A -> A (On 0)
|
||||
B -> B (On 0)
|
||||
C -> C (On 0, 1)
|
||||
|
||||
A: we have seen no ones yet
|
||||
B: we have seen exactly one 1
|
||||
C: we have seen two ore more 1's
|
||||
|
||||
## Example 2 of finite automata
|
||||
A finite automation $M_2$ that accepts
|
||||
$$\{w \in \{0,1\}^* \ | \ n_1(w) = 2\}$$
|
||||
(State diagram on board)
|
||||
A is the start state and C is the accept state
|
||||
A -> B (On 1)
|
||||
B -> C (On 1)
|
||||
C -> D (On 1)
|
||||
A -> A (On 0)
|
||||
B -> B (On 0)
|
||||
C -> C (On 0)
|
||||
D -> D (On 0, 1)
|
||||
|
||||
Note: D is an example of a dead state, in which you cannot escape after
|
||||
|
||||
## Example 3 of finite automata
|
||||
A finite automation $M_3$ that accepts
|
||||
$$\{w \in \{a,b\}^* \ | \ \text{w starts with abb}\}$$
|
||||
(State diagram on board)
|
||||
A is the start state and D is the accept state
|
||||
A -> B (On a)
|
||||
B -> C (On b)
|
||||
C -> D (On b)
|
||||
D -> D (On a, b)
|
||||
A -> X (On b)
|
||||
B -> X (On a)
|
||||
C -> X (On a)
|
||||
X -> X (On a ,b)
|
||||
|
||||
## Example 4 of finite automata
|
||||
A finite automation $M_4$ that accepts
|
||||
(Didn't catch the definition)
|
||||
$$\{w \in \{0,1\}^* \ | \ n_1(w) = 2\}$$
|
||||
(State diagram on board)
|
||||
A is the start state and D is the accept state
|
||||
|
||||
(state transitions would go here)
|
||||
|
||||
A: the most recent symbol was 1 or we have seen no symbols
|
||||
B: the last symbol was 0, but we have noon seen 010 yet
|
||||
C: the last two symbols were 01, but we have not seen 010
|
||||
# Finite Automata
|
||||
Simple machines that take in strings (sequences of symbols) as input and recognize whether or note each input string satisfies some condition(s)
|
||||
|
||||
Finite automata use states to keep track of important information about symbols
|
||||
|
||||
## Mathematical definition of a finite automaton
|
||||
$M = (Q, \sum, \delta, q, F)$
|
||||
- $Q$ is a finite set of states
|
||||
- $\sum$ is a finite set of input symbols called the input alphabet
|
||||
- $\delta$ is the transition function
|
||||
- Takes every pair consisting of a state and an input smbol and returns the next state, this tells us everything we need to know about what the machine does in one computation step
|
||||
- $q \in Q$ is the start state
|
||||
- $F \subseteq Q$ is the set of accept states
|
||||
|
||||
## Acceptance by a finite automaton
|
||||
Let M be a finite automaton
|
||||
Let $w = w_1, w_2, ..., w_n$ be n input string over \sum
|
||||
As input string w is process by $M$, define the sequence of visited states $r_0, r_1, ..., r_n$ as follows:
|
||||
- $r_0 = q$
|
||||
- $\forall i = 0,1, ... n-1, r_{i+1} = \delta(r_i, w_{i+1})$
|
||||
If $r_n \in F$ then $M$ accepts $w$, otherwise $M$ rejects $w$
|
||||
|
||||
Note: The empty string $\epsilon$ has length $0$, it is accepted by $M$ if any only if the start state is an accept state
|
||||
|
||||
For a given finite automaton $M$, the set of stings accepted by $M$ is the language of $M$ and is denoted $L(M)$
|
||||
|
||||
A language $A$ is called regular if there exists a finite automaton $M$ such that $A = L(M)$
|
||||
|
||||
## Example of finite automata
|
||||
A finite automation $M_1$ that accepts
|
||||
$$\{w \in \{0,1\}^* \ | \ n_1(w) \geq 2\}$$
|
||||
(State diagram on board)
|
||||
A is the start sate and C is the accept state
|
||||
A -> B (On 1)
|
||||
B -> C (On 1)
|
||||
A -> A (On 0)
|
||||
B -> B (On 0)
|
||||
C -> C (On 0, 1)
|
||||
|
||||
A: we have seen no ones yet
|
||||
B: we have seen exactly one 1
|
||||
C: we have seen two ore more 1's
|
||||
|
||||
## Example 2 of finite automata
|
||||
A finite automation $M_2$ that accepts
|
||||
$$\{w \in \{0,1\}^* \ | \ n_1(w) = 2\}$$
|
||||
(State diagram on board)
|
||||
A is the start state and C is the accept state
|
||||
A -> B (On 1)
|
||||
B -> C (On 1)
|
||||
C -> D (On 1)
|
||||
A -> A (On 0)
|
||||
B -> B (On 0)
|
||||
C -> C (On 0)
|
||||
D -> D (On 0, 1)
|
||||
|
||||
Note: D is an example of a dead state, in which you cannot escape after
|
||||
|
||||
## Example 3 of finite automata
|
||||
A finite automation $M_3$ that accepts
|
||||
$$\{w \in \{a,b\}^* \ | \ \text{w starts with abb}\}$$
|
||||
(State diagram on board)
|
||||
A is the start state and D is the accept state
|
||||
A -> B (On a)
|
||||
B -> C (On b)
|
||||
C -> D (On b)
|
||||
D -> D (On a, b)
|
||||
A -> X (On b)
|
||||
B -> X (On a)
|
||||
C -> X (On a)
|
||||
X -> X (On a ,b)
|
||||
|
||||
## Example 4 of finite automata
|
||||
A finite automation $M_4$ that accepts
|
||||
(Didn't catch the definition)
|
||||
$$\{w \in \{0,1\}^* \ | \ n_1(w) = 2\}$$
|
||||
(State diagram on board)
|
||||
A is the start state and D is the accept state
|
||||
|
||||
(state transitions would go here)
|
||||
|
||||
A: the most recent symbol was 1 or we have seen no symbols
|
||||
B: the last symbol was 0, but we have noon seen 010 yet
|
||||
C: the last two symbols were 01, but we have not seen 010
|
||||
D: we have seen the pattern 010
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: More Finite Automata
|
||||
# Examples
|
||||
Lots of example of finite automata, easier to look at posted slides
|
||||
Lecture Topic: More Finite Automata
|
||||
# Examples
|
||||
Lots of example of finite automata, easier to look at posted slides
|
||||
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: More FAs
|
||||
|
||||
Lecture Topic: More FAs
|
||||
|
||||
This lecture we also tried to determine the language from a visual example of a finite automata
|
@ -1,15 +1,15 @@
|
||||
Lecture Topic: Non-determinism
|
||||
|
||||
# So Far
|
||||
All of the finite automata have been deterministic. This means that for any combination of state and input symbol there is exactly one transition defined
|
||||
|
||||
There are advantages to this
|
||||
- Easier to trace a string through the finite automata
|
||||
Also some disadvantages
|
||||
- Can make it harder to design
|
||||
|
||||
Example on whiteboard
|
||||
|
||||
In a non-deterministic finite automata (NFA), there are different paths, or choices you can make, so there can be more than one, or no transition defined for a given state.
|
||||
|
||||
Lecture Topic: Non-determinism
|
||||
|
||||
# So Far
|
||||
All of the finite automata have been deterministic. This means that for any combination of state and input symbol there is exactly one transition defined
|
||||
|
||||
There are advantages to this
|
||||
- Easier to trace a string through the finite automata
|
||||
Also some disadvantages
|
||||
- Can make it harder to design
|
||||
|
||||
Example on whiteboard
|
||||
|
||||
In a non-deterministic finite automata (NFA), there are different paths, or choices you can make, so there can be more than one, or no transition defined for a given state.
|
||||
|
||||
To verify a string in a NFA, you need to follow each "choice" until a string completes, (ie, for two transitions defined, fork and check both paths)
|
@ -1,11 +1,11 @@
|
||||
Lecture Topic: More NFA
|
||||
|
||||
Design a state diagram for an NFA that accepts
|
||||
$$L = \{w \in \{a,b,c\}^* | \text{w starts with abc, ends with aab, and contains the substring bb}\}$$
|
||||
So, the first three states must be connecting a, b and c
|
||||
|
||||
(D) -a, b, c> (D)
|
||||
(F) -a, b, c> (F)
|
||||
(A) -a> (B) -b> (C) -c> (D) -b> (E) -b> (F) -a> (G) -a> (H) -b> ((I))
|
||||
|
||||
Lecture Topic: More NFA
|
||||
|
||||
Design a state diagram for an NFA that accepts
|
||||
$$L = \{w \in \{a,b,c\}^* | \text{w starts with abc, ends with aab, and contains the substring bb}\}$$
|
||||
So, the first three states must be connecting a, b and c
|
||||
|
||||
(D) -a, b, c> (D)
|
||||
(F) -a, b, c> (F)
|
||||
(A) -a> (B) -b> (C) -c> (D) -b> (E) -b> (F) -a> (G) -a> (H) -b> ((I))
|
||||
|
||||
It's important that on D and F, that b is allowed to loop, as if it did not, some valid strings would not be accepted, as it would only allow for two bs in the middle
|
@ -1,2 +1,2 @@
|
||||
Lecture Topics: NFA examples
|
||||
|
||||
Lecture Topics: NFA examples
|
||||
|
||||
|
@ -1,17 +1,17 @@
|
||||
Lecture Topic: Proofs
|
||||
|
||||
For any DFA, we already have an NFA, it just not happen to use any characteristics of NFAs like epsilon transitions or more/less than 1 transition per symbol per state
|
||||
|
||||
Suppose we have an NFA N that accepts language L
|
||||
We can construct a DFA D that accepts the same language
|
||||
* The DFA keeps track of all the possible states the NFA could be in after seeing any sequence of input symbols
|
||||
Example in slides
|
||||
|
||||
Reminder: Any language that can be accepted by a FA is called a regular language
|
||||
|
||||
Let A and B languages, we define the regular operations, union, concatenation and star
|
||||
Union: Is all the strings that are in either of the languages A or B
|
||||
Concatenation: All the strings that can be formed by the concatenation of A and B
|
||||
Star: Any sequence of strings formed from any combination strings in a language A
|
||||
|
||||
Lecture Topic: Proofs
|
||||
|
||||
For any DFA, we already have an NFA, it just not happen to use any characteristics of NFAs like epsilon transitions or more/less than 1 transition per symbol per state
|
||||
|
||||
Suppose we have an NFA N that accepts language L
|
||||
We can construct a DFA D that accepts the same language
|
||||
* The DFA keeps track of all the possible states the NFA could be in after seeing any sequence of input symbols
|
||||
Example in slides
|
||||
|
||||
Reminder: Any language that can be accepted by a FA is called a regular language
|
||||
|
||||
Let A and B languages, we define the regular operations, union, concatenation and star
|
||||
Union: Is all the strings that are in either of the languages A or B
|
||||
Concatenation: All the strings that can be formed by the concatenation of A and B
|
||||
Star: Any sequence of strings formed from any combination strings in a language A
|
||||
|
||||
Examples in slides
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: NFA to DFA proof, Regex Intro
|
||||
|
||||
Lecture Topic: NFA to DFA proof, Regex Intro
|
||||
|
||||
Look at posted notes
|
@ -1,98 +1,98 @@
|
||||
Lecture Topic: API Design
|
||||
Special In person Lecture
|
||||
|
||||
# Web Services VS Web API
|
||||
Network and Reusable
|
||||
- Not libraries in the same app domain
|
||||
- note one off custom integration
|
||||
Two Broad categories
|
||||
- Heavyweight, WS-* SOAP, WSDL
|
||||
- Lightweight - HTTP, simple XML, or likely JSON
|
||||
|
||||
# REST
|
||||
- Stateless - reduces complexity/ambiguity and improves scalability
|
||||
- No need to re-hydrate endpoints for new server state information
|
||||
- Representations used for manipulation - create, update, etc
|
||||
- Identifies in request example.com/api/contact/7
|
||||
- Standard HTTP verbs
|
||||
- POST, GET, etc
|
||||
- Proper response codes
|
||||
- i.e, 200 for success, 400 for missing, 500 for server issue
|
||||
|
||||
# HTTP Verb Debate
|
||||
Easy to classify:
|
||||
Request/query should be GET
|
||||
Delete should be DELETE
|
||||
|
||||
More Debate:
|
||||
Creates should be POST
|
||||
Update can be PUT or PATCH but you should implement PATCH
|
||||
|
||||
HTTP Method Responce Codes
|
||||
|
||||
| HTTP VERB | CRUD | ENTIRE COLLECTION <br>e.g. /customers/ | SPECIFIC ITEM <br>e.g. /customers/{id} |
|
||||
| --------- | -------------- | ----------------- | ------------- |
|
||||
| POST | Create | 201 | 404, 409 |
|
||||
| GET | Read | 200 | 200, 404 |
|
||||
| PUT | Update/Replace | 405 | 200, 204, 404 |
|
||||
| PATCH | Update/Modify | 405 | 200, 204, 404 |
|
||||
| DELETE | Delete | 405 | 200, 404 |
|
||||
# Some Libraries and Payloads
|
||||
- Custom JSON
|
||||
- OData
|
||||
- Started by Microsoft open source project, now OASIS
|
||||
- not strictly REST
|
||||
- JSON format standard for v4.0
|
||||
- Discoverability - Service and metadata document
|
||||
- Json:api
|
||||
- JSON first
|
||||
- Very verbose - but better than XML
|
||||
- Hypermedia as the engine of application state (HATEOAS)
|
||||
|
||||
# Public, Partner, or Private APIs
|
||||
Public:
|
||||
- Exposed to the internet, can be paid or require verification
|
||||
- Documentation
|
||||
Partner:
|
||||
- More for internal usage between organisations
|
||||
- Still need good documentation
|
||||
Private:
|
||||
- Mostly for yourself, but can often become one of the other category
|
||||
- Not worrying about breaking data formats or changing routes
|
||||
- Documentation not required
|
||||
|
||||
# Who are you building for
|
||||
- Apps, IoT
|
||||
- Other Sites
|
||||
- Things not thought of yet
|
||||
Try to think what it will be called from (smartphone, script, desktop application, other services)
|
||||
|
||||
# Table Stakes
|
||||
## Authentication
|
||||
Maybe try and use 3rd party libraries to handle authentication (OAuth)
|
||||
|
||||
Think about what your service will be called from, think tokens for service/script APIs or token/username password authentication for desktop apps or smartphone applications
|
||||
|
||||
## Analytics/Metrics
|
||||
You need to know what people are asking for and creating to know what to build in the future
|
||||
- Performance Degradation - Rate Limiting
|
||||
- Monetisation - See what people are asking for and limits on free vs should be paid users
|
||||
|
||||
# Good Problems and Unintended Uses
|
||||
Good problems:
|
||||
- Large client
|
||||
- Super popular app
|
||||
Unintended uses
|
||||
- Internal API sold to a customer - Business people selling what was an internal API and now are being required to support the internal API
|
||||
- Reporting/Analytics
|
||||
- Bulk data export - How do you get 100 records, 1000 records
|
||||
|
||||
Should think about when you should using something other than a REST API, if the requirements grow past what a REST API can reasonably support
|
||||
|
||||
# Living Documentation
|
||||
Postman - getpostman.com
|
||||
OpenAPI/Swagger
|
||||
Hootsuite's API as an example (link)
|
||||
|
||||
# Recommendations
|
||||
Lecture Topic: API Design
|
||||
Special In person Lecture
|
||||
|
||||
# Web Services VS Web API
|
||||
Network and Reusable
|
||||
- Not libraries in the same app domain
|
||||
- note one off custom integration
|
||||
Two Broad categories
|
||||
- Heavyweight, WS-* SOAP, WSDL
|
||||
- Lightweight - HTTP, simple XML, or likely JSON
|
||||
|
||||
# REST
|
||||
- Stateless - reduces complexity/ambiguity and improves scalability
|
||||
- No need to re-hydrate endpoints for new server state information
|
||||
- Representations used for manipulation - create, update, etc
|
||||
- Identifies in request example.com/api/contact/7
|
||||
- Standard HTTP verbs
|
||||
- POST, GET, etc
|
||||
- Proper response codes
|
||||
- i.e, 200 for success, 400 for missing, 500 for server issue
|
||||
|
||||
# HTTP Verb Debate
|
||||
Easy to classify:
|
||||
Request/query should be GET
|
||||
Delete should be DELETE
|
||||
|
||||
More Debate:
|
||||
Creates should be POST
|
||||
Update can be PUT or PATCH but you should implement PATCH
|
||||
|
||||
HTTP Method Responce Codes
|
||||
|
||||
| HTTP VERB | CRUD | ENTIRE COLLECTION <br>e.g. /customers/ | SPECIFIC ITEM <br>e.g. /customers/{id} |
|
||||
| --------- | -------------- | ----------------- | ------------- |
|
||||
| POST | Create | 201 | 404, 409 |
|
||||
| GET | Read | 200 | 200, 404 |
|
||||
| PUT | Update/Replace | 405 | 200, 204, 404 |
|
||||
| PATCH | Update/Modify | 405 | 200, 204, 404 |
|
||||
| DELETE | Delete | 405 | 200, 404 |
|
||||
# Some Libraries and Payloads
|
||||
- Custom JSON
|
||||
- OData
|
||||
- Started by Microsoft open source project, now OASIS
|
||||
- not strictly REST
|
||||
- JSON format standard for v4.0
|
||||
- Discoverability - Service and metadata document
|
||||
- Json:api
|
||||
- JSON first
|
||||
- Very verbose - but better than XML
|
||||
- Hypermedia as the engine of application state (HATEOAS)
|
||||
|
||||
# Public, Partner, or Private APIs
|
||||
Public:
|
||||
- Exposed to the internet, can be paid or require verification
|
||||
- Documentation
|
||||
Partner:
|
||||
- More for internal usage between organisations
|
||||
- Still need good documentation
|
||||
Private:
|
||||
- Mostly for yourself, but can often become one of the other category
|
||||
- Not worrying about breaking data formats or changing routes
|
||||
- Documentation not required
|
||||
|
||||
# Who are you building for
|
||||
- Apps, IoT
|
||||
- Other Sites
|
||||
- Things not thought of yet
|
||||
Try to think what it will be called from (smartphone, script, desktop application, other services)
|
||||
|
||||
# Table Stakes
|
||||
## Authentication
|
||||
Maybe try and use 3rd party libraries to handle authentication (OAuth)
|
||||
|
||||
Think about what your service will be called from, think tokens for service/script APIs or token/username password authentication for desktop apps or smartphone applications
|
||||
|
||||
## Analytics/Metrics
|
||||
You need to know what people are asking for and creating to know what to build in the future
|
||||
- Performance Degradation - Rate Limiting
|
||||
- Monetisation - See what people are asking for and limits on free vs should be paid users
|
||||
|
||||
# Good Problems and Unintended Uses
|
||||
Good problems:
|
||||
- Large client
|
||||
- Super popular app
|
||||
Unintended uses
|
||||
- Internal API sold to a customer - Business people selling what was an internal API and now are being required to support the internal API
|
||||
- Reporting/Analytics
|
||||
- Bulk data export - How do you get 100 records, 1000 records
|
||||
|
||||
Should think about when you should using something other than a REST API, if the requirements grow past what a REST API can reasonably support
|
||||
|
||||
# Living Documentation
|
||||
Postman - getpostman.com
|
||||
OpenAPI/Swagger
|
||||
Hootsuite's API as an example (link)
|
||||
|
||||
# Recommendations
|
||||
APIs - A strategy guide
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: SQL Injection
|
||||
Special guest lecture
|
||||
|
||||
Lecture Topic: SQL Injection
|
||||
Special guest lecture
|
||||
|
||||
|
@ -1,59 +1,59 @@
|
||||
Lecture Topic: Bandwidth and Data Rate
|
||||
|
||||
Analog: x(t)
|
||||
Discrete: x(n)
|
||||
Digital: from formula, range / set, bit sequence
|
||||
|
||||
Bandwidth:
|
||||
$x(t) = \sum^{\infty}_{k=-\infty}A_k cos(2\pi f_k + \phi_k)$
|
||||
|
||||
Fourier series
|
||||
|
||||
|
||||
Shannon Theorem:
|
||||
For a Gaussian channel the data rate that can be achieved over a channel of a given bandwidth satisfies
|
||||
|
||||
$R \leq B_w log_2(1+\frac{S}{N}) \triangleq C$
|
||||
|
||||
R = Achievable data rate (bps)
|
||||
$B_w$ = Channel bandwidth in Hz
|
||||
S/N = Signal to noise ratio (SNR)
|
||||
S = Signal power, N = noise power
|
||||
|
||||
Internet Architecture:
|
||||
- Network Edge
|
||||
- End systems: Host apps, not only computers and mobile devices but also wearables, sensors and large servers
|
||||
- Access Networks: (Last hop, last mile), Connect end systems to the first router (aka edge router)
|
||||
- Network Core:
|
||||
- Packet switches: Routers, link layer switches
|
||||
|
||||
A hierarchical look at A network of network:
|
||||
- Hosts connect to the internet via access ISPs, residential, cooperate ISPs, university ISPs, cellular data ISPs.
|
||||
- Access ISPs in turn are interconnected through regional ISPs and tier 1 ISPs
|
||||
|
||||
(Diagram in slides)
|
||||
|
||||
Internet Access and Physical Media:
|
||||
- Wired
|
||||
- Dial up
|
||||
- DSL
|
||||
- Cable
|
||||
- Fibre Optics
|
||||
- Ethernet
|
||||
- Wireless
|
||||
- WiFi
|
||||
- Cellular
|
||||
- Satellite
|
||||
|
||||
Wired media: EM waves are guided along a solid medium (twisted pair copper, coaxial cable, fibre optics)
|
||||
Wireless media: EM waves propagate through the air (Different electromagnetic spectrum/frequency bands)
|
||||
|
||||
Dial-Up:
|
||||
Use existing telephony infrastructure
|
||||
- Low Speed (56k)
|
||||
- Can't use phone and internet at the same time (not always present)
|
||||
- Modems modulate and demodulate data over phone lines
|
||||
|
||||
DSL:
|
||||
Digital Subscriber Line
|
||||
Lecture Topic: Bandwidth and Data Rate
|
||||
|
||||
Analog: x(t)
|
||||
Discrete: x(n)
|
||||
Digital: from formula, range / set, bit sequence
|
||||
|
||||
Bandwidth:
|
||||
$x(t) = \sum^{\infty}_{k=-\infty}A_k cos(2\pi f_k + \phi_k)$
|
||||
|
||||
Fourier series
|
||||
|
||||
|
||||
Shannon Theorem:
|
||||
For a Gaussian channel the data rate that can be achieved over a channel of a given bandwidth satisfies
|
||||
|
||||
$R \leq B_w log_2(1+\frac{S}{N}) \triangleq C$
|
||||
|
||||
R = Achievable data rate (bps)
|
||||
$B_w$ = Channel bandwidth in Hz
|
||||
S/N = Signal to noise ratio (SNR)
|
||||
S = Signal power, N = noise power
|
||||
|
||||
Internet Architecture:
|
||||
- Network Edge
|
||||
- End systems: Host apps, not only computers and mobile devices but also wearables, sensors and large servers
|
||||
- Access Networks: (Last hop, last mile), Connect end systems to the first router (aka edge router)
|
||||
- Network Core:
|
||||
- Packet switches: Routers, link layer switches
|
||||
|
||||
A hierarchical look at A network of network:
|
||||
- Hosts connect to the internet via access ISPs, residential, cooperate ISPs, university ISPs, cellular data ISPs.
|
||||
- Access ISPs in turn are interconnected through regional ISPs and tier 1 ISPs
|
||||
|
||||
(Diagram in slides)
|
||||
|
||||
Internet Access and Physical Media:
|
||||
- Wired
|
||||
- Dial up
|
||||
- DSL
|
||||
- Cable
|
||||
- Fibre Optics
|
||||
- Ethernet
|
||||
- Wireless
|
||||
- WiFi
|
||||
- Cellular
|
||||
- Satellite
|
||||
|
||||
Wired media: EM waves are guided along a solid medium (twisted pair copper, coaxial cable, fibre optics)
|
||||
Wireless media: EM waves propagate through the air (Different electromagnetic spectrum/frequency bands)
|
||||
|
||||
Dial-Up:
|
||||
Use existing telephony infrastructure
|
||||
- Low Speed (56k)
|
||||
- Can't use phone and internet at the same time (not always present)
|
||||
- Modems modulate and demodulate data over phone lines
|
||||
|
||||
DSL:
|
||||
Digital Subscriber Line
|
||||
(Slides went fast)
|
@ -1,53 +1,53 @@
|
||||
Lecture Topic: Network Edge & Internet Access Technologies
|
||||
|
||||
Bandwidth and Data Rate recap:
|
||||
The data rate cannot exceed the capacity of the bandwidth of a given channel, this is where the formula $R \leq B_w log_2(1+\frac{S}{N}) \triangleq C$ comes from
|
||||
|
||||
Doubling the data rate means that you need a bandwidth that has at least as much capacity to handle the new data rate
|
||||
|
||||
Internet Access Technologies:
|
||||
- DSL:
|
||||
- Using Frequency Division Multiplexing (FDM) it caries digital data through phone lines
|
||||
- Example: Voice 0-4 kHz, Upstream 4-50 kHz, Downstream 50 kHz-1 MHz
|
||||
- Twisted Pair Cable Wire:
|
||||
- Constitute a fine antenna
|
||||
- Cancel out cross talk and produce less radiation
|
||||
- A number of pairs are bundled together in a cable
|
||||
- Used in telephone systems, unheralded twisted pair (UTP) for local area networks, computer networks within a building (Ethernet)
|
||||
- Data Rate: 10Mbps - 10Gbps
|
||||
- Cable:
|
||||
- Use cable TV companies existing cable infrastructure
|
||||
- Hybrid fibre coaxial (HFC) access network
|
||||
- Coaxial cables are shared to reach individual homes
|
||||
- Fibre optics connect neighbourhood level junctions to CMTS
|
||||
- Asymmetric 40Mbps - 1.2Gbps downstream, 30Mbps - 100Mbps upstream
|
||||
- Data/TV are transmitted at different frequencies over shared cable
|
||||
- At the home, splits the signals into TV and Internet signals
|
||||
- Coaxial Cable
|
||||
- More complex structure
|
||||
- Better performance
|
||||
- Excellent noise immunity because cable is very shielded
|
||||
- Can span longer distances
|
||||
- Bandwidth is close to 1 Ghz
|
||||
- Data rates are higher than other technologies, 100s Mbps per channel
|
||||
- Fibre to the home (FTTH)
|
||||
- Optical network terminal in individual homes (ONT)
|
||||
- Optical line terminal in central office (OLT)
|
||||
- Fibre optic cables are similar to coax cables (lots of layers)
|
||||
- Class core with higher index of refraction than the outer glass
|
||||
- Light propagates through glass core
|
||||
- Thin plastic jacket to protect glass cladding
|
||||
- Fibres are typically grouped in bundles protected by an outer sheath
|
||||
- The outer layer keeps the light inside, not leaking any energy by reflecting the signal off an outer sheath
|
||||
- Has a few excellent features:
|
||||
- Very low signal attenuation up to 100km
|
||||
- Immune to electromagnetic interference
|
||||
- Larger bandwidth, support data rate up to 10s or 100s of Gbps
|
||||
- Hard to tap
|
||||
|
||||
Network Core:
|
||||
- How is data moved through a network of links and packet switches?
|
||||
- There are two fundamental approaches
|
||||
- Circuit switching
|
||||
- Packet switching
|
||||
Lecture Topic: Network Edge & Internet Access Technologies
|
||||
|
||||
Bandwidth and Data Rate recap:
|
||||
The data rate cannot exceed the capacity of the bandwidth of a given channel, this is where the formula $R \leq B_w log_2(1+\frac{S}{N}) \triangleq C$ comes from
|
||||
|
||||
Doubling the data rate means that you need a bandwidth that has at least as much capacity to handle the new data rate
|
||||
|
||||
Internet Access Technologies:
|
||||
- DSL:
|
||||
- Using Frequency Division Multiplexing (FDM) it caries digital data through phone lines
|
||||
- Example: Voice 0-4 kHz, Upstream 4-50 kHz, Downstream 50 kHz-1 MHz
|
||||
- Twisted Pair Cable Wire:
|
||||
- Constitute a fine antenna
|
||||
- Cancel out cross talk and produce less radiation
|
||||
- A number of pairs are bundled together in a cable
|
||||
- Used in telephone systems, unheralded twisted pair (UTP) for local area networks, computer networks within a building (Ethernet)
|
||||
- Data Rate: 10Mbps - 10Gbps
|
||||
- Cable:
|
||||
- Use cable TV companies existing cable infrastructure
|
||||
- Hybrid fibre coaxial (HFC) access network
|
||||
- Coaxial cables are shared to reach individual homes
|
||||
- Fibre optics connect neighbourhood level junctions to CMTS
|
||||
- Asymmetric 40Mbps - 1.2Gbps downstream, 30Mbps - 100Mbps upstream
|
||||
- Data/TV are transmitted at different frequencies over shared cable
|
||||
- At the home, splits the signals into TV and Internet signals
|
||||
- Coaxial Cable
|
||||
- More complex structure
|
||||
- Better performance
|
||||
- Excellent noise immunity because cable is very shielded
|
||||
- Can span longer distances
|
||||
- Bandwidth is close to 1 Ghz
|
||||
- Data rates are higher than other technologies, 100s Mbps per channel
|
||||
- Fibre to the home (FTTH)
|
||||
- Optical network terminal in individual homes (ONT)
|
||||
- Optical line terminal in central office (OLT)
|
||||
- Fibre optic cables are similar to coax cables (lots of layers)
|
||||
- Class core with higher index of refraction than the outer glass
|
||||
- Light propagates through glass core
|
||||
- Thin plastic jacket to protect glass cladding
|
||||
- Fibres are typically grouped in bundles protected by an outer sheath
|
||||
- The outer layer keeps the light inside, not leaking any energy by reflecting the signal off an outer sheath
|
||||
- Has a few excellent features:
|
||||
- Very low signal attenuation up to 100km
|
||||
- Immune to electromagnetic interference
|
||||
- Larger bandwidth, support data rate up to 10s or 100s of Gbps
|
||||
- Hard to tap
|
||||
|
||||
Network Core:
|
||||
- How is data moved through a network of links and packet switches?
|
||||
- There are two fundamental approaches
|
||||
- Circuit switching
|
||||
- Packet switching
|
||||
-
|
@ -1,42 +1,42 @@
|
||||
Lecture Topic: Network Core
|
||||
|
||||
Resource Sharing with circuit switching:
|
||||
- Network resources divided into pieces allocated to connections
|
||||
- Frequency division multiplexing (FDM). Dividing over bandwidth, and each end user gets a portion of the bandwidth for the entire portion of time.
|
||||
- Time division multiplexing (TDM). Dividing over time, and each end user gets the full bandwidth for a portion of allocated time. Similar to round robin.
|
||||
|
||||
Table of some information of cellular network technologies:
|
||||
CS: Circuit Switching
|
||||
|
||||
1G (FDMA)
|
||||
2G (TDMA) (GSM/CS)
|
||||
3G (CDMA) (CS/PS)
|
||||
4G (PS)
|
||||
5G (millimeter wave)
|
||||
|
||||
With circuit switching you can guarantee a certain level of performance, while with packet switching there is no/less of a guarantee of performance, which is why circuit switching was important for mobile networks as emergency calls need a certain level of performance to be guaranteed.
|
||||
|
||||
Packet Switching:
|
||||
- Internet is based on packet switching
|
||||
- ARPANET was the first packet-switched network and is an ancestor of the internet
|
||||
- A sending host breaks a message into packets (numbered sequentially) and sends them into the network one by one
|
||||
- Packets are transmitted individually through the network and reassembled at the receiving host to recover the original message
|
||||
|
||||
Packet switching is a very adaptive to changing network conditions. Due to packet chunking, packets in transit can be routed through different routes depending on the used bandwidth of other nodes on the network, and this can occur between two packets of the same chunk of data. This is because packets are numbered and are reordered at the destination.
|
||||
|
||||
A packet follows a path:
|
||||
- First hop router: This is the first router that inspects the packet and forwards it to the next hop
|
||||
- Then next router does the same, and so on
|
||||
- The packets eventually arrives at the destination and are decoded
|
||||
|
||||
Packets follow a protocol called "store and forward"
|
||||
|
||||
Resource sharing with packet switching:
|
||||
- Is very easy, as you can just send all packets over a link, according to different priorities
|
||||
|
||||
Multiplexing comparison:
|
||||
- With circuit switching, if you allocate bandwidth to two services, it may end up unused and wasted, as the format of data is fixed and if service A is not using any traffic service B cannot use that other bandwidth
|
||||
- Statistical multiplexing: Packet switching is on demand, so no bandwidth is explicitly allocated, and bandwidth is dynamically allocated based on current network usage
|
||||
|
||||
There are some downsides to packet switching to be aware of however:
|
||||
Lecture Topic: Network Core
|
||||
|
||||
Resource Sharing with circuit switching:
|
||||
- Network resources divided into pieces allocated to connections
|
||||
- Frequency division multiplexing (FDM). Dividing over bandwidth, and each end user gets a portion of the bandwidth for the entire portion of time.
|
||||
- Time division multiplexing (TDM). Dividing over time, and each end user gets the full bandwidth for a portion of allocated time. Similar to round robin.
|
||||
|
||||
Table of some information of cellular network technologies:
|
||||
CS: Circuit Switching
|
||||
|
||||
1G (FDMA)
|
||||
2G (TDMA) (GSM/CS)
|
||||
3G (CDMA) (CS/PS)
|
||||
4G (PS)
|
||||
5G (millimeter wave)
|
||||
|
||||
With circuit switching you can guarantee a certain level of performance, while with packet switching there is no/less of a guarantee of performance, which is why circuit switching was important for mobile networks as emergency calls need a certain level of performance to be guaranteed.
|
||||
|
||||
Packet Switching:
|
||||
- Internet is based on packet switching
|
||||
- ARPANET was the first packet-switched network and is an ancestor of the internet
|
||||
- A sending host breaks a message into packets (numbered sequentially) and sends them into the network one by one
|
||||
- Packets are transmitted individually through the network and reassembled at the receiving host to recover the original message
|
||||
|
||||
Packet switching is a very adaptive to changing network conditions. Due to packet chunking, packets in transit can be routed through different routes depending on the used bandwidth of other nodes on the network, and this can occur between two packets of the same chunk of data. This is because packets are numbered and are reordered at the destination.
|
||||
|
||||
A packet follows a path:
|
||||
- First hop router: This is the first router that inspects the packet and forwards it to the next hop
|
||||
- Then next router does the same, and so on
|
||||
- The packets eventually arrives at the destination and are decoded
|
||||
|
||||
Packets follow a protocol called "store and forward"
|
||||
|
||||
Resource sharing with packet switching:
|
||||
- Is very easy, as you can just send all packets over a link, according to different priorities
|
||||
|
||||
Multiplexing comparison:
|
||||
- With circuit switching, if you allocate bandwidth to two services, it may end up unused and wasted, as the format of data is fixed and if service A is not using any traffic service B cannot use that other bandwidth
|
||||
- Statistical multiplexing: Packet switching is on demand, so no bandwidth is explicitly allocated, and bandwidth is dynamically allocated based on current network usage
|
||||
|
||||
There are some downsides to packet switching to be aware of however:
|
||||
- In next lecture
|
@ -1,56 +1,56 @@
|
||||
Lecture Topic: Packet Switching Performance
|
||||
# Packet Switching
|
||||
## Congestion
|
||||
A relevant example is air plane ticket overbooking. If an air plane has a capacity of 100 seats, and the probability of of a passenger showing up to their flight is 80%, then you can overbook ticket sales due to the probability of passengers not showing up
|
||||
- If 110 tickets are sold, the probability of more than 100 passengers is 0.0058%
|
||||
- If 115 tickets are sold, the probability goes up to 1.94%
|
||||
- If 120 tickets are sold, the probability is 15.17%
|
||||
- If 130 tickets are sold, the probability is 78.12%
|
||||
|
||||
## Performance
|
||||
Throughput: Rate (bits/time) at which bits are transferred between sender/receiver
|
||||
- Instantaneous: Receiving rate at any instant of time
|
||||
- Average: Receiving rate over a longer period of time
|
||||
|
||||
How fast a node (host or router) is transmitting depends on
|
||||
1. How fast the sender is sending
|
||||
2. How fast the link is transmitting
|
||||
|
||||
End-to-end throughput is constrained by rate of bottleneck link (the link of the minimum rate on an end-to-end path). The weakest link in the chain (of nodes) determines the throughput of the entire link.
|
||||
|
||||
## Delay and Loss
|
||||
Packets queue in a router buffer (Store and Forward)
|
||||
- They are delayed while waiting in the buffer for it's turn
|
||||
- Slowed down while the queue keeps growing (congestion)
|
||||
- Dropped (lost) if no free space in a full buffer
|
||||
|
||||
There is four sources of nodal delay:
|
||||
1. Node processing: Decoding the incoming electronic signal and accounting for distortion (e.g. wireless signal distortion), and verifying the correctness of the packet, and determining the output link. Usually very small ($10^{-6}$ secs)
|
||||
2. Queuing: Time waiting at the output link for transmission. Amount depends on the congestion of the network.
|
||||
3. Transmission: $L/R$, L = Packet length, R = Link bandwidth
|
||||
4. Propagation: $m/s$ m = Physical distance of link (e.g. 100m wire), s = propagation speed of link (e.g. speed of electricity)
|
||||
|
||||
The entire delay is the sum of all of these figures
|
||||
|
||||
### Measuring queuing delay
|
||||
Traffic intensity is a measure of congestion.
|
||||
$$ \frac{L \times a}{R} $$
|
||||
a: Average packet arrive rate (packets/s)
|
||||
L: Packet length/size (bits/packet)
|
||||
R: Link bandwidth/rate (bps)
|
||||
|
||||
If this figure is 0, the delay on average is very small
|
||||
If this figure is 1, the delay is large
|
||||
If this figure is > 1, then more work arriving than serviced (severe congestion)
|
||||
|
||||
Note: There is a field called traffic engineering, and an important rule for this field is to not let the traffic intensity exceed 1.
|
||||
|
||||
## Example: Delay
|
||||
Consider only transmission delay and propagation delay. S sends 1 packet of length L to D over a single link of rate R and distance m. s is the speed of the link
|
||||
|
||||
L = 1 kb
|
||||
R = 100 kb/s
|
||||
m = 100 km
|
||||
s = $2\times10^8$ m/s
|
||||
|
||||
Lecture Topic: Packet Switching Performance
|
||||
# Packet Switching
|
||||
## Congestion
|
||||
A relevant example is air plane ticket overbooking. If an air plane has a capacity of 100 seats, and the probability of of a passenger showing up to their flight is 80%, then you can overbook ticket sales due to the probability of passengers not showing up
|
||||
- If 110 tickets are sold, the probability of more than 100 passengers is 0.0058%
|
||||
- If 115 tickets are sold, the probability goes up to 1.94%
|
||||
- If 120 tickets are sold, the probability is 15.17%
|
||||
- If 130 tickets are sold, the probability is 78.12%
|
||||
|
||||
## Performance
|
||||
Throughput: Rate (bits/time) at which bits are transferred between sender/receiver
|
||||
- Instantaneous: Receiving rate at any instant of time
|
||||
- Average: Receiving rate over a longer period of time
|
||||
|
||||
How fast a node (host or router) is transmitting depends on
|
||||
1. How fast the sender is sending
|
||||
2. How fast the link is transmitting
|
||||
|
||||
End-to-end throughput is constrained by rate of bottleneck link (the link of the minimum rate on an end-to-end path). The weakest link in the chain (of nodes) determines the throughput of the entire link.
|
||||
|
||||
## Delay and Loss
|
||||
Packets queue in a router buffer (Store and Forward)
|
||||
- They are delayed while waiting in the buffer for it's turn
|
||||
- Slowed down while the queue keeps growing (congestion)
|
||||
- Dropped (lost) if no free space in a full buffer
|
||||
|
||||
There is four sources of nodal delay:
|
||||
1. Node processing: Decoding the incoming electronic signal and accounting for distortion (e.g. wireless signal distortion), and verifying the correctness of the packet, and determining the output link. Usually very small ($10^{-6}$ secs)
|
||||
2. Queuing: Time waiting at the output link for transmission. Amount depends on the congestion of the network.
|
||||
3. Transmission: $L/R$, L = Packet length, R = Link bandwidth
|
||||
4. Propagation: $m/s$ m = Physical distance of link (e.g. 100m wire), s = propagation speed of link (e.g. speed of electricity)
|
||||
|
||||
The entire delay is the sum of all of these figures
|
||||
|
||||
### Measuring queuing delay
|
||||
Traffic intensity is a measure of congestion.
|
||||
$$ \frac{L \times a}{R} $$
|
||||
a: Average packet arrive rate (packets/s)
|
||||
L: Packet length/size (bits/packet)
|
||||
R: Link bandwidth/rate (bps)
|
||||
|
||||
If this figure is 0, the delay on average is very small
|
||||
If this figure is 1, the delay is large
|
||||
If this figure is > 1, then more work arriving than serviced (severe congestion)
|
||||
|
||||
Note: There is a field called traffic engineering, and an important rule for this field is to not let the traffic intensity exceed 1.
|
||||
|
||||
## Example: Delay
|
||||
Consider only transmission delay and propagation delay. S sends 1 packet of length L to D over a single link of rate R and distance m. s is the speed of the link
|
||||
|
||||
L = 1 kb
|
||||
R = 100 kb/s
|
||||
m = 100 km
|
||||
s = $2\times10^8$ m/s
|
||||
|
||||
$d_{prop} = m/s = 10^5/(2\times 10^8) = 5 \times 10^{-4}$
|
@ -1,61 +1,61 @@
|
||||
Lecture Topic: Delay and Internet Layering
|
||||
|
||||
# Single Packet over Same Rate Links
|
||||
If each node has the same rate, and you consider only transmission delay, what is the end to end delay to send one packet of length L?
|
||||
|
||||
# 4 Packets over 2 Same Rate Links
|
||||
$d_{trans} = (L/R) = \tau$
|
||||
$d_{e2e} = 5\tau$
|
||||
Visual in slides
|
||||
|
||||
Two phases:
|
||||
- Phase 1 has transmitted P-1 packets out
|
||||
- Phase 2 has 1 Packet left
|
||||
$$(P + N) \times \tau = d_{e2e}$$
|
||||
|
||||
# 4 Packets over 2 Links of different rates
|
||||
$$d_{e2e} \approx \frac{\text{Total package size}}{\text{E2E throughput}}$$
|
||||
So, estimating
|
||||
$d_{e2e} \approx \frac{4 \times L}{R} = 4\tau$
|
||||
while the real end to end delay is $5\tau$
|
||||
|
||||
# Internet Layering
|
||||
Also called TCP/IP model
|
||||
## Layers (inverse order due to markdown)
|
||||
1. Application
|
||||
2. Transport
|
||||
3. Network
|
||||
4. Link
|
||||
5. Physical
|
||||
## Applications
|
||||
- SMTP
|
||||
- HTTP
|
||||
- DNS
|
||||
## Transport
|
||||
- UDP
|
||||
- TCP
|
||||
## Network
|
||||
- IP
|
||||
- Routing protocols
|
||||
## Link
|
||||
- Ethernet
|
||||
- WiFi
|
||||
## Physical
|
||||
- Moving individual bits from one node to the next
|
||||
|
||||
Terms:
|
||||
- Router (Operates on network layer)
|
||||
- Switch (Operates on link layer)
|
||||
- Modem (Modulation, converting mediums and modes)
|
||||
- Access Point (WiFi access)
|
||||
|
||||
## Protocols
|
||||
Define how peers communicate and exchange information over the network including rules, procedures, and message formats
|
||||
|
||||
Application layer protocols:
|
||||
- Web server to web client (HTTP)
|
||||
|
||||
(More examples for each layer in slides)
|
||||
|
||||
### Encapsulation
|
||||
Lecture Topic: Delay and Internet Layering
|
||||
|
||||
# Single Packet over Same Rate Links
|
||||
If each node has the same rate, and you consider only transmission delay, what is the end to end delay to send one packet of length L?
|
||||
|
||||
# 4 Packets over 2 Same Rate Links
|
||||
$d_{trans} = (L/R) = \tau$
|
||||
$d_{e2e} = 5\tau$
|
||||
Visual in slides
|
||||
|
||||
Two phases:
|
||||
- Phase 1 has transmitted P-1 packets out
|
||||
- Phase 2 has 1 Packet left
|
||||
$$(P + N) \times \tau = d_{e2e}$$
|
||||
|
||||
# 4 Packets over 2 Links of different rates
|
||||
$$d_{e2e} \approx \frac{\text{Total package size}}{\text{E2E throughput}}$$
|
||||
So, estimating
|
||||
$d_{e2e} \approx \frac{4 \times L}{R} = 4\tau$
|
||||
while the real end to end delay is $5\tau$
|
||||
|
||||
# Internet Layering
|
||||
Also called TCP/IP model
|
||||
## Layers (inverse order due to markdown)
|
||||
1. Application
|
||||
2. Transport
|
||||
3. Network
|
||||
4. Link
|
||||
5. Physical
|
||||
## Applications
|
||||
- SMTP
|
||||
- HTTP
|
||||
- DNS
|
||||
## Transport
|
||||
- UDP
|
||||
- TCP
|
||||
## Network
|
||||
- IP
|
||||
- Routing protocols
|
||||
## Link
|
||||
- Ethernet
|
||||
- WiFi
|
||||
## Physical
|
||||
- Moving individual bits from one node to the next
|
||||
|
||||
Terms:
|
||||
- Router (Operates on network layer)
|
||||
- Switch (Operates on link layer)
|
||||
- Modem (Modulation, converting mediums and modes)
|
||||
- Access Point (WiFi access)
|
||||
|
||||
## Protocols
|
||||
Define how peers communicate and exchange information over the network including rules, procedures, and message formats
|
||||
|
||||
Application layer protocols:
|
||||
- Web server to web client (HTTP)
|
||||
|
||||
(More examples for each layer in slides)
|
||||
|
||||
### Encapsulation
|
||||
Messages get passed down between each layer, and information gets appended to the header that gets delivered as the payload
|
@ -1,34 +1,34 @@
|
||||
Lecture Topic: Web Protocols
|
||||
# Encapsulation/Decapsulation
|
||||
Each layer of a network adds a header, that encapsulates the rest of the data
|
||||
When a packet is decapsulated, each layer strips away its header after it is done processing
|
||||
|
||||
# Network Applications
|
||||
Applications are *distributed* since they involve multiple end systems that exchange dat which each other
|
||||
|
||||
## Application Architectures
|
||||
Dictates how applications interact on a network
|
||||
- Client/Server architecture
|
||||
- Server: An always on host which services requests from many other hosts
|
||||
- Data is often stored on the server
|
||||
- Data centers can be used to create powerful virtual servers
|
||||
- Clients: Connect through to the server
|
||||
- Peer to peer architecture
|
||||
- No always on server
|
||||
- Arbitrary end systems directly communicate
|
||||
- Peers request service from other peers and provide service in return to other peers
|
||||
- Self scalability: New peers bring new service capacity as well as new service demands
|
||||
- Peers are intermittently connected and change IP addresses (complex management)
|
||||
- Examples include BitTorrent (P2P file sharing)
|
||||
|
||||
# Basics of Web and HTTP
|
||||
Invented by Tim Burners-Lee
|
||||
Client Server model
|
||||
- Client is a web browser that requests and receives, and then displays web objects
|
||||
- Server is a web server that sends objects in response to
|
||||
|
||||
## HTTP Request Structure
|
||||
Diagram in slides (Just info from Wikipedia)
|
||||
|
||||
## HTTP Responses
|
||||
Lecture Topic: Web Protocols
|
||||
# Encapsulation/Decapsulation
|
||||
Each layer of a network adds a header, that encapsulates the rest of the data
|
||||
When a packet is decapsulated, each layer strips away its header after it is done processing
|
||||
|
||||
# Network Applications
|
||||
Applications are *distributed* since they involve multiple end systems that exchange dat which each other
|
||||
|
||||
## Application Architectures
|
||||
Dictates how applications interact on a network
|
||||
- Client/Server architecture
|
||||
- Server: An always on host which services requests from many other hosts
|
||||
- Data is often stored on the server
|
||||
- Data centers can be used to create powerful virtual servers
|
||||
- Clients: Connect through to the server
|
||||
- Peer to peer architecture
|
||||
- No always on server
|
||||
- Arbitrary end systems directly communicate
|
||||
- Peers request service from other peers and provide service in return to other peers
|
||||
- Self scalability: New peers bring new service capacity as well as new service demands
|
||||
- Peers are intermittently connected and change IP addresses (complex management)
|
||||
- Examples include BitTorrent (P2P file sharing)
|
||||
|
||||
# Basics of Web and HTTP
|
||||
Invented by Tim Burners-Lee
|
||||
Client Server model
|
||||
- Client is a web browser that requests and receives, and then displays web objects
|
||||
- Server is a web server that sends objects in response to
|
||||
|
||||
## HTTP Request Structure
|
||||
Diagram in slides (Just info from Wikipedia)
|
||||
|
||||
## HTTP Responses
|
||||
List found in slides (just info from Wikipedia)
|
@ -1,17 +1,17 @@
|
||||
Lecture Topic: HTTP
|
||||
|
||||
# Conditional Get
|
||||
## Last-Modified
|
||||
You can check the Last-Modified header to only get contents if the contents are newer than the contents of the cache
|
||||
## ETag
|
||||
Use the hash of an object to check for modification to solve cache invalidation problem
|
||||
|
||||
## TCP and HTTP
|
||||
HTTP runs on top of TCP
|
||||
- Client initiates TCP request to server
|
||||
- Server accepts TCP connection
|
||||
- Clint confirms request
|
||||
- Three way handshake
|
||||
|
||||
## Non-persistent HTTP
|
||||
RTT = Round trip time
|
||||
Lecture Topic: HTTP
|
||||
|
||||
# Conditional Get
|
||||
## Last-Modified
|
||||
You can check the Last-Modified header to only get contents if the contents are newer than the contents of the cache
|
||||
## ETag
|
||||
Use the hash of an object to check for modification to solve cache invalidation problem
|
||||
|
||||
## TCP and HTTP
|
||||
HTTP runs on top of TCP
|
||||
- Client initiates TCP request to server
|
||||
- Server accepts TCP connection
|
||||
- Clint confirms request
|
||||
- Three way handshake
|
||||
|
||||
## Non-persistent HTTP
|
||||
RTT = Round trip time
|
||||
|
@ -1,26 +1,26 @@
|
||||
Lecture Topic: Advanced HTTP
|
||||
|
||||
# HTTP2
|
||||
Goal is to reduce latency, but keep the same methods, status codes, and header fields. Changes how data is formatted and transmitted between clients
|
||||
- Prioritises transmission of requested objects, and give a request a weight to each request to indicate priority
|
||||
- Server pushes additional objects to client, by sending multiple responses to a single client request, before receiving explicit
|
||||
- Head of line blocking
|
||||
- Before in HTTP 1.1 the request are blocked by large requests, as objects are delivered in sequence, and a workaround is to setup multiple TCP connections to request many objects at once
|
||||
- In version 2, objects are divided into *frames* and frame transmission is interleaved in a round robin fashion
|
||||
|
||||
# HTTP3
|
||||
Improved performance even further by using streaming, by using the "QUIC" protocol over a bare UDP connection
|
||||
|
||||
# HTML Versions
|
||||
- HTML 1.0 Is written by Tim Berners-Lee
|
||||
- HTML 1,2,3,4, 4.01 published in in 1999
|
||||
- XHTML is an extensible version of HTML, based on XML
|
||||
- HTML5
|
||||
- New elements, section for documents, figure for content flow, video, audio, canvas for multimedia
|
||||
- New APIs to prompt users, like alert(), confirm(), prompt(), and printing with print()
|
||||
HTML is a markup language that uses tags
|
||||
|
||||
(list and explanation of common html tags)
|
||||
|
||||
# CSS
|
||||
Lecture Topic: Advanced HTTP
|
||||
|
||||
# HTTP2
|
||||
Goal is to reduce latency, but keep the same methods, status codes, and header fields. Changes how data is formatted and transmitted between clients
|
||||
- Prioritises transmission of requested objects, and give a request a weight to each request to indicate priority
|
||||
- Server pushes additional objects to client, by sending multiple responses to a single client request, before receiving explicit
|
||||
- Head of line blocking
|
||||
- Before in HTTP 1.1 the request are blocked by large requests, as objects are delivered in sequence, and a workaround is to setup multiple TCP connections to request many objects at once
|
||||
- In version 2, objects are divided into *frames* and frame transmission is interleaved in a round robin fashion
|
||||
|
||||
# HTTP3
|
||||
Improved performance even further by using streaming, by using the "QUIC" protocol over a bare UDP connection
|
||||
|
||||
# HTML Versions
|
||||
- HTML 1.0 Is written by Tim Berners-Lee
|
||||
- HTML 1,2,3,4, 4.01 published in in 1999
|
||||
- XHTML is an extensible version of HTML, based on XML
|
||||
- HTML5
|
||||
- New elements, section for documents, figure for content flow, video, audio, canvas for multimedia
|
||||
- New APIs to prompt users, like alert(), confirm(), prompt(), and printing with print()
|
||||
HTML is a markup language that uses tags
|
||||
|
||||
(list and explanation of common html tags)
|
||||
|
||||
# CSS
|
||||
CSS defines the visual style of a document
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: File Distribution
|
||||
|
||||
Lecture Topic: File Distribution
|
||||
|
||||
Studying for test in CS2333, view info on slides
|
@ -1,7 +1,7 @@
|
||||
Lecture Topic: P2P and File sharing, DNS
|
||||
|
||||
BitTorrent uses the rarest first algorithm to distribute chunks
|
||||
|
||||
Sending chunks uses the tit-for-tat algorithm to evaluate neighbours for sending chunks
|
||||
|
||||
Lecture Topic: P2P and File sharing, DNS
|
||||
|
||||
BitTorrent uses the rarest first algorithm to distribute chunks
|
||||
|
||||
Sending chunks uses the tit-for-tat algorithm to evaluate neighbours for sending chunks
|
||||
|
||||
DNS is a distributed database implemented in a hierarchy of name-servers
|
@ -1 +1 @@
|
||||
Lecture Topic: DNS
|
||||
Lecture Topic: DNS
|
||||
|
@ -1,16 +1,16 @@
|
||||
Lecture Topic: Transport Layer overview
|
||||
|
||||
Socket information is a tuple, port number is important
|
||||
|
||||
# Transport Layer
|
||||
## UDP
|
||||
Connectionless transport protocol, no handshake, each segment is handled independently from others
|
||||
|
||||
UDP segment is very simple: an 8 byte header and a payload.
|
||||
It has a source port, destination port, length and checksum
|
||||
|
||||
The checksum in UDP is only for detection, not correction
|
||||
|
||||
As messages are transported through layers, they acquire new headers that wrap the existing packet
|
||||
|
||||
Lecture Topic: Transport Layer overview
|
||||
|
||||
Socket information is a tuple, port number is important
|
||||
|
||||
# Transport Layer
|
||||
## UDP
|
||||
Connectionless transport protocol, no handshake, each segment is handled independently from others
|
||||
|
||||
UDP segment is very simple: an 8 byte header and a payload.
|
||||
It has a source port, destination port, length and checksum
|
||||
|
||||
The checksum in UDP is only for detection, not correction
|
||||
|
||||
As messages are transported through layers, they acquire new headers that wrap the existing packet
|
||||
|
||||
Checksum in UDP is actually optional but is required in TCP and IPv4
|
@ -1,5 +1,5 @@
|
||||
Lecture Topic: UDP and Reliable Data Transfer
|
||||
|
||||
Uses 1's compliment sum to do check-summing (info in slides)
|
||||
|
||||
Lecture Topic: UDP and Reliable Data Transfer
|
||||
|
||||
Uses 1's compliment sum to do check-summing (info in slides)
|
||||
|
||||
You use a system where you can imply the NACK request in packets, for example in TCP, NACKs are implied
|
@ -1,4 +1,4 @@
|
||||
Lecture Topic: Reliable Data Transfer and TCP
|
||||
|
||||
Look at utilisation slides from notes, has formulas
|
||||
|
||||
Lecture Topic: Reliable Data Transfer and TCP
|
||||
|
||||
Look at utilisation slides from notes, has formulas
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic: TCP and TCP connection management
|
||||
|
||||
Lecture Topic: TCP and TCP connection management
|
||||
|
||||
Look at slides
|
@ -1,22 +1,22 @@
|
||||
Lecture Topic: Midterm Review and TCP
|
||||
# Midterm
|
||||
## Format:
|
||||
- Multiple Choice questions
|
||||
- 5 MCQ, 5 Short and Numerical Questions (ish)
|
||||
- Concept and numerical questions
|
||||
- No formula sheet, no unit table, need to memorise
|
||||
## Delivery:
|
||||
- Closed book, calculators needed
|
||||
- Monday Feb 26th
|
||||
- ITD 414 (even student number)
|
||||
- ITD 415 (odd student number)
|
||||
## Coverage:
|
||||
All material up to today
|
||||
- Chapter 1 - 3
|
||||
Preparation Material
|
||||
- Lecture Slides
|
||||
- Review Exam
|
||||
|
||||
## Review:
|
||||
Went over review slides, going too fast to take notes
|
||||
|
||||
Lecture Topic: Midterm Review and TCP
|
||||
# Midterm
|
||||
## Format:
|
||||
- Multiple Choice questions
|
||||
- 5 MCQ, 5 Short and Numerical Questions (ish)
|
||||
- Concept and numerical questions
|
||||
- No formula sheet, no unit table, need to memorise
|
||||
## Delivery:
|
||||
- Closed book, calculators needed
|
||||
- Monday Feb 26th
|
||||
- ITD 414 (even student number)
|
||||
- ITD 415 (odd student number)
|
||||
## Coverage:
|
||||
All material up to today
|
||||
- Chapter 1 - 3
|
||||
Preparation Material
|
||||
- Lecture Slides
|
||||
- Review Exam
|
||||
|
||||
## Review:
|
||||
Went over review slides, going too fast to take notes
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
Exam Review
|
||||
3 Hour Closed Book
|
||||
Calculator allowed and needed
|
||||
Q1 - Multiple Choice Questions (10 points)
|
||||
Q2-Q8 - Numerical and discussion questions (45 points)
|
||||
Prep Resources:
|
||||
Practice Test
|
||||
Slides
|
||||
Past Work
|
||||
Textbook
|
||||
|
||||
What will be on the exam is on review slides
|
||||
|
||||
Exam Review
|
||||
3 Hour Closed Book
|
||||
Calculator allowed and needed
|
||||
Q1 - Multiple Choice Questions (10 points)
|
||||
Q2-Q8 - Numerical and discussion questions (45 points)
|
||||
Prep Resources:
|
||||
Practice Test
|
||||
Slides
|
||||
Past Work
|
||||
Textbook
|
||||
|
||||
What will be on the exam is on review slides
|
||||
|
||||
|
@ -1,104 +1,104 @@
|
||||
CS4983: Senior Technical Report
|
||||
- Typically offered in Fall, Winter and Summer
|
||||
- 2 credit hour course
|
||||
- Counted as technical electives
|
||||
- Counts as 2 credit hours towards English writing requirement
|
||||
- Meant to be a critical analysis of some appropriate topic, a required component of a report that will be suitable literature survey, including a significant bibliography
|
||||
- 70-80 Hours typically
|
||||
- Same as CS4997, need to find a supervisor
|
||||
- Deliverables:
|
||||
- One page proposal
|
||||
- Two progress reports
|
||||
- The report, generally 10-20 pages
|
||||
- Seminar, normally 15 minutes plus 5 minutes for questions
|
||||
CS4997: Honors Thesis
|
||||
- Typically offered in Fall and Winter as an 8th month course, or a Summer course in 4 months
|
||||
- 4 Credit Hour
|
||||
- Technical electives for BCS students
|
||||
- 4 Credit hours towards 12 credit hour courses that have significant English writing component
|
||||
- Required for a BCS Honors
|
||||
- 5 out of 7 must be 3rd Year
|
||||
- 2 of Those must be 4th Year or higher
|
||||
- With a grade of B in this course
|
||||
- Cumulative GPA of 3.0, 3.5 for a First Class Honors
|
||||
- Good for students who wish to pursue graduate studies as it provides credits towards your graduate required credits
|
||||
- Original Research, under supervision and writing a thesis that summarizes the work completed
|
||||
- Typically 140-160 person-hours on CS4997
|
||||
- Responsible for selecting a thesis topic and obtaining agreement of a CS professor to act as supervisor, you may also work with an external supervisor but you will require an internal CS supervisor
|
||||
- Can *possibly* be done in group of two
|
||||
- Deliverables:
|
||||
- One page proposal, due early in the course, including an initial bibliography
|
||||
- A plan, break down your proposal into segments and phases, with an estimated amount of time for each phase
|
||||
- Two progress reports, due throughout the course
|
||||
- A thesis draft, which can range from and outline and a sample chapter to a preliminary version of the entire thesis
|
||||
- A thesis, generally expected to be 15-25 pages
|
||||
- A seminar, normally 20 minutes, plus 5 for questions
|
||||
CS4999: Directed Studies in Computer Science
|
||||
- Pursue directed studies in specific areas and topics related to Computer Science
|
||||
- More like a regular course than others, as more regular meetings with professor but still very much directed learning, and the course might only have one or two students in it
|
||||
- The students/prof will work out a plan/schedule, there can be assignments, tests, etc., but it needs to be approved
|
||||
- Recent Topics:
|
||||
- Intro to Mixed Reality
|
||||
- Advanced Video Game Development
|
||||
- Advanced Algorithmic Techniques
|
||||
- Introduction to Kubernetes
|
||||
|
||||
Some recent topics for CS4983 and CS4997
|
||||
- Ease of robot sociability in teleoperation
|
||||
- Exploration how representation robot teleoperator performance with health indicators can affect teleoperator behavior and experience
|
||||
- the story of my robot life
|
||||
- Infant cry detection on edge devices
|
||||
- An exploration of monolingual English definition with GPT2 and GPT3 models
|
||||
- Societal impacts of language models
|
||||
|
||||
## Gaia Info:
|
||||
Their project is "Magnetic Resonance on Networks"
|
||||
Says very important for graduate school
|
||||
Can look into getting work into journals
|
||||
|
||||
How they started with their report was asking profs about work they needed done, and got the project assigned to them
|
||||
|
||||
4th Year Parallelism course by Aubaniel is good apparently.
|
||||
|
||||
## Topics that are of interest to Profs
|
||||
Connor Wilson interested in computer science education or in credibility technology (believability of tech)
|
||||
Dr. Francis Palma related to software engineering and software quality:
|
||||
- Prioritizing issues in Agile Software Development
|
||||
- Do Readability in change-proneness of software systems relate?
|
||||
- Are poorly designed software systems more prone to design flaws/bugs
|
||||
Shadi:
|
||||
- Future proofing computer science education
|
||||
- Is generative AI reshaping the computer science job market
|
||||
|
||||
## Other Info
|
||||
There is a coordinator in the summer and winter, Michael Fleming and David Bremner respectively.
|
||||
|
||||
Designed to explore opportunities to explore some computer science topic that interests you, at a greater level than what you would see in a regular class.
|
||||
|
||||
All of these would involve making arrangements with faculty who would be willing to supervise your project.
|
||||
|
||||
## Finding a project
|
||||
In some cases, you might have a fully formed idea and you would need to find a faculty member to supervise this
|
||||
|
||||
In other cases a faculty member will have a well defined project and is looking for a student to complete it
|
||||
|
||||
In some cases, a student might have a general idea, and will meet with supervisors and will try to turn it into a more specific plan
|
||||
|
||||
Students and supervisors will meet regularly to provide guidance but it is expected that students will be able to work independently
|
||||
|
||||
## How to find a supervisor
|
||||
- Talk to profs you know
|
||||
- Go to the faculty and staff link on the UNB website, and find faculty members that have research interests that line up with yours
|
||||
- Attend Bits and Bites presentations
|
||||
|
||||
## My potential ideas
|
||||
Needs to be somewhat novel it seems:
|
||||
Concurrent Systems
|
||||
Operating Systems
|
||||
Scheduling
|
||||
Graphics
|
||||
|
||||
|
||||
4983 and 4999 might be better for those who are not interested in doing graduate school
|
||||
|
||||
CS4983: Senior Technical Report
|
||||
- Typically offered in Fall, Winter and Summer
|
||||
- 2 credit hour course
|
||||
- Counted as technical electives
|
||||
- Counts as 2 credit hours towards English writing requirement
|
||||
- Meant to be a critical analysis of some appropriate topic, a required component of a report that will be suitable literature survey, including a significant bibliography
|
||||
- 70-80 Hours typically
|
||||
- Same as CS4997, need to find a supervisor
|
||||
- Deliverables:
|
||||
- One page proposal
|
||||
- Two progress reports
|
||||
- The report, generally 10-20 pages
|
||||
- Seminar, normally 15 minutes plus 5 minutes for questions
|
||||
CS4997: Honors Thesis
|
||||
- Typically offered in Fall and Winter as an 8th month course, or a Summer course in 4 months
|
||||
- 4 Credit Hour
|
||||
- Technical electives for BCS students
|
||||
- 4 Credit hours towards 12 credit hour courses that have significant English writing component
|
||||
- Required for a BCS Honors
|
||||
- 5 out of 7 must be 3rd Year
|
||||
- 2 of Those must be 4th Year or higher
|
||||
- With a grade of B in this course
|
||||
- Cumulative GPA of 3.0, 3.5 for a First Class Honors
|
||||
- Good for students who wish to pursue graduate studies as it provides credits towards your graduate required credits
|
||||
- Original Research, under supervision and writing a thesis that summarizes the work completed
|
||||
- Typically 140-160 person-hours on CS4997
|
||||
- Responsible for selecting a thesis topic and obtaining agreement of a CS professor to act as supervisor, you may also work with an external supervisor but you will require an internal CS supervisor
|
||||
- Can *possibly* be done in group of two
|
||||
- Deliverables:
|
||||
- One page proposal, due early in the course, including an initial bibliography
|
||||
- A plan, break down your proposal into segments and phases, with an estimated amount of time for each phase
|
||||
- Two progress reports, due throughout the course
|
||||
- A thesis draft, which can range from and outline and a sample chapter to a preliminary version of the entire thesis
|
||||
- A thesis, generally expected to be 15-25 pages
|
||||
- A seminar, normally 20 minutes, plus 5 for questions
|
||||
CS4999: Directed Studies in Computer Science
|
||||
- Pursue directed studies in specific areas and topics related to Computer Science
|
||||
- More like a regular course than others, as more regular meetings with professor but still very much directed learning, and the course might only have one or two students in it
|
||||
- The students/prof will work out a plan/schedule, there can be assignments, tests, etc., but it needs to be approved
|
||||
- Recent Topics:
|
||||
- Intro to Mixed Reality
|
||||
- Advanced Video Game Development
|
||||
- Advanced Algorithmic Techniques
|
||||
- Introduction to Kubernetes
|
||||
|
||||
Some recent topics for CS4983 and CS4997
|
||||
- Ease of robot sociability in teleoperation
|
||||
- Exploration how representation robot teleoperator performance with health indicators can affect teleoperator behavior and experience
|
||||
- the story of my robot life
|
||||
- Infant cry detection on edge devices
|
||||
- An exploration of monolingual English definition with GPT2 and GPT3 models
|
||||
- Societal impacts of language models
|
||||
|
||||
## Gaia Info:
|
||||
Their project is "Magnetic Resonance on Networks"
|
||||
Says very important for graduate school
|
||||
Can look into getting work into journals
|
||||
|
||||
How they started with their report was asking profs about work they needed done, and got the project assigned to them
|
||||
|
||||
4th Year Parallelism course by Aubaniel is good apparently.
|
||||
|
||||
## Topics that are of interest to Profs
|
||||
Connor Wilson interested in computer science education or in credibility technology (believability of tech)
|
||||
Dr. Francis Palma related to software engineering and software quality:
|
||||
- Prioritizing issues in Agile Software Development
|
||||
- Do Readability in change-proneness of software systems relate?
|
||||
- Are poorly designed software systems more prone to design flaws/bugs
|
||||
Shadi:
|
||||
- Future proofing computer science education
|
||||
- Is generative AI reshaping the computer science job market
|
||||
|
||||
## Other Info
|
||||
There is a coordinator in the summer and winter, Michael Fleming and David Bremner respectively.
|
||||
|
||||
Designed to explore opportunities to explore some computer science topic that interests you, at a greater level than what you would see in a regular class.
|
||||
|
||||
All of these would involve making arrangements with faculty who would be willing to supervise your project.
|
||||
|
||||
## Finding a project
|
||||
In some cases, you might have a fully formed idea and you would need to find a faculty member to supervise this
|
||||
|
||||
In other cases a faculty member will have a well defined project and is looking for a student to complete it
|
||||
|
||||
In some cases, a student might have a general idea, and will meet with supervisors and will try to turn it into a more specific plan
|
||||
|
||||
Students and supervisors will meet regularly to provide guidance but it is expected that students will be able to work independently
|
||||
|
||||
## How to find a supervisor
|
||||
- Talk to profs you know
|
||||
- Go to the faculty and staff link on the UNB website, and find faculty members that have research interests that line up with yours
|
||||
- Attend Bits and Bites presentations
|
||||
|
||||
## My potential ideas
|
||||
Needs to be somewhat novel it seems:
|
||||
Concurrent Systems
|
||||
Operating Systems
|
||||
Scheduling
|
||||
Graphics
|
||||
|
||||
|
||||
4983 and 4999 might be better for those who are not interested in doing graduate school
|
||||
|
||||
4999 is more about taking your understanding of something to the next level, think OS III after taking OS I & II.
|
@ -1,66 +1,66 @@
|
||||
Lecture Topic: Probability
|
||||
|
||||
Experiment: An act where the outcome is subject to uncertainty
|
||||
|
||||
Sample space: The set of all possible outcomes of an experiment
|
||||
Example:
|
||||
- Flip a coin: $S = \{H, T\}$
|
||||
- Throw a dice: $S = \{1, 2, 3, 4, 5, 6\}$
|
||||
|
||||
Events: An event is a collection (subset) of outcomes contained in the sample space S
|
||||
$$
|
||||
S =
|
||||
\begin{Bmatrix}
|
||||
1,1 & 1,2 & 1,3 & 1,4 & 1,5 & 1,6 \\
|
||||
2,1 & 2,2 & 2,3 & 2,4 & 2,5 & 2,6 \\
|
||||
3,1 & 3,2 & 3,3 & 3,4 & 3,5 & 3,6 \\
|
||||
4,1 & 4,2 & 4,3 & 4,4 & 4,5 & 4,6 \\
|
||||
5,1 & 5,2 & 5,3 & 5,4 & 5,5 & 5,6 \\
|
||||
6,1 & 6,2 & 6,3 & 6,4 & 6,5 & 6,6
|
||||
\end{Bmatrix}
|
||||
$$
|
||||
A = First and second elements are the same
|
||||
$A = \{(1,1) \ (2,2) \ (3,3) \ (4,4) \ (5,5) \ (6,6)\}$
|
||||
|
||||
Union: Union of two events, A and B, ($A \cup B$)
|
||||
|
||||
Compliment: The compliment of an event A, is the set of all outcomes in S that are not in A
|
||||
|
||||
Mutually Exclusive Events: When and B have no common outcomes, they are said to be mutually exclusive or disjoint events, i.e. $P=(A \cap B) = 0$
|
||||
|
||||
Axiom:
|
||||
1. For event A, P(A) >= 0
|
||||
2. P(S) = 1
|
||||
3. (Need to look at slides to correct)
|
||||
(a) If $A_1, A_2 ... A_k$ is a finite collection of mutually exclusive events then: $$P(A_1 \cup A_2 \cup ... \cup A_k) = \sum^{\infty}_{i=1} P(A_i) $$
|
||||
(b) If $A_1, A_2 ... A_k$ is a finite collection of mutually exclusive events then: $$P(A_1 \cup A_2 \cup ... \cup A_k) = \sum^{\infty}_{i=1} P(A_i) $$
|
||||
Proposition:
|
||||
1. For event A, P(A) = 1 - P(A')
|
||||
2. If and and B are mutually exclusive then $P(A \cap B) = 0$
|
||||
|
||||
Permutation: Any ordered sequence of k objects taken from a set of n distinct objects is called a permutation of size k of the objects. The number of permutations of size k that can be constructed from n objects is denoted by $P_{k,n}$ and calculated by:
|
||||
$$
|
||||
P_{k,n} = \frac{n!}{(n-k)!}
|
||||
$$
|
||||
|
||||
Combination: Given a set of n, any unordered sub-set of k of the objects is called a combination. The set of combinations of size k that can be formed from n distinct objected will be denoted by $C_{k,n}$ and calculated by:
|
||||
$$
|
||||
C_{k,n} = \frac{n!}{k!(n-k)!} = \begin{pmatrix}n \\ k \end{pmatrix}
|
||||
$$
|
||||
|
||||
(NEED TO REVIEW THIS)
|
||||
|
||||
Example: S = {1, 2, 3, 4, 5}
|
||||
$A_1$ = {1,2,3}, $A_2$ = {2,3,5}, $A_3$ = {2,3,1}
|
||||
|
||||
Permutation:
|
||||
5! = 120
|
||||
(5-3)! = 2! = 2
|
||||
120 / 2 = 60
|
||||
|
||||
Combination:
|
||||
5!/2!3! = 60/6 = 10
|
||||
0! = 1
|
||||
5 out of 5
|
||||
5!/(5-5)! = 120/1 = 120
|
||||
|
||||
Lecture Topic: Probability
|
||||
|
||||
Experiment: An act where the outcome is subject to uncertainty
|
||||
|
||||
Sample space: The set of all possible outcomes of an experiment
|
||||
Example:
|
||||
- Flip a coin: $S = \{H, T\}$
|
||||
- Throw a dice: $S = \{1, 2, 3, 4, 5, 6\}$
|
||||
|
||||
Events: An event is a collection (subset) of outcomes contained in the sample space S
|
||||
$$
|
||||
S =
|
||||
\begin{Bmatrix}
|
||||
1,1 & 1,2 & 1,3 & 1,4 & 1,5 & 1,6 \\
|
||||
2,1 & 2,2 & 2,3 & 2,4 & 2,5 & 2,6 \\
|
||||
3,1 & 3,2 & 3,3 & 3,4 & 3,5 & 3,6 \\
|
||||
4,1 & 4,2 & 4,3 & 4,4 & 4,5 & 4,6 \\
|
||||
5,1 & 5,2 & 5,3 & 5,4 & 5,5 & 5,6 \\
|
||||
6,1 & 6,2 & 6,3 & 6,4 & 6,5 & 6,6
|
||||
\end{Bmatrix}
|
||||
$$
|
||||
A = First and second elements are the same
|
||||
$A = \{(1,1) \ (2,2) \ (3,3) \ (4,4) \ (5,5) \ (6,6)\}$
|
||||
|
||||
Union: Union of two events, A and B, ($A \cup B$)
|
||||
|
||||
Compliment: The compliment of an event A, is the set of all outcomes in S that are not in A
|
||||
|
||||
Mutually Exclusive Events: When and B have no common outcomes, they are said to be mutually exclusive or disjoint events, i.e. $P=(A \cap B) = 0$
|
||||
|
||||
Axiom:
|
||||
1. For event A, P(A) >= 0
|
||||
2. P(S) = 1
|
||||
3. (Need to look at slides to correct)
|
||||
(a) If $A_1, A_2 ... A_k$ is a finite collection of mutually exclusive events then: $$P(A_1 \cup A_2 \cup ... \cup A_k) = \sum^{\infty}_{i=1} P(A_i) $$
|
||||
(b) If $A_1, A_2 ... A_k$ is a finite collection of mutually exclusive events then: $$P(A_1 \cup A_2 \cup ... \cup A_k) = \sum^{\infty}_{i=1} P(A_i) $$
|
||||
Proposition:
|
||||
1. For event A, P(A) = 1 - P(A')
|
||||
2. If and and B are mutually exclusive then $P(A \cap B) = 0$
|
||||
|
||||
Permutation: Any ordered sequence of k objects taken from a set of n distinct objects is called a permutation of size k of the objects. The number of permutations of size k that can be constructed from n objects is denoted by $P_{k,n}$ and calculated by:
|
||||
$$
|
||||
P_{k,n} = \frac{n!}{(n-k)!}
|
||||
$$
|
||||
|
||||
Combination: Given a set of n, any unordered sub-set of k of the objects is called a combination. The set of combinations of size k that can be formed from n distinct objected will be denoted by $C_{k,n}$ and calculated by:
|
||||
$$
|
||||
C_{k,n} = \frac{n!}{k!(n-k)!} = \begin{pmatrix}n \\ k \end{pmatrix}
|
||||
$$
|
||||
|
||||
(NEED TO REVIEW THIS)
|
||||
|
||||
Example: S = {1, 2, 3, 4, 5}
|
||||
$A_1$ = {1,2,3}, $A_2$ = {2,3,5}, $A_3$ = {2,3,1}
|
||||
|
||||
Permutation:
|
||||
5! = 120
|
||||
(5-3)! = 2! = 2
|
||||
120 / 2 = 60
|
||||
|
||||
Combination:
|
||||
5!/2!3! = 60/6 = 10
|
||||
0! = 1
|
||||
5 out of 5
|
||||
5!/(5-5)! = 120/1 = 120
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
Lecture Topic:
|
||||
|
||||
Lecture Topic:
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
Lecture Topic: Conditional Probability
|
||||
|
||||
\| (vertical bar) = "given that"
|
||||
e.g. P(A|B) = probability of A given that B
|
||||
# Question 3
|
||||
Lecture Topic: Conditional Probability
|
||||
|
||||
\| (vertical bar) = "given that"
|
||||
e.g. P(A|B) = probability of A given that B
|
||||
# Question 3
|
||||
|
@ -1,17 +1,17 @@
|
||||
Lecture Topic: Random Variable
|
||||
|
||||
Random Variable: Variable with a probability attributed to it
|
||||
Regular Variable: Variable that is more intrinsic, like height
|
||||
Discrete Variable: Variable where each possible value is a finite set or is an infinite set where each element is it's own distinct element, eg first element, second element etc.
|
||||
|
||||
Probability Mass Function (pmf): The pmf of a discrete rv is defined for every number x by p(x) = P(X=x)
|
||||
|
||||
Mass function criteria:
|
||||
- All probabilities have to been between 0 and 1
|
||||
- The total probabilities have to equal 1
|
||||
|
||||
Expected Value: The summation of the value and the probability of x over the entire set
|
||||
Var?: Variance calculate the expected value but square the variable, then subtract the squared expected value
|
||||
|
||||
|
||||
|
||||
Lecture Topic: Random Variable
|
||||
|
||||
Random Variable: Variable with a probability attributed to it
|
||||
Regular Variable: Variable that is more intrinsic, like height
|
||||
Discrete Variable: Variable where each possible value is a finite set or is an infinite set where each element is it's own distinct element, eg first element, second element etc.
|
||||
|
||||
Probability Mass Function (pmf): The pmf of a discrete rv is defined for every number x by p(x) = P(X=x)
|
||||
|
||||
Mass function criteria:
|
||||
- All probabilities have to been between 0 and 1
|
||||
- The total probabilities have to equal 1
|
||||
|
||||
Expected Value: The summation of the value and the probability of x over the entire set
|
||||
Var?: Variance calculate the expected value but square the variable, then subtract the squared expected value
|
||||
|
||||
|
||||
|
||||
|
@ -1,24 +1,24 @@
|
||||
Lecture Topic: Binomial Distribution
|
||||
|
||||
# Requirements of Binomial Experiments
|
||||
- (n) independent trials
|
||||
- Possible outcomes: success (S) and failure (F)
|
||||
- Success probability (p)
|
||||
|
||||
## Formula
|
||||
The pmf of binomial rv $X$ depends on two parameters $n$ and $p$. We denote the pmf by $b(x; n,p)$
|
||||
$$b(x;n,p) = \{
|
||||
\begin{pmatrix}
|
||||
n \\
|
||||
p \\
|
||||
\end{pmatrix}
|
||||
p^x(1-p)^{n-x}
|
||||
\}$$
|
||||
$x = 0, 1, 2, ..., n$
|
||||
|
||||
If X ~ b(x; n,p), then
|
||||
1. E(X) = np
|
||||
2. V(X) = np(1-p)
|
||||
|
||||
# Examples
|
||||
Lecture Topic: Binomial Distribution
|
||||
|
||||
# Requirements of Binomial Experiments
|
||||
- (n) independent trials
|
||||
- Possible outcomes: success (S) and failure (F)
|
||||
- Success probability (p)
|
||||
|
||||
## Formula
|
||||
The pmf of binomial rv $X$ depends on two parameters $n$ and $p$. We denote the pmf by $b(x; n,p)$
|
||||
$$b(x;n,p) = \{
|
||||
\begin{pmatrix}
|
||||
n \\
|
||||
p \\
|
||||
\end{pmatrix}
|
||||
p^x(1-p)^{n-x}
|
||||
\}$$
|
||||
$x = 0, 1, 2, ..., n$
|
||||
|
||||
If X ~ b(x; n,p), then
|
||||
1. E(X) = np
|
||||
2. V(X) = np(1-p)
|
||||
|
||||
# Examples
|
||||
Examples in posted pdf
|
@ -1,5 +1,5 @@
|
||||
Lecture Topic: Poisson
|
||||
|
||||
Was too interested in configuring neovim, lmao
|
||||
|
||||
Lecture Topic: Poisson
|
||||
|
||||
Was too interested in configuring neovim, lmao
|
||||
|
||||
Look at slides for info, this one seemed important
|
@ -1,3 +1,3 @@
|
||||
Lecture Topic:
|
||||
|
||||
Lecture Topic:
|
||||
|
||||
Listened to lecturer and didn't take notes
|
@ -1,9 +1,9 @@
|
||||
Lecture Topic: Continious r.v
|
||||
|
||||
Midterm Review session by math learning center
|
||||
Midterm review will be on feb 16, friday
|
||||
|
||||
For evaluating the probability of a distribution of a continious random variable X, you need to integrate the probability
|
||||
|
||||
The probability of a function from - infinity to + infinity must equal 1
|
||||
|
||||
Lecture Topic: Continious r.v
|
||||
|
||||
Midterm Review session by math learning center
|
||||
Midterm review will be on feb 16, friday
|
||||
|
||||
For evaluating the probability of a distribution of a continious random variable X, you need to integrate the probability
|
||||
|
||||
The probability of a function from - infinity to + infinity must equal 1
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
Lecture Topic: Some Questions
|
||||
Lecture will be short as lecturer needs to leave at 10:00
|
||||
|
||||
First thing to do is to convert x to Z, for solving a standard deviation problem
|
||||
|
||||
$$Z = \frac{x-\mu}{\delta}$$
|
||||
|
||||
Lecture Topic: Some Questions
|
||||
Lecture will be short as lecturer needs to leave at 10:00
|
||||
|
||||
First thing to do is to convert x to Z, for solving a standard deviation problem
|
||||
|
||||
$$Z = \frac{x-\mu}{\delta}$$
|
||||
|
||||
Mean is 0 and variance is 1 is the conditions for normal distribution (?) Something standard deviation must be 1 (?) Look into
|
@ -1 +1 @@
|
||||
Lecture Topic: Binomial Distribution
|
||||
Lecture Topic: Binomial Distribution
|
||||
|
@ -1,36 +1,36 @@
|
||||
Lecture Topic: Midterm Review 1
|
||||
|
||||
Will be Wednesday, Feb 21, 2024
|
||||
Covers Lectures 1-13, Chapters 1-3
|
||||
All multiple choice, 18-20 Questions for 50 mins, 16-17 as it is 45 minutes
|
||||
45 Minutes, Show up early
|
||||
Choose closest answer if answer does not line up
|
||||
YOU NEED A CALCULATOR FOR THIS
|
||||
|
||||
For your formula sheet, you can put anything on it, 1 regular size sheet (11x8.5), both sides are allowed to be written on.
|
||||
|
||||
Questions from base theorem will likely take longer than others, so look for questions that are easier to solve first
|
||||
|
||||
## Basic Statistics
|
||||
Mean - $\frac{\sum x}{n}$
|
||||
Median - Middle Most value, even is the average of two middle values
|
||||
Mode - Most frequent value
|
||||
Quartile
|
||||
- Q1 - 25%, In between 0 and median
|
||||
- Q2 = Median
|
||||
- Q3 = 75% In Between median and 100
|
||||
- Q4 = 100%
|
||||
|
||||
## Variance
|
||||
IQR - Inter quartile range - Q3 - Q1
|
||||
Variance
|
||||
- $\frac{1}{n-1} \sum (x_i - x)^2$ or $\frac{\sum(x_i - x)^2}{n-1}$
|
||||
- $\frac{1}{n-1} \sum (x_i^2) - nx^2$ Ask about this, didn't quite catch on board
|
||||
- must be positive
|
||||
std deviation - Square root of variance, $\sqrt{V(x)}$
|
||||
Upper and lower fence - Outlier limits
|
||||
- UF = Q3 + 15 IQR Ask about this, could have been 1 times 5, board was messy
|
||||
- LF = Q1- 15 IQR Ask about this, could have been 1 times 5, board was messy
|
||||
Z score - $\frac{x - \mu}{\sigma}$
|
||||
Coefficient of variation / CV = $\frac{\mu}{\sigma} * 100$
|
||||
Lecture Topic: Midterm Review 1
|
||||
|
||||
Will be Wednesday, Feb 21, 2024
|
||||
Covers Lectures 1-13, Chapters 1-3
|
||||
All multiple choice, 18-20 Questions for 50 mins, 16-17 as it is 45 minutes
|
||||
45 Minutes, Show up early
|
||||
Choose closest answer if answer does not line up
|
||||
YOU NEED A CALCULATOR FOR THIS
|
||||
|
||||
For your formula sheet, you can put anything on it, 1 regular size sheet (11x8.5), both sides are allowed to be written on.
|
||||
|
||||
Questions from base theorem will likely take longer than others, so look for questions that are easier to solve first
|
||||
|
||||
## Basic Statistics
|
||||
Mean - $\frac{\sum x}{n}$
|
||||
Median - Middle Most value, even is the average of two middle values
|
||||
Mode - Most frequent value
|
||||
Quartile
|
||||
- Q1 - 25%, In between 0 and median
|
||||
- Q2 = Median
|
||||
- Q3 = 75% In Between median and 100
|
||||
- Q4 = 100%
|
||||
|
||||
## Variance
|
||||
IQR - Inter quartile range - Q3 - Q1
|
||||
Variance
|
||||
- $\frac{1}{n-1} \sum (x_i - x)^2$ or $\frac{\sum(x_i - x)^2}{n-1}$
|
||||
- $\frac{1}{n-1} \sum (x_i^2) - nx^2$ Ask about this, didn't quite catch on board
|
||||
- must be positive
|
||||
std deviation - Square root of variance, $\sqrt{V(x)}$
|
||||
Upper and lower fence - Outlier limits
|
||||
- UF = Q3 + 15 IQR Ask about this, could have been 1 times 5, board was messy
|
||||
- LF = Q1- 15 IQR Ask about this, could have been 1 times 5, board was messy
|
||||
Z score - $\frac{x - \mu}{\sigma}$
|
||||
Coefficient of variation / CV = $\frac{\mu}{\sigma} * 100$
|
||||
If sigma is not know, replace with S, sample standard deviation
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user