generated from JuliaPluto/static-export-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
workflow-tips.html
74 lines (62 loc) · 28.3 KB
/
workflow-tips.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width" />
<title>⚡ Pluto.jl ⚡</title>
<meta charset="utf-8" />
<script>
console.log("Pluto.jl, by Fons van der Plas (https://github.com/fonsp) and Mikołaj Bochenski (https://github.com/malyvsen) 🌈")
</script>
<meta name="author" content="Fons van der Plas; Mikołaj Bochenski" />
<link rel="license" href="https://github.com/fonsp/Pluto.jl/blob/main/LICENSE" />
<meta name="theme-color" content="#ffffff" />
<link rel="icon" type="image/png" sizes="16x16" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/img/favicon-16x16.png" />
<link rel="icon" type="image/png" sizes="32x32" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/img/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="96x96" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/img/favicon-96x96.png" />
<meta name="description" content="Pluto.jl notebooks" />
<link rel="pluto-logo-big" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/img/logo.svg" />
<link rel="pluto-logo-small" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/img/favicon_unsaturated.svg" />
<link rel="pluto-sw" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/sw.js" />
<script>
navigator.serviceWorker?.register(document.head.querySelector("link[rel='pluto-sw']").getAttribute("href"), { scope: "./" }).catch(console.warn)
</script>
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/@observablehq/stdlib@3.3.1/dist/stdlib.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/iframe-resizer@4.2.11/js/iframeResizer.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/lib/codemirror.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/mode/julia/julia.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/mode/loadmode.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/mode/meta.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/hint/show-hint.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/display/placeholder.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/edit/matchbrackets.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/runmode/runmode.min.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/comment/comment.min.js" defer></script>
<!-- <script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/edit/closebrackets.min.js" defer></script> -->
<!-- <script src="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/search/searchcursor.min.js" defer></script> -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/lib/codemirror.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/codemirror@5.60.0/addon/hint/show-hint.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/editor.css" type="text/css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/hide-ui.css" type="text/css" media="all" data-pluto-file="hide-ui">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/binder.css" type="text/css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/treeview.css" type="text/css" />
<link rel="preload" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/juliamono.css" as="style">
<link rel="preload" href="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/vollkorn.css" as="style">
<!-- The instant feedback form at the bottom of the page uses Google Firestore to save feedback. -->
<script src="https://cdn.jsdelivr.net/npm/firebase@7.13.1/firebase-app.js" defer></script>
<script src="https://cdn.jsdelivr.net/npm/firebase@7.13.1/firebase-firestore.js" defer></script>
<script data-pluto-file="launch-parameters">
window.pluto_notebookfile = "workflow-tips.jl"
window.pluto_disable_ui = true
window.pluto_statefile = "data:;base64,i7FjZWxsX2RlcGVuZGVuY2llc4zZJGU4ZTAyMTM5LWY4Y2QtNDNkNy05Y2U0LTMzOTM0NDJhNWNkNYS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJGU4ZTAyMTM5LWY4Y2QtNDNkNy05Y2U0LTMzOTM0NDJhNWNkNbRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJDBlYTcxNjYyLTJkZWMtNGQwOC04MjY1LTg0Mjk2ZDIyOThlM4S0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJDBlYTcxNjYyLTJkZWMtNGQwOC04MjY1LTg0Mjk2ZDIyOThlM7Rkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJDEwZTlmNDZjLTc2M2QtNGI0NS1hN2YwLTczNjMyOGMzMzkxYYS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJDEwZTlmNDZjLTc2M2QtNGI0NS1hN2YwLTczNjMyOGMzMzkxYbRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGNlNzlmNzgxLTQzYTgtNDg2Yi1iNGUwLThkOTNiNzA2YTYxZYS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJGNlNzlmNzgxLTQzYTgtNDg2Yi1iNGUwLThkOTNiNzA2YTYxZbRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJDE3MmU1ODE2LTRlMzMtNDdkMC1hNzZkLWUyMTgyNzhmYmIxZoS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJDE3MmU1ODE2LTRlMzMtNDdkMC1hNzZkLWUyMTgyNzhmYmIxZrRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJDRjMWE3ODgwLTkxMDUtNDk1Yy1iYzhjLWU1YjViOGRkMWQwZoS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJDRjMWE3ODgwLTkxMDUtNDk1Yy1iYzhjLWU1YjViOGRkMWQwZrRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGUyMWFkYTE4LTUzYzAtNDIyNC05Mzg5LTE4MTczMjFhN2RiYYS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJGUyMWFkYTE4LTUzYzAtNDIyNC05Mzg5LTE4MTczMjFhN2RiYbRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJDAwOTBmNjJlLTJjYTAtNDdmMS04YTk5LTA5ZWU4YmY3OTIyOYS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJDAwOTBmNjJlLTJjYTAtNDdmMS04YTk5LTA5ZWU4YmY3OTIyObRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGQ1OGRhOGEyLTZiMWEtNGE5OS04NTg2LWE1NWMxN2Y3MzI0NIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJGQ1OGRhOGEyLTZiMWEtNGE5OS04NTg2LWE1NWMxN2Y3MzI0NLRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGE3NmJlNDIyLWY2OTgtNDA3Ni1hOGU4LWM0MDcyMTk3YmQzOIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJGE3NmJlNDIyLWY2OTgtNDA3Ni1hOGU4LWM0MDcyMTk3YmQzOLRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGZkZDIxOWZkLWJhZjctNDUwNy1hMWNkLTg0YzEwNzE4ZjkxNIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJGZkZDIxOWZkLWJhZjctNDUwNy1hMWNkLTg0YzEwNzE4ZjkxNLRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJDJmYjlmNmUwLTI1MWUtNGUyOC1hYzE3LTNiYzkyYmRkNGQ4MoS0cHJlY2VkZW5jZV9oZXVyaXN0aWMIp2NlbGxfaWTZJDJmYjlmNmUwLTI1MWUtNGUyOC1hYzE3LTNiYzkyYmRkNGQ4MrRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJC0Y2VsbF9leGVjdXRpb25fb3JkZXKc2SRlMjFhZGExOC01M2MwLTQyMjQtOTM4OS0xODE3MzIxYTdkYmHZJDE3MmU1ODE2LTRlMzMtNDdkMC1hNzZkLWUyMTgyNzhmYmIxZtkkZmRkMjE5ZmQtYmFmNy00NTA3LWExY2QtODRjMTA3MThmOTE02SQxMGU5ZjQ2Yy03NjNkLTRiNDUtYTdmMC03MzYzMjhjMzM5MWHZJGNlNzlmNzgxLTQzYTgtNDg2Yi1iNGUwLThkOTNiNzA2YTYxZdkkNGMxYTc4ODAtOTEwNS00OTVjLWJjOGMtZTViNWI4ZGQxZDBm2SRhNzZiZTQyMi1mNjk4LTQwNzYtYThlOC1jNDA3MjE5N2JkMzjZJGU4ZTAyMTM5LWY4Y2QtNDNkNy05Y2U0LTMzOTM0NDJhNWNkNdkkMmZiOWY2ZTAtMjUxZS00ZTI4LWFjMTctM2JjOTJiZGQ0ZDgy2SQwMDkwZjYyZS0yY2EwLTQ3ZjEtOGE5OS0wOWVlOGJmNzkyMjnZJDBlYTcxNjYyLTJkZWMtNGQwOC04MjY1LTg0Mjk2ZDIyOThlM9kkZDU4ZGE4YTItNmIxYS00YTk5LTg1ODYtYTU1YzE3ZjczMjQ0rnByb2Nlc3Nfc3RhdHVzpXJlYWR5pHBhdGjZVS9ob21lL3J1bm5lci93b3JrL2p1bGlhLWRvY3Mtd2l0aC1wbHV0by9qdWxpYS1kb2NzLXdpdGgtcGx1dG8vbWFudWFsL3dvcmtmbG93LXRpcHMuamyqY2VsbF9vcmRlcpzZJGUyMWFkYTE4LTUzYzAtNDIyNC05Mzg5LTE4MTczMjFhN2RiYdkkMTcyZTU4MTYtNGUzMy00N2QwLWE3NmQtZTIxODI3OGZiYjFm2SRmZGQyMTlmZC1iYWY3LTQ1MDctYTFjZC04NGMxMDcxOGY5MTTZJDEwZTlmNDZjLTc2M2QtNGI0NS1hN2YwLTczNjMyOGMzMzkxYdkkY2U3OWY3ODEtNDNhOC00ODZiLWI0ZTAtOGQ5M2I3MDZhNjFl2SQ0YzFhNzg4MC05MTA1LTQ5NWMtYmM4Yy1lNWI1YjhkZDFkMGbZJGE3NmJlNDIyLWY2OTgtNDA3Ni1hOGU4LWM0MDcyMTk3YmQzONkkZThlMDIxMzktZjhjZC00M2Q3LTljZTQtMzM5MzQ0MmE1Y2Q12SQyZmI5ZjZlMC0yNTFlLTRlMjgtYWMxNy0zYmM5MmJkZDRkODLZJDAwOTBmNjJlLTJjYTAtNDdmMS04YTk5LTA5ZWU4YmY3OTIyOdkkMGVhNzE2NjItMmRlYy00ZDA4LTgyNjUtODQyOTZkMjI5OGUz2SRkNThkYThhMi02YjFhLTRhOTktODU4Ni1hNTVjMTdmNzMyNDSrY2VsbF9pbnB1dHOM2SRlOGUwMjEzOS1mOGNkLTQzZDctOWNlNC0zMzkzNDQyYTVjZDWDp2NlbGxfaWTZJGU4ZTAyMTM5LWY4Y2QtNDNkNy05Y2U0LTMzOTM0NDJhNWNkNaRjb2Rl2SNtZCIiIgojIyBCcm93c2VyLWJhc2VkIHdvcmtmbG93CiIiIqtjb2RlX2ZvbGRlZMPZJDBlYTcxNjYyLTJkZWMtNGQwOC04MjY1LTg0Mjk2ZDIyOThlM4OnY2VsbF9pZNkkMGVhNzE2NjItMmRlYy00ZDA4LTgyNjUtODQyOTZkMjI5OGUzpGNvZGXaAqptZCIiIgpXaGV0aGVyIHlvdSdyZSBhdCB0aGUgUkVQTCBvciBpbiBJSnVsaWEsIHlvdSBjYW4gdHlwaWNhbGx5IGltcHJvdmUgeW91ciBkZXZlbG9wbWVudCBleHBlcmllbmNlIHdpdGggW1JldmlzZV0oaHR0cHM6Ly9naXRodWIuY29tL3RpbWhvbHkvUmV2aXNlLmpsKS4gSXQgaXMgY29tbW9uIHRvIGNvbmZpZ3VyZSBSZXZpc2UgdG8gc3RhcnQgd2hlbmV2ZXIganVsaWEgaXMgc3RhcnRlZCwgYXMgcGVyIHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIFtSZXZpc2UgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly90aW1ob2x5LmdpdGh1Yi5pby9SZXZpc2Uuamwvc3RhYmxlLykuIE9uY2UgY29uZmlndXJlZCwgUmV2aXNlIHdpbGwgdHJhY2sgY2hhbmdlcyB0byBmaWxlcyBpbiBhbnkgbG9hZGVkIG1vZHVsZXMsIGFuZCB0byBhbnkgZmlsZXMgbG9hZGVkIGluIHRvIHRoZSBSRVBMIHdpdGggYGluY2x1ZGV0YCAoYnV0IG5vdCB3aXRoIHBsYWluIGBpbmNsdWRlYCk7IHlvdSBjYW4gdGhlbiBlZGl0IHRoZSBmaWxlcyBhbmQgdGhlIGNoYW5nZXMgdGFrZSBlZmZlY3Qgd2l0aG91dCByZXN0YXJ0aW5nIHlvdXIganVsaWEgc2Vzc2lvbi4gQSBzdGFuZGFyZCB3b3JrZmxvdyBpcyBzaW1pbGFyIHRvIHRoZSBSRVBMLWJhc2VkIHdvcmtmbG93IGFib3ZlLCB3aXRoIHRoZSBmb2xsb3dpbmcgbW9kaWZpY2F0aW9uczoKIiIiq2NvZGVfZm9sZGVkw9kkMTBlOWY0NmMtNzYzZC00YjQ1LWE3ZjAtNzM2MzI4YzMzOTFhg6djZWxsX2lk2SQxMGU5ZjQ2Yy03NjNkLTRiNDUtYTdmMC03MzYzMjhjMzM5MWGkY29kZdnqbWQiIiIKQXMgYWxyZWFkeSBlbGFib3JhdGVkIGluIFtUaGUgSnVsaWEgUkVQTF0oQHJlZiksIEp1bGlhJ3MgUkVQTCBwcm92aWRlcyByaWNoIGZ1bmN0aW9uYWxpdHkgdGhhdCBmYWNpbGl0YXRlcyBhbiBlZmZpY2llbnQgaW50ZXJhY3RpdmUgd29ya2Zsb3cuIEhlcmUgYXJlIHNvbWUgdGlwcyB0aGF0IG1pZ2h0IGZ1cnRoZXIgZW5oYW5jZSB5b3VyIGV4cGVyaWVuY2UgYXQgdGhlIGNvbW1hbmQgbGluZS4KIiIiq2NvZGVfZm9sZGVkw9kkY2U3OWY3ODEtNDNhOC00ODZiLWI0ZTAtOGQ5M2I3MDZhNjFlg6djZWxsX2lk2SRjZTc5Zjc4MS00M2E4LTQ4NmItYjRlMC04ZDkzYjcwNmE2MWWkY29kZdkqbWQiIiIKIyMjIEEgYmFzaWMgZWRpdG9yL1JFUEwgd29ya2Zsb3cKIiIiq2NvZGVfZm9sZGVkw9kkMTcyZTU4MTYtNGUzMy00N2QwLWE3NmQtZTIxODI3OGZiYjFmg6djZWxsX2lk2SQxNzJlNTgxNi00ZTMzLTQ3ZDAtYTc2ZC1lMjE4Mjc4ZmJiMWakY29kZdlAbWQiIiIKSGVyZSBhcmUgc29tZSB0aXBzIGZvciB3b3JraW5nIHdpdGggSnVsaWEgZWZmaWNpZW50bHkuCiIiIqtjb2RlX2ZvbGRlZMPZJDRjMWE3ODgwLTkxMDUtNDk1Yy1iYzhjLWU1YjViOGRkMWQwZoOnY2VsbF9pZNkkNGMxYTc4ODAtOTEwNS00OTVjLWJjOGMtZTViNWI4ZGQxZDBmpGNvZGXZpG1kIiIiClRoZSBtb3N0IGJhc2ljIEp1bGlhIHdvcmtmbG93cyBpbnZvbHZlIHVzaW5nIGEgdGV4dCBlZGl0b3IgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgYGp1bGlhYCBjb21tYW5kIGxpbmUuIEEgY29tbW9uIHBhdHRlcm4gaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBlbGVtZW50czoKIiIiq2NvZGVfZm9sZGVkw9kkZTIxYWRhMTgtNTNjMC00MjI0LTkzODktMTgxNzMyMWE3ZGJhg6djZWxsX2lk2SRlMjFhZGExOC01M2MwLTQyMjQtOTM4OS0xODE3MzIxYTdkYmGkY29kZdkybWQiIiIKIyBbV29ya2Zsb3cgVGlwc10oQGlkIG1hbi13b3JrZmxvdy10aXBzKQoiIiKrY29kZV9mb2xkZWTD2SQwMDkwZjYyZS0yY2EwLTQ3ZjEtOGE5OS0wOWVlOGJmNzkyMjmDp2NlbGxfaWTZJDAwOTBmNjJlLTJjYTAtNDdmMS04YTk5LTA5ZWU4YmY3OTIyOaRjb2Rl2SNtZCIiIgojIyBSZXZpc2UtYmFzZWQgd29ya2Zsb3dzCiIiIqtjb2RlX2ZvbGRlZMPZJGQ1OGRhOGEyLTZiMWEtNGE5OS04NTg2LWE1NWMxN2Y3MzI0NIOnY2VsbF9pZNkkZDU4ZGE4YTItNmIxYS00YTk5LTg1ODYtYTU1YzE3ZjczMjQ0pGNvZGXaB6xtZCIiIgoxLiBQdXQgeW91ciBjb2RlIGluIGEgbW9kdWxlIHNvbWV3aGVyZSBvbiB5b3VyIGxvYWQgcGF0aC4gVGhlcmUgYXJlIHNldmVyYWwgb3B0aW9ucyBmb3IgYWNoaWV2aW5nIHRoaXMsIG9mIHdoaWNoIHR3byByZWNvbW1lbmRlZCBjaG9pY2VzIGFyZToKCiAgICAgICogRm9yIGxvbmctdGVybSBwcm9qZWN0cywgdXNlIFtQa2dUZW1wbGF0ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlbmlhL1BrZ1RlbXBsYXRlcy5qbCk6CgogICAgICAgIGBgYGp1bGlhCiAgICAgICAgdXNpbmcgUGtnVGVtcGxhdGVzCiAgICAgICAgdCA9IFRlbXBsYXRlKCkKICAgICAgICB0KFwiTXlQa2dcIikKICAgICAgICBgYGAKCiAgICAgICAgVGhpcyB3aWxsIGNyZWF0ZSBhIGJsYW5rIHBhY2thZ2UsIGBcIk15UGtnXCJgLCBpbiB5b3VyIGAuanVsaWEvZGV2YCBkaXJlY3RvcnkuIE5vdGUgdGhhdCBQa2dUZW1wbGF0ZXMgYWxsb3dzIHlvdSB0byBjb250cm9sIG1hbnkgZGlmZmVyZW50IG9wdGlvbnMgdGhyb3VnaCBpdHMgYFRlbXBsYXRlYCBjb25zdHJ1Y3Rvci4KCiAgICAgICAgSW4gc3RlcCAyIGJlbG93LCBlZGl0IGBNeVBrZy9zcmMvTXlQa2cuamxgIHRvIGNoYW5nZSB0aGUgc291cmNlIGNvZGUsIGFuZCBgTXlQa2cvdGVzdC9ydW50ZXN0cy5qbGAgZm9yIHRoZSB0ZXN0cy4KICAgICAgKiBGb3IgXCJ0aHJvdy1hd2F5XCIgcHJvamVjdHMsIHlvdSBjYW4gYXZvaWQgYW55IG5lZWQgZm9yIGNsZWFudXAgYnkgZG9pbmcgeW91ciB3b3JrIGluIHlvdXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSAoZS5nLiwgYC90bXBgKS4KCiAgICAgICAgTmF2aWdhdGUgdG8geW91ciB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFuZCBsYXVuY2ggSnVsaWEsIHRoZW4gZG8gdGhlIGZvbGxvd2luZzoKCiAgICAgICAgYGBganVsaWEKICAgICAgICBwa2c+IGdlbmVyYXRlIE15UGtnICAgICAgICAgICAgIyB0eXBlIF0gdG8gZW50ZXIgcGtnIG1vZGUKICAgICAgICBqdWxpYT4gcHVzaCEoTE9BRF9QQVRILCBwd2QoKSkgICAjIGhpdCBiYWNrc3BhY2UgdG8gZXhpdCBwa2cgbW9kZQogICAgICAgIGBgYAoKICAgICAgICBJZiB5b3UgcmVzdGFydCB5b3VyIEp1bGlhIHNlc3Npb24geW91J2xsIGhhdmUgdG8gcmUtaXNzdWUgdGhhdCBjb21tYW5kIG1vZGlmeWluZyBgTE9BRF9QQVRIYC4KCiAgICAgICAgSW4gc3RlcCAyIGJlbG93LCBlZGl0IGBNeVBrZy9zcmMvTXlQa2cuamxgIHRvIGNoYW5nZSB0aGUgc291cmNlIGNvZGUsIGFuZCBjcmVhdGUgYW55IHRlc3QgZmlsZSBvZiB5b3VyIGNob29zaW5nLgoyLiBEZXZlbG9wIHlvdXIgcGFja2FnZQoKICAgICpCZWZvcmUqIGxvYWRpbmcgYW55IGNvZGUsIG1ha2Ugc3VyZSB5b3UncmUgcnVubmluZyBSZXZpc2U6IHNheSBgdXNpbmcgUmV2aXNlYCBvciBmb2xsb3cgaXRzIGRvY3VtZW50YXRpb24gb24gY29uZmlndXJpbmcgaXQgdG8gcnVuIGF1dG9tYXRpY2FsbHkuCgogICAgVGhlbiBuYXZpZ2F0ZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgeW91ciB0ZXN0IGZpbGUgKGhlcmUgYXNzdW1lZCB0byBiZSBgXCJydW50ZXN0cy5qbFwiYCkgYW5kIGRvIHRoZSBmb2xsb3dpbmc6CgogICAgYGBganVsaWEKICAgIGp1bGlhPiB1c2luZyBNeVBrZwoKICAgIGp1bGlhPiBpbmNsdWRlKFwicnVudGVzdHMuamxcIikKICAgIGBgYAoKICAgIFlvdSBjYW4gaXRlcmF0aXZlbHkgbW9kaWZ5IHRoZSBjb2RlIGluIE15UGtnIGluIHlvdXIgZWRpdG9yIGFuZCByZS1ydW4gdGhlIHRlc3RzIHdpdGggYGluY2x1ZGUoXCJydW50ZXN0cy5qbFwiKWAuICBZb3UgZ2VuZXJhbGx5IHNob3VsZCBub3QgbmVlZCB0byByZXN0YXJ0IHlvdXIgSnVsaWEgc2Vzc2lvbiB0byBzZWUgdGhlIGNoYW5nZXMgdGFrZSBlZmZlY3QgKHN1YmplY3QgdG8gYSBmZXcgW2xpbWl0YXRpb25zXShodHRwczovL3RpbWhvbHkuZ2l0aHViLmlvL1JldmlzZS5qbC9zdGFibGUvbGltaXRhdGlvbnMvKSkuCiIiIqtjb2RlX2ZvbGRlZMPZJGE3NmJlNDIyLWY2OTgtNDA3Ni1hOGU4LWM0MDcyMTk3YmQzOIOnY2VsbF9pZNkkYTc2YmU0MjItZjY5OC00MDc2LWE4ZTgtYzQwNzIxOTdiZDM4pGNvZGXaBSxtZCIiIgogICogKipQdXQgY29kZSB1bmRlciBkZXZlbG9wbWVudCBpbiBhIHRlbXBvcmFyeSBtb2R1bGUuKiogQ3JlYXRlIGEgZmlsZSwgc2F5IGBUbXAuamxgLCBhbmQgaW5jbHVkZSB3aXRoaW4gaXQKCiAgICBgYGBqdWxpYQogICAgbW9kdWxlIFRtcAogICAgZXhwb3J0IHNheV9oZWxsbwoKICAgIHNheV9oZWxsbygpID0gcHJpbnRsbihcIkhlbGxvIVwiKQoKICAgICMgeW91ciBvdGhlciBkZWZpbml0aW9ucyBoZXJlCgogICAgZW5kCiAgICBgYGAKICAqICoqUHV0IHlvdXIgdGVzdCBjb2RlIGluIGFub3RoZXIgZmlsZS4qKiBDcmVhdGUgYW5vdGhlciBmaWxlLCBzYXkgYHRzdC5qbGAsIHdoaWNoIGxvb2tzIGxpa2UKCiAgICBgYGBqdWxpYQogICAgaW5jbHVkZShcIlRtcC5qbFwiKQogICAgaW1wb3J0IC5UbXAKICAgICMgdXNpbmcgLlRtcCAjIHdlIGNhbiB1c2UgYHVzaW5nYCB0byBicmluZyB0aGUgZXhwb3J0ZWQgc3ltYm9scyBpbiBgVG1wYCBpbnRvIG91ciBuYW1lc3BhY2UKCiAgICBUbXAuc2F5X2hlbGxvKCkKICAgICMgc2F5X2hlbGxvKCkKCiAgICAjIHlvdXIgb3RoZXIgdGVzdCBjb2RlIGhlcmUKICAgIGBgYAoKICAgIGFuZCBpbmNsdWRlcyB0ZXN0cyBmb3IgdGhlIGNvbnRlbnRzIG9mIGBUbXBgLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHdyYXAgdGhlIGNvbnRlbnRzIG9mIHlvdXIgdGVzdCBmaWxlIGluIGEgbW9kdWxlLCBhcwoKICAgIGBgYGp1bGlhCiAgICBtb2R1bGUgVHN0CiAgICAgICAgaW5jbHVkZShcIlRtcC5qbFwiKQogICAgICAgIGltcG9ydCAuVG1wCiAgICAgICAgI3VzaW5nIC5UbXAKCiAgICAgICAgVG1wLnNheV9oZWxsbygpCiAgICAgICAgIyBzYXlfaGVsbG8oKQoKICAgICAgICAjIHlvdXIgb3RoZXIgdGVzdCBjb2RlIGhlcmUKICAgIGVuZAogICAgYGBgCgogICAgVGhlIGFkdmFudGFnZSBpcyB0aGF0IHlvdXIgdGVzdGluZyBjb2RlIGlzIG5vdyBjb250YWluZWQgaW4gYSBtb2R1bGUgYW5kIGRvZXMgbm90IHVzZSB0aGUgZ2xvYmFsIHNjb3BlIGluIGBNYWluYCBmb3IgZGVmaW5pdGlvbnMsIHdoaWNoIGlzIGEgYml0IG1vcmUgdGlkeS4KICAqIGBpbmNsdWRlYCB0aGUgYHRzdC5qbGAgZmlsZSBpbiB0aGUgSnVsaWEgUkVQTCB3aXRoIGBpbmNsdWRlKFwidHN0LmpsXCIpYC4KICAqICoqTGF0aGVyLiBSaW5zZS4gUmVwZWF0LioqIEV4cGxvcmUgaWRlYXMgYXQgdGhlIGBqdWxpYWAgY29tbWFuZCBwcm9tcHQuIFNhdmUgZ29vZCBpZGVhcyBpbiBgdHN0LmpsYC4gVG8gZXhlY3V0ZSBgdHN0LmpsYCBhZnRlciBpdCBoYXMgYmVlbiBjaGFuZ2VkLCBqdXN0IGBpbmNsdWRlYCBpdCBhZ2Fpbi4KIiIiq2NvZGVfZm9sZGVkw9kkZmRkMjE5ZmQtYmFmNy00NTA3LWExY2QtODRjMTA3MThmOTE0g6djZWxsX2lk2SRmZGQyMTlmZC1iYWY3LTQ1MDctYTFjZC04NGMxMDcxOGY5MTSkY29kZdkgbWQiIiIKIyMgUkVQTC1iYXNlZCB3b3JrZmxvdwoiIiKrY29kZV9mb2xkZWTD2SQyZmI5ZjZlMC0yNTFlLTRlMjgtYWMxNy0zYmM5MmJkZDRkODKDp2NlbGxfaWTZJDJmYjlmNmUwLTI1MWUtNGUyOC1hYzE3LTNiYzkyYmRkNGQ4MqRjb2Rl2aJtZCIiIgpJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGludGVyYWN0IHdpdGggYSBKdWxpYSBSRVBMIGluIHRoZSBicm93c2VyIHZpYSBbSUp1bGlhXShodHRwczovL2dpdGh1Yi5jb20vSnVsaWFMYW5nL0lKdWxpYS5qbCkuIFNlZSB0aGUgcGFja2FnZSBob21lIGZvciBkZXRhaWxzLgoiIiKrY29kZV9mb2xkZWTDq25vdGVib29rX2lk2SRmZGViMTIzZS05ZTRlLTExZWItM2IyMS1kNzQ5ZWQ4YzI0ZmSlYm9uZHOArGNlbGxfcmVzdWx0c4zZJGU4ZTAyMTM5LWY4Y2QtNDNkNy05Y2U0LTMzOTM0NDJhNWNkNYamcXVldWVkwqdydW5uaW5nwqZvdXRwdXSFpGJvZHnZPDxkaXYgY2xhc3M9Im1hcmtkb3duIj48aDI+QnJvd3Nlci1iYXNlZCB3b3JrZmxvdzwvaDI+CjwvZGl2PrBwZXJzaXN0X2pzX3N0YXRlwqRtaW1lqXRleHQvaHRtbLJsYXN0X3J1bl90aW1lc3RhbXDLQdgeOFz++5Sscm9vdGFzc2lnbmVlwKdjZWxsX2lk2SRlOGUwMjEzOS1mOGNkLTQzZDctOWNlNC0zMzkzNDQyYTVjZDWncnVudGltZc0c6adlcnJvcmVkwtkkMGVhNzE2NjItMmRlYy00ZDA4LTgyNjUtODQyOTZkMjI5OGUzhqZxdWV1ZWTCp3J1bm5pbmfCpm91dHB1dIWkYm9kedoC/DxkaXYgY2xhc3M9Im1hcmtkb3duIj48cD5XaGV0aGVyIHlvdSYjMzk7cmUgYXQgdGhlIFJFUEwgb3IgaW4gSUp1bGlhLCB5b3UgY2FuIHR5cGljYWxseSBpbXByb3ZlIHlvdXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZSB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aW1ob2x5L1JldmlzZS5qbCI+UmV2aXNlPC9hPi4gSXQgaXMgY29tbW9uIHRvIGNvbmZpZ3VyZSBSZXZpc2UgdG8gc3RhcnQgd2hlbmV2ZXIganVsaWEgaXMgc3RhcnRlZCwgYXMgcGVyIHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIDxhIGhyZWY9Imh0dHBzOi8vdGltaG9seS5naXRodWIuaW8vUmV2aXNlLmpsL3N0YWJsZS8iPlJldmlzZSBkb2N1bWVudGF0aW9uPC9hPi4gT25jZSBjb25maWd1cmVkLCBSZXZpc2Ugd2lsbCB0cmFjayBjaGFuZ2VzIHRvIGZpbGVzIGluIGFueSBsb2FkZWQgbW9kdWxlcywgYW5kIHRvIGFueSBmaWxlcyBsb2FkZWQgaW4gdG8gdGhlIFJFUEwgd2l0aCA8Y29kZT5pbmNsdWRldDwvY29kZT4gJiM0MDtidXQgbm90IHdpdGggcGxhaW4gPGNvZGU+aW5jbHVkZTwvY29kZT4mIzQxOzsgeW91IGNhbiB0aGVuIGVkaXQgdGhlIGZpbGVzIGFuZCB0aGUgY2hhbmdlcyB0YWtlIGVmZmVjdCB3aXRob3V0IHJlc3RhcnRpbmcgeW91ciBqdWxpYSBzZXNzaW9uLiBBIHN0YW5kYXJkIHdvcmtmbG93IGlzIHNpbWlsYXIgdG8gdGhlIFJFUEwtYmFzZWQgd29ya2Zsb3cgYWJvdmUsIHdpdGggdGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb25zOjwvcD4KPC9kaXY+sHBlcnNpc3RfanNfc3RhdGXCpG1pbWWpdGV4dC9odG1ssmxhc3RfcnVuX3RpbWVzdGFtcMtB2B44XP8w6Kxyb290YXNzaWduZWXAp2NlbGxfaWTZJDBlYTcxNjYyLTJkZWMtNGQwOC04MjY1LTg0Mjk2ZDIyOThlM6dydW50aW1lzR7cp2Vycm9yZWTC2SQxMGU5ZjQ2Yy03NjNkLTRiNDUtYTdmMC03MzYzMjhjMzM5MWGGpnF1ZXVlZMKncnVubmluZ8Kmb3V0cHV0haRib2R52gETPGRpdiBjbGFzcz0ibWFya2Rvd24iPjxwPkFzIGFscmVhZHkgZWxhYm9yYXRlZCBpbiA8YSBocmVmPSJAcmVmIj5UaGUgSnVsaWEgUkVQTDwvYT4sIEp1bGlhJiMzOTtzIFJFUEwgcHJvdmlkZXMgcmljaCBmdW5jdGlvbmFsaXR5IHRoYXQgZmFjaWxpdGF0ZXMgYW4gZWZmaWNpZW50IGludGVyYWN0aXZlIHdvcmtmbG93LiBIZXJlIGFyZSBzb21lIHRpcHMgdGhhdCBtaWdodCBmdXJ0aGVyIGVuaGFuY2UgeW91ciBleHBlcmllbmNlIGF0IHRoZSBjb21tYW5kIGxpbmUuPC9wPgo8L2Rpdj6wcGVyc2lzdF9qc19zdGF0ZcKkbWltZal0ZXh0L2h0bWyybGFzdF9ydW5fdGltZXN0YW1wy0HYHjhc9RMfrHJvb3Rhc3NpZ25lZcCnY2VsbF9pZNkkMTBlOWY0NmMtNzYzZC00YjQ1LWE3ZjAtNzM2MzI4YzMzOTFhp3J1bnRpbWXNL0SnZXJyb3JlZMLZJGNlNzlmNzgxLTQzYTgtNDg2Yi1iNGUwLThkOTNiNzA2YTYxZYamcXVldWVkwqdydW5uaW5nwqZvdXRwdXSFpGJvZHnZQjxkaXYgY2xhc3M9Im1hcmtkb3duIj48aDM+QSBiYXNpYyBlZGl0b3IvUkVQTCB3b3JrZmxvdzwvaDM+CjwvZGl2PrBwZXJzaXN0X2pzX3N0YXRlwqRtaW1lqXRleHQvaHRtbLJsYXN0X3J1bl90aW1lc3RhbXDLQdgeOFz2jFCscm9vdGFzc2lnbmVlwKdjZWxsX2lk2SRjZTc5Zjc4MS00M2E4LTQ4NmItYjRlMC04ZDkzYjcwNmE2MWWncnVudGltZc0PoKdlcnJvcmVkwtkkMTcyZTU4MTYtNGUzMy00N2QwLWE3NmQtZTIxODI3OGZiYjFmhqZxdWV1ZWTCp3J1bm5pbmfCpm91dHB1dIWkYm9kedlaPGRpdiBjbGFzcz0ibWFya2Rvd24iPjxwPkhlcmUgYXJlIHNvbWUgdGlwcyBmb3Igd29ya2luZyB3aXRoIEp1bGlhIGVmZmljaWVudGx5LjwvcD4KPC9kaXY+sHBlcnNpc3RfanNfc3RhdGXCpG1pbWWpdGV4dC9odG1ssmxhc3RfcnVuX3RpbWVzdGFtcMtB2B44XPN+dKxyb290YXNzaWduZWXAp2NlbGxfaWTZJDE3MmU1ODE2LTRlMzMtNDdkMC1hNzZkLWUyMTgyNzhmYmIxZqdydW50aW1lzSJhp2Vycm9yZWTC2SQ0YzFhNzg4MC05MTA1LTQ5NWMtYmM4Yy1lNWI1YjhkZDFkMGaGpnF1ZXVlZMKncnVubmluZ8Kmb3V0cHV0haRib2R52ck8ZGl2IGNsYXNzPSJtYXJrZG93biI+PHA+VGhlIG1vc3QgYmFzaWMgSnVsaWEgd29ya2Zsb3dzIGludm9sdmUgdXNpbmcgYSB0ZXh0IGVkaXRvciBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSA8Y29kZT5qdWxpYTwvY29kZT4gY29tbWFuZCBsaW5lLiBBIGNvbW1vbiBwYXR0ZXJuIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgZWxlbWVudHM6PC9wPgo8L2Rpdj6wcGVyc2lzdF9qc19zdGF0ZcKkbWltZal0ZXh0L2h0bWyybGFzdF9ydW5fdGltZXN0YW1wy0HYHjhc93/trHJvb3Rhc3NpZ25lZcCnY2VsbF9pZNkkNGMxYTc4ODAtOTEwNS00OTVjLWJjOGMtZTViNWI4ZGQxZDBmp3J1bnRpbWXNHt2nZXJyb3JlZMLZJGUyMWFkYTE4LTUzYzAtNDIyNC05Mzg5LTE4MTczMjFhN2RiYYamcXVldWVkwqdydW5uaW5nwqZvdXRwdXSFpGJvZHnZVzxkaXYgY2xhc3M9Im1hcmtkb3duIj48aDE+PGEgaHJlZj0iQGlkIG1hbi13b3JrZmxvdy10aXBzIj5Xb3JrZmxvdyBUaXBzPC9hPjwvaDE+CjwvZGl2PrBwZXJzaXN0X2pzX3N0YXRlwqRtaW1lqXRleHQvaHRtbLJsYXN0X3J1bl90aW1lc3RhbXDLQdgeOFzwwcqscm9vdGFzc2lnbmVlwKdjZWxsX2lk2SRlMjFhZGExOC01M2MwLTQyMjQtOTM4OS0xODE3MzIxYTdkYmGncnVudGltZc0ooadlcnJvcmVkwtkkMDA5MGY2MmUtMmNhMC00N2YxLThhOTktMDllZThiZjc5MjI5hqZxdWV1ZWTCp3J1bm5pbmfCpm91dHB1dIWkYm9kedk8PGRpdiBjbGFzcz0ibWFya2Rvd24iPjxoMj5SZXZpc2UtYmFzZWQgd29ya2Zsb3dzPC9oMj4KPC9kaXY+sHBlcnNpc3RfanNfc3RhdGXCpG1pbWWpdGV4dC9odG1ssmxhc3RfcnVuX3RpbWVzdGFtcMtB2B44XP8Xbqxyb290YXNzaWduZWXAp2NlbGxfaWTZJDAwOTBmNjJlLTJjYTAtNDdmMS04YTk5LTA5ZWU4YmY3OTIyOadydW50aW1lzQ88p2Vycm9yZWTC2SRkNThkYThhMi02YjFhLTRhOTktODU4Ni1hNTVjMTdmNzMyNDSGpnF1ZXVlZMKncnVubmluZ8Kmb3V0cHV0haRib2R52gk8PGRpdiBjbGFzcz0ibWFya2Rvd24iPjxvbD4KPGxpPjxwPlB1dCB5b3VyIGNvZGUgaW4gYSBtb2R1bGUgc29tZXdoZXJlIG9uIHlvdXIgbG9hZCBwYXRoLiBUaGVyZSBhcmUgc2V2ZXJhbCBvcHRpb25zIGZvciBhY2hpZXZpbmcgdGhpcywgb2Ygd2hpY2ggdHdvIHJlY29tbWVuZGVkIGNob2ljZXMgYXJlOjwvcD4KPHVsPgo8bGk+PHA+Rm9yIGxvbmctdGVybSBwcm9qZWN0cywgdXNlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlbmlhL1BrZ1RlbXBsYXRlcy5qbCI+UGtnVGVtcGxhdGVzPC9hPjo8L3A+CjxwcmU+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLWp1bGlhIj51c2luZyBQa2dUZW1wbGF0ZXMKdCAmIzYxOyBUZW1wbGF0ZSYjNDA7JiM0MTsKdCYjNDA7JnF1b3Q7TXlQa2cmcXVvdDsmIzQxOzwvY29kZT48L3ByZT4KPHA+VGhpcyB3aWxsIGNyZWF0ZSBhIGJsYW5rIHBhY2thZ2UsIDxjb2RlPiZxdW90O015UGtnJnF1b3Q7PC9jb2RlPiwgaW4geW91ciA8Y29kZT4uanVsaWEvZGV2PC9jb2RlPiBkaXJlY3RvcnkuIE5vdGUgdGhhdCBQa2dUZW1wbGF0ZXMgYWxsb3dzIHlvdSB0byBjb250cm9sIG1hbnkgZGlmZmVyZW50IG9wdGlvbnMgdGhyb3VnaCBpdHMgPGNvZGU+VGVtcGxhdGU8L2NvZGU+IGNvbnN0cnVjdG9yLjwvcD4KPHA+SW4gc3RlcCAyIGJlbG93LCBlZGl0IDxjb2RlPk15UGtnL3NyYy9NeVBrZy5qbDwvY29kZT4gdG8gY2hhbmdlIHRoZSBzb3VyY2UgY29kZSwgYW5kIDxjb2RlPk15UGtnL3Rlc3QvcnVudGVzdHMuamw8L2NvZGU+IGZvciB0aGUgdGVzdHMuPC9wPgo8L2xpPgo8bGk+PHA+Rm9yICZxdW90O3Rocm93LWF3YXkmcXVvdDsgcHJvamVjdHMsIHlvdSBjYW4gYXZvaWQgYW55IG5lZWQgZm9yIGNsZWFudXAgYnkgZG9pbmcgeW91ciB3b3JrIGluIHlvdXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSAmIzQwO2UuZy4sIDxjb2RlPi90bXA8L2NvZGU+JiM0MTsuPC9wPgo8cD5OYXZpZ2F0ZSB0byB5b3VyIHRlbXBvcmFyeSBkaXJlY3RvcnkgYW5kIGxhdW5jaCBKdWxpYSwgdGhlbiBkbyB0aGUgZm9sbG93aW5nOjwvcD4KPHByZT48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtanVsaWEiPnBrZyZndDsgZ2VuZXJhdGUgTXlQa2cgICAgICAgICAgICAjIHR5cGUgJiM5MzsgdG8gZW50ZXIgcGtnIG1vZGUKanVsaWEmZ3Q7IHB1c2gmIzMzOyYjNDA7TE9BRF9QQVRILCBwd2QmIzQwOyYjNDE7JiM0MTsgICAjIGhpdCBiYWNrc3BhY2UgdG8gZXhpdCBwa2cgbW9kZTwvY29kZT48L3ByZT4KPHA+SWYgeW91IHJlc3RhcnQgeW91ciBKdWxpYSBzZXNzaW9uIHlvdSYjMzk7bGwgaGF2ZSB0byByZS1pc3N1ZSB0aGF0IGNvbW1hbmQgbW9kaWZ5aW5nIDxjb2RlPkxPQURfUEFUSDwvY29kZT4uPC9wPgo8cD5JbiBzdGVwIDIgYmVsb3csIGVkaXQgPGNvZGU+TXlQa2cvc3JjL015UGtnLmpsPC9jb2RlPiB0byBjaGFuZ2UgdGhlIHNvdXJjZSBjb2RlLCBhbmQgY3JlYXRlIGFueSB0ZXN0IGZpbGUgb2YgeW91ciBjaG9vc2luZy48L3A+CjwvbGk+CjwvdWw+CjwvbGk+CjxsaT48cD5EZXZlbG9wIHlvdXIgcGFja2FnZTwvcD4KPHA+PGVtPkJlZm9yZTwvZW0+IGxvYWRpbmcgYW55IGNvZGUsIG1ha2Ugc3VyZSB5b3UmIzM5O3JlIHJ1bm5pbmcgUmV2aXNlOiBzYXkgPGNvZGU+dXNpbmcgUmV2aXNlPC9jb2RlPiBvciBmb2xsb3cgaXRzIGRvY3VtZW50YXRpb24gb24gY29uZmlndXJpbmcgaXQgdG8gcnVuIGF1dG9tYXRpY2FsbHkuPC9wPgo8cD5UaGVuIG5hdmlnYXRlIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB5b3VyIHRlc3QgZmlsZSAmIzQwO2hlcmUgYXNzdW1lZCB0byBiZSA8Y29kZT4mcXVvdDtydW50ZXN0cy5qbCZxdW90OzwvY29kZT4mIzQxOyBhbmQgZG8gdGhlIGZvbGxvd2luZzo8L3A+CjxwPiYjOTY7JiM5NjsmIzk2O2p1bGlhICBqdWxpYSZndDsgdXNpbmcgTXlQa2c8L3A+CjxwPmp1bGlhJmd0OyBpbmNsdWRlJiM0MDsmcXVvdDtydW50ZXN0cy5qbCZxdW90OyYjNDE7ICAmIzk2OyYjOTY7JiM5Njs8L3A+CjxwPllvdSBjYW4gaXRlcmF0aXZlbHkgbW9kaWZ5IHRoZSBjb2RlIGluIE15UGtnIGluIHlvdXIgZWRpdG9yIGFuZCByZS1ydW4gdGhlIHRlc3RzIHdpdGggPGNvZGU+aW5jbHVkZSYjNDA7JnF1b3Q7cnVudGVzdHMuamwmcXVvdDsmIzQxOzwvY29kZT4uICBZb3UgZ2VuZXJhbGx5IHNob3VsZCBub3QgbmVlZCB0byByZXN0YXJ0IHlvdXIgSnVsaWEgc2Vzc2lvbiB0byBzZWUgdGhlIGNoYW5nZXMgdGFrZSBlZmZlY3QgJiM0MDtzdWJqZWN0IHRvIGEgZmV3IDxhIGhyZWY9Imh0dHBzOi8vdGltaG9seS5naXRodWIuaW8vUmV2aXNlLmpsL3N0YWJsZS9saW1pdGF0aW9ucy8iPmxpbWl0YXRpb25zPC9hPiYjNDE7LjwvcD4KPC9saT4KPC9vbD4KPC9kaXY+sHBlcnNpc3RfanNfc3RhdGXCpG1pbWWpdGV4dC9odG1ssmxhc3RfcnVuX3RpbWVzdGFtcMtB2B44XQClM6xyb290YXNzaWduZWXAp2NlbGxfaWTZJGQ1OGRhOGEyLTZiMWEtNGE5OS04NTg2LWE1NWMxN2Y3MzI0NKdydW50aW1lzgAm0menZXJyb3JlZMLZJGE3NmJlNDIyLWY2OTgtNDA3Ni1hOGU4LWM0MDcyMTk3YmQzOIamcXVldWVkwqdydW5uaW5nwqZvdXRwdXSFpGJvZHnaBqE8ZGl2IGNsYXNzPSJtYXJrZG93biI+PHVsPgo8bGk+PHA+PHN0cm9uZz5QdXQgY29kZSB1bmRlciBkZXZlbG9wbWVudCBpbiBhIHRlbXBvcmFyeSBtb2R1bGUuPC9zdHJvbmc+IENyZWF0ZSBhIGZpbGUsIHNheSA8Y29kZT5UbXAuamw8L2NvZGU+LCBhbmQgaW5jbHVkZSB3aXRoaW4gaXQ8L3A+CjxwcmU+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLWp1bGlhIj5tb2R1bGUgVG1wCmV4cG9ydCBzYXlfaGVsbG8KCnNheV9oZWxsbyYjNDA7JiM0MTsgJiM2MTsgcHJpbnRsbiYjNDA7JnF1b3Q7SGVsbG8mIzMzOyZxdW90OyYjNDE7CgojIHlvdXIgb3RoZXIgZGVmaW5pdGlvbnMgaGVyZQoKZW5kPC9jb2RlPjwvcHJlPgo8L2xpPgo8bGk+PHA+PHN0cm9uZz5QdXQgeW91ciB0ZXN0IGNvZGUgaW4gYW5vdGhlciBmaWxlLjwvc3Ryb25nPiBDcmVhdGUgYW5vdGhlciBmaWxlLCBzYXkgPGNvZGU+dHN0LmpsPC9jb2RlPiwgd2hpY2ggbG9va3MgbGlrZTwvcD4KPHByZT48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtanVsaWEiPmluY2x1ZGUmIzQwOyZxdW90O1RtcC5qbCZxdW90OyYjNDE7CmltcG9ydCAuVG1wCiMgdXNpbmcgLlRtcCAjIHdlIGNhbiB1c2UgJiM5Njt1c2luZyYjOTY7IHRvIGJyaW5nIHRoZSBleHBvcnRlZCBzeW1ib2xzIGluICYjOTY7VG1wJiM5NjsgaW50byBvdXIgbmFtZXNwYWNlCgpUbXAuc2F5X2hlbGxvJiM0MDsmIzQxOwojIHNheV9oZWxsbyYjNDA7JiM0MTsKCiMgeW91ciBvdGhlciB0ZXN0IGNvZGUgaGVyZTwvY29kZT48L3ByZT4KPHA+YW5kIGluY2x1ZGVzIHRlc3RzIGZvciB0aGUgY29udGVudHMgb2YgPGNvZGU+VG1wPC9jb2RlPi4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB3cmFwIHRoZSBjb250ZW50cyBvZiB5b3VyIHRlc3QgZmlsZSBpbiBhIG1vZHVsZSwgYXM8L3A+CjxwcmU+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLWp1bGlhIj5tb2R1bGUgVHN0CiAgICBpbmNsdWRlJiM0MDsmcXVvdDtUbXAuamwmcXVvdDsmIzQxOwogICAgaW1wb3J0IC5UbXAKICAgICN1c2luZyAuVG1wCgogICAgVG1wLnNheV9oZWxsbyYjNDA7JiM0MTsKICAgICMgc2F5X2hlbGxvJiM0MDsmIzQxOwoKICAgICMgeW91ciBvdGhlciB0ZXN0IGNvZGUgaGVyZQplbmQ8L2NvZGU+PC9wcmU+CjxwPlRoZSBhZHZhbnRhZ2UgaXMgdGhhdCB5b3VyIHRlc3RpbmcgY29kZSBpcyBub3cgY29udGFpbmVkIGluIGEgbW9kdWxlIGFuZCBkb2VzIG5vdCB1c2UgdGhlIGdsb2JhbCBzY29wZSBpbiA8Y29kZT5NYWluPC9jb2RlPiBmb3IgZGVmaW5pdGlvbnMsIHdoaWNoIGlzIGEgYml0IG1vcmUgdGlkeS48L3A+CjwvbGk+CjxsaT48cD48Y29kZT5pbmNsdWRlPC9jb2RlPiB0aGUgPGNvZGU+dHN0LmpsPC9jb2RlPiBmaWxlIGluIHRoZSBKdWxpYSBSRVBMIHdpdGggPGNvZGU+aW5jbHVkZSYjNDA7JnF1b3Q7dHN0LmpsJnF1b3Q7JiM0MTs8L2NvZGU+LjwvcD4KPC9saT4KPGxpPjxwPjxzdHJvbmc+TGF0aGVyLiBSaW5zZS4gUmVwZWF0Ljwvc3Ryb25nPiBFeHBsb3JlIGlkZWFzIGF0IHRoZSA8Y29kZT5qdWxpYTwvY29kZT4gY29tbWFuZCBwcm9tcHQuIFNhdmUgZ29vZCBpZGVhcyBpbiA8Y29kZT50c3Quamw8L2NvZGU+LiBUbyBleGVjdXRlIDxjb2RlPnRzdC5qbDwvY29kZT4gYWZ0ZXIgaXQgaGFzIGJlZW4gY2hhbmdlZCwganVzdCA8Y29kZT5pbmNsdWRlPC9jb2RlPiBpdCBhZ2Fpbi48L3A+CjwvbGk+CjwvdWw+CjwvZGl2PrBwZXJzaXN0X2pzX3N0YXRlwqRtaW1lqXRleHQvaHRtbLJsYXN0X3J1bl90aW1lc3RhbXDLQdgeOFz+6qOscm9vdGFzc2lnbmVlwKdjZWxsX2lk2SRhNzZiZTQyMi1mNjk4LTQwNzYtYThlOC1jNDA3MjE5N2JkMzincnVudGltZc4APloop2Vycm9yZWTC2SRmZGQyMTlmZC1iYWY3LTQ1MDctYTFjZC04NGMxMDcxOGY5MTSGpnF1ZXVlZMKncnVubmluZ8Kmb3V0cHV0haRib2R52Tk8ZGl2IGNsYXNzPSJtYXJrZG93biI+PGgyPlJFUEwtYmFzZWQgd29ya2Zsb3c8L2gyPgo8L2Rpdj6wcGVyc2lzdF9qc19zdGF0ZcKkbWltZal0ZXh0L2h0bWyybGFzdF9ydW5fdGltZXN0YW1wy0HYHjhc9P+srHJvb3Rhc3NpZ25lZcCnY2VsbF9pZNkkZmRkMjE5ZmQtYmFmNy00NTA3LWExY2QtODRjMTA3MThmOTE0p3J1bnRpbWXNGpCnZXJyb3JlZMLZJDJmYjlmNmUwLTI1MWUtNGUyOC1hYzE3LTNiYzkyYmRkNGQ4MoamcXVldWVkwqdydW5uaW5nwqZvdXRwdXSFpGJvZHnZxzxkaXYgY2xhc3M9Im1hcmtkb3duIj48cD5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGludGVyYWN0IHdpdGggYSBKdWxpYSBSRVBMIGluIHRoZSBicm93c2VyIHZpYSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSnVsaWFMYW5nL0lKdWxpYS5qbCI+SUp1bGlhPC9hPi4gU2VlIHRoZSBwYWNrYWdlIGhvbWUgZm9yIGRldGFpbHMuPC9wPgo8L2Rpdj6wcGVyc2lzdF9qc19zdGF0ZcKkbWltZal0ZXh0L2h0bWyybGFzdF9ydW5fdGltZXN0YW1wy0HYHjhc/wrUrHJvb3Rhc3NpZ25lZcCnY2VsbF9pZNkkMmZiOWY2ZTAtMjUxZS00ZTI4LWFjMTctM2JjOTJiZGQ0ZDgyp3J1bnRpbWXNYH2nZXJyb3JlZMKpc2hvcnRwYXRosHdvcmtmbG93LXRpcHMuamyraW5fdGVtcF9kaXLC"
window.pluto_slider_server_url = undefined
window.pluto_binder_url = "https://mybinder.org/v2/gh/fonsp/pluto-on-binder/v0.14.2-fix2"
</script>
<!-- [automatically generated launch parameters can be inserted here] -->
<script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/editor.js" type="module" defer></script>
<script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/warn_old_browsers.js"></script>
<script src="https://cdn.jsdelivr.net/gh/fonsp/Pluto.jl@0.14.2/frontend/common/SetupMathJax.js"></script>
<script type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@3.1.2/es5/tex-svg-full.js" async></script>
</head>
<body class="loading no-MαθJax"></body>
</html>