@patternfly/quickstarts 5.0.0 → 5.1.0-prerelease.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25437,72 +25437,77 @@ function getDefaultOpts (simple) {
25437
25437
  },
25438
25438
  smartIndentationFix: {
25439
25439
  defaultValue: false,
25440
- description: 'Tries to smartly fix indentation in es6 strings',
25440
+ describe: 'Tries to smartly fix indentation in es6 strings',
25441
25441
  type: 'boolean'
25442
25442
  },
25443
25443
  disableForced4SpacesIndentedSublists: {
25444
25444
  defaultValue: false,
25445
- description: 'Disables the requirement of indenting nested sublists by 4 spaces',
25445
+ describe: 'Disables the requirement of indenting nested sublists by 4 spaces',
25446
25446
  type: 'boolean'
25447
25447
  },
25448
25448
  simpleLineBreaks: {
25449
25449
  defaultValue: false,
25450
- description: 'Parses simple line breaks as <br> (GFM Style)',
25450
+ describe: 'Parses simple line breaks as <br> (GFM Style)',
25451
25451
  type: 'boolean'
25452
25452
  },
25453
25453
  requireSpaceBeforeHeadingText: {
25454
25454
  defaultValue: false,
25455
- description: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',
25455
+ describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',
25456
25456
  type: 'boolean'
25457
25457
  },
25458
25458
  ghMentions: {
25459
25459
  defaultValue: false,
25460
- description: 'Enables github @mentions',
25460
+ describe: 'Enables github @mentions',
25461
25461
  type: 'boolean'
25462
25462
  },
25463
25463
  ghMentionsLink: {
25464
25464
  defaultValue: 'https://github.com/{u}',
25465
- description: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',
25465
+ describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',
25466
25466
  type: 'string'
25467
25467
  },
25468
25468
  encodeEmails: {
25469
25469
  defaultValue: true,
25470
- description: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',
25470
+ describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',
25471
25471
  type: 'boolean'
25472
25472
  },
25473
25473
  openLinksInNewWindow: {
25474
25474
  defaultValue: false,
25475
- description: 'Open all links in new windows',
25475
+ describe: 'Open all links in new windows',
25476
25476
  type: 'boolean'
25477
25477
  },
25478
25478
  backslashEscapesHTMLTags: {
25479
25479
  defaultValue: false,
25480
- description: 'Support for HTML Tag escaping. ex: \<div>foo\</div>',
25480
+ describe: 'Support for HTML Tag escaping. ex: \<div>foo\</div>',
25481
25481
  type: 'boolean'
25482
25482
  },
25483
25483
  emoji: {
25484
25484
  defaultValue: false,
25485
- description: 'Enable emoji support. Ex: `this is a :smile: emoji`',
25485
+ describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',
25486
25486
  type: 'boolean'
25487
25487
  },
25488
25488
  underline: {
25489
25489
  defaultValue: false,
25490
- description: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',
25490
+ describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',
25491
+ type: 'boolean'
25492
+ },
25493
+ ellipsis: {
25494
+ defaultValue: true,
25495
+ describe: 'Replaces three dots with the ellipsis unicode character',
25491
25496
  type: 'boolean'
25492
25497
  },
25493
25498
  completeHTMLDocument: {
25494
25499
  defaultValue: false,
25495
- description: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',
25500
+ describe: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',
25496
25501
  type: 'boolean'
25497
25502
  },
25498
25503
  metadata: {
25499
25504
  defaultValue: false,
25500
- description: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',
25505
+ describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',
25501
25506
  type: 'boolean'
25502
25507
  },
25503
25508
  splitAdjacentBlockquotes: {
25504
25509
  defaultValue: false,
25505
- description: 'Split adjacent blockquote blocks',
25510
+ describe: 'Split adjacent blockquote blocks',
25506
25511
  type: 'boolean'
25507
25512
  }
25508
25513
  };
@@ -25710,7 +25715,7 @@ showdown.subParser = function (name, func) {
25710
25715
  * Gets or registers an extension
25711
25716
  * @static
25712
25717
  * @param {string} name
25713
- * @param {object|function=} ext
25718
+ * @param {object|object[]|function=} ext
25714
25719
  * @returns {*}
25715
25720
  */
25716
25721
  showdown.extension = function (name, ext) {
@@ -26029,6 +26034,20 @@ showdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash
26029
26034
  return text;
26030
26035
  };
26031
26036
 
26037
+ /**
26038
+ * Unescape HTML entities
26039
+ * @param txt
26040
+ * @returns {string}
26041
+ */
26042
+ showdown.helper.unescapeHTMLEntities = function (txt) {
26043
+
26044
+ return txt
26045
+ .replace(/&quot;/g, '"')
26046
+ .replace(/&lt;/g, '<')
26047
+ .replace(/&gt;/g, '>')
26048
+ .replace(/&amp;/g, '&');
26049
+ };
26050
+
26032
26051
  var rgxFindMatchPos = function (str, left, right, flags) {
26033
26052
  var f = flags || '',
26034
26053
  g = f.indexOf('g') > -1,
@@ -26233,11 +26252,35 @@ showdown.helper.encodeEmailAddress = function (mail) {
26233
26252
  return mail;
26234
26253
  };
26235
26254
 
26255
+ /**
26256
+ *
26257
+ * @param str
26258
+ * @param targetLength
26259
+ * @param padString
26260
+ * @returns {string}
26261
+ */
26262
+ showdown.helper.padEnd = function padEnd (str, targetLength, padString) {
26263
+ /*jshint bitwise: false*/
26264
+ // eslint-disable-next-line space-infix-ops
26265
+ targetLength = targetLength>>0; //floor if number or convert non-number to 0;
26266
+ /*jshint bitwise: true*/
26267
+ padString = String(padString || ' ');
26268
+ if (str.length > targetLength) {
26269
+ return String(str);
26270
+ } else {
26271
+ targetLength = targetLength - str.length;
26272
+ if (targetLength > padString.length) {
26273
+ padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed
26274
+ }
26275
+ return String(str) + padString.slice(0,targetLength);
26276
+ }
26277
+ };
26278
+
26236
26279
  /**
26237
26280
  * POLYFILLS
26238
26281
  */
26239
26282
  // use this instead of builtin is undefined for IE8 compatibility
26240
- if (typeof(console) === 'undefined') {
26283
+ if (typeof (console) === 'undefined') {
26241
26284
  console = {
26242
26285
  warn: function (msg) {
26243
26286
  alert(msg);
@@ -27438,8 +27481,8 @@ showdown.helper.emojis = {
27438
27481
  'zzz':'\ud83d\udca4',
27439
27482
 
27440
27483
  /* special emojis :P */
27441
- 'octocat': '<img width="20" height="20" align="absmiddle" src="data:image/png;base64,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">',
27442
- 'showdown': '<img width="20" height="20" align="absmiddle" src="data:image/png;base64,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/GMzLdsAAECtaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzA2NyA3OS4xNTc3NDcsIDIwMTUvMDMvMzAtMjM6NDA6NDIgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMDEtMTVUMjE6MDE6MTlaPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNy0xMC0yNFQxMzozMTozMCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTctMTAtMjRUMTM6MzE6MzArMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8cGhvdG9zaG9wOlRleHRMYXllcnM+CiAgICAgICAgICAgIDxyZGY6QmFnPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHBob3Rvc2hvcDpMYXllck5hbWU+UyAtPC9waG90b3Nob3A6TGF5ZXJOYW1lPgogICAgICAgICAgICAgICAgICA8cGhvdG9zaG9wOkxheWVyVGV4dD5TIC08L3Bob3Rvc2hvcDpMYXllclRleHQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpCYWc+CiAgICAgICAgIDwvcGhvdG9zaG9wOlRleHRMYXllcnM+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6N2NkMzQxNzctOWYyZi0yNDRiLWEyYjQtMzU1MzJkY2Y1MWJiPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6M2E1YzgxYmYtYjhiNy0xMWU3LTk0NDktYTQ2MzdlZjJkNjMzPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6NjBDNUFFNjVGNjlDRTQxMTk0NUE4NTVFM0JDQTdFRUI8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NjBDNUFFNjVGNjlDRTQxMTk0NUE4NTVFM0JDQTdFRUI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMDEtMTVUMjE6MDE6MTlaPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ODZjNjBkMGQtOGY0Yy01ZTRlLWEwMjQtODI4ZWQyNTIwZDc3PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE3LTEwLTI0VDEzOjMxOjMwKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjdjZDM0MTc3LTlmMmYtMjQ0Yi1hMmI0LTM1NTMyZGNmNTFiYjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNy0xMC0yNFQxMzozMTozMCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6ODZjNjBkMGQtOGY0Yy01ZTRlLWEwMjQtODI4ZWQyNTIwZDc3PC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOjYwQzVBRTY1RjY5Q0U0MTE5NDVBODU1RTNCQ0E3RUVCPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6NjBDNUFFNjVGNjlDRTQxMTk0NUE4NTVFM0JDQTdFRUI8L3N0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NjQ8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NjQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pse7bzcAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAA1JJREFUeNrsm1+OmlAUhz+aeS9dwZggJn1AnRUMO6jpBgZXULuC2hWUWUGZBTSxKyiuoA4mfUBMnB04K5g+9DihRBHlyh/lJLwIXLgf99xzzu9etZeXFy7Z3nDh1gBoAFy4XeVtQNO0zNcapmUDfUBPnFoBfhQGq6IBaHmjwD4Ahmk5wAD4kKG5J8CNwsAFaHe6DvA9cc0wCgOv8gDka3vA9RHNPgo0D7hNnJtGYWBXxgV2dH4MfMnRRA+Y1WIO2NJ5F/ikoKm3tYsChmkNFHW+fmHQMC1dfHaXPQP3wM1yMdc2B/AOGALTWobBmI1Shu0UGCwX83XyRBQGawHntTtdG5gUNfxVu4CTNqNv6/wWGL7kCc+1AmCYVisl3I2ydD4GYZUCs7IjoLXrxHIx9w9tLAqDCfBwDrXAY457x+cAoCfuwRGjYFUnAGk+PsjR7s8Dn1VeLWCYVlpDw+VivjVHSHt+u9PVJbzGzZXQWTkAkz0V31fATUaEsjVJlQBs4FeGcteLgzgbAALBA+4y3voAeJL8nA0AHfClnM1qm1HhnYUidCSE+KzvSSJUTwAxCOMcpfETMFYpfRUKIAbCFhC3OTJJJwqDWS0BxED0JZ4Pjix1P2+E0loCSMBwyK4S/xc1ojBwag8gMU84cvTKGgmlAYhngu1O9xAXuVE5J1QCQCz3bwHuHvdQui5QKQAxEO6eEKpsFCgTRSXkvdoxSlBMCxhJJbgrrbZRtHCiShN0pRB6PeQ3ckBw2K0oKXMBVYJIP+Nvh9qulFivGoBt1lLQxowT2ykBXCfnhZIglgYACWmqXQv+baioBYCeiCQHm+QEg1O7RhF7hO4OhSAhcJKSFU7qBGADwZeqMMuXn6TUBw8qlaMrirNb4LdhWlP+SWD+cjFfxTpuS2GUpik+o3jFSEkqbJiWn0P0OMSGqlWiOu0TvD+FRHZKAE+oW+cfRmEwqlsesJJEJs8y91QqP+9UL6lqEtz2gpuNEY5sm9sIHln2DRa2aFKGJtiXkZEMiWtgVvRKUSUFkSKt2S7fAGgAXLYpmQQXf36MUChTZdUa2u8/rkvPA6Tz30r4eH3ybcBS5gJ6SaNXb+aABkA1AMxKenclBZLW/He4cYEGwEXb3wEASelexk6LIIIAAAAASUVORK5CYII=">'
27484
+ 'octocat': '<img alt=":octocat:" height="20" width="20" align="absmiddle" src="https://assets-cdn.github.com/images/icons/emoji/octocat.png">',
27485
+ 'showdown': '<span style="font-family: \'Anonymous Pro\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;">S</span>'
27443
27486
  };
27444
27487
 
27445
27488
  /**
@@ -27488,10 +27531,10 @@ showdown.Converter = function (converterOptions) {
27488
27531
  */
27489
27532
  setConvFlavor = setFlavor,
27490
27533
 
27491
- /**
27492
- * Metadata of the document
27493
- * @type {{parsed: {}, raw: string, format: string}}
27494
- */
27534
+ /**
27535
+ * Metadata of the document
27536
+ * @type {{parsed: {}, raw: string, format: string}}
27537
+ */
27495
27538
  metadata = {
27496
27539
  parsed: {},
27497
27540
  raw: '',
@@ -27550,7 +27593,7 @@ showdown.Converter = function (converterOptions) {
27550
27593
  'Please inform the developer that the extension should be updated!');
27551
27594
  legacyExtensionLoading(showdown.extensions[ext], ext);
27552
27595
  return;
27553
- // END LEGACY SUPPORT CODE
27596
+ // END LEGACY SUPPORT CODE
27554
27597
 
27555
27598
  } else if (!showdown.helper.isUndefined(extensions[ext])) {
27556
27599
  ext = extensions[ext];
@@ -27730,8 +27773,8 @@ showdown.Converter = function (converterOptions) {
27730
27773
  text = text.replace(/\r\n/g, '\n'); // DOS to Unix
27731
27774
  text = text.replace(/\r/g, '\n'); // Mac to Unix
27732
27775
 
27733
- // Stardardize line spaces (nbsp causes trouble in older browsers and some regex flavors)
27734
- text = text.replace(/\u00A0/g, ' ');
27776
+ // Stardardize line spaces
27777
+ text = text.replace(/\u00A0/g, '&nbsp;');
27735
27778
 
27736
27779
  if (options.smartIndentationFix) {
27737
27780
  text = rTrimInputText(text);
@@ -27786,6 +27829,112 @@ showdown.Converter = function (converterOptions) {
27786
27829
  return text;
27787
27830
  };
27788
27831
 
27832
+ /**
27833
+ * Converts an HTML string into a markdown string
27834
+ * @param src
27835
+ * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.
27836
+ * @returns {string}
27837
+ */
27838
+ this.makeMarkdown = this.makeMd = function (src, HTMLParser) {
27839
+
27840
+ // replace \r\n with \n
27841
+ src = src.replace(/\r\n/g, '\n');
27842
+ src = src.replace(/\r/g, '\n'); // old macs
27843
+
27844
+ // due to an edge case, we need to find this: > <
27845
+ // to prevent removing of non silent white spaces
27846
+ // ex: <em>this is</em> <strong>sparta</strong>
27847
+ src = src.replace(/>[ \t]+</, '>¨NBSP;<');
27848
+
27849
+ if (!HTMLParser) {
27850
+ if (window && window.document) {
27851
+ HTMLParser = window.document;
27852
+ } else {
27853
+ throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');
27854
+ }
27855
+ }
27856
+
27857
+ var doc = HTMLParser.createElement('div');
27858
+ doc.innerHTML = src;
27859
+
27860
+ var globals = {
27861
+ preList: substitutePreCodeTags(doc)
27862
+ };
27863
+
27864
+ // remove all newlines and collapse spaces
27865
+ clean(doc);
27866
+
27867
+ // some stuff, like accidental reference links must now be escaped
27868
+ // TODO
27869
+ // doc.innerHTML = doc.innerHTML.replace(/\[[\S\t ]]/);
27870
+
27871
+ var nodes = doc.childNodes,
27872
+ mdDoc = '';
27873
+
27874
+ for (var i = 0; i < nodes.length; i++) {
27875
+ mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);
27876
+ }
27877
+
27878
+ function clean (node) {
27879
+ for (var n = 0; n < node.childNodes.length; ++n) {
27880
+ var child = node.childNodes[n];
27881
+ if (child.nodeType === 3) {
27882
+ if (!/\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) {
27883
+ node.removeChild(child);
27884
+ --n;
27885
+ } else {
27886
+ child.nodeValue = child.nodeValue.split('\n').join(' ');
27887
+ child.nodeValue = child.nodeValue.replace(/(\s)+/g, '$1');
27888
+ }
27889
+ } else if (child.nodeType === 1) {
27890
+ clean(child);
27891
+ }
27892
+ }
27893
+ }
27894
+
27895
+ // find all pre tags and replace contents with placeholder
27896
+ // we need this so that we can remove all indentation from html
27897
+ // to ease up parsing
27898
+ function substitutePreCodeTags (doc) {
27899
+
27900
+ var pres = doc.querySelectorAll('pre'),
27901
+ presPH = [];
27902
+
27903
+ for (var i = 0; i < pres.length; ++i) {
27904
+
27905
+ if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {
27906
+ var content = pres[i].firstChild.innerHTML.trim(),
27907
+ language = pres[i].firstChild.getAttribute('data-language') || '';
27908
+
27909
+ // if data-language attribute is not defined, then we look for class language-*
27910
+ if (language === '') {
27911
+ var classes = pres[i].firstChild.className.split(' ');
27912
+ for (var c = 0; c < classes.length; ++c) {
27913
+ var matches = classes[c].match(/^language-(.+)$/);
27914
+ if (matches !== null) {
27915
+ language = matches[1];
27916
+ break;
27917
+ }
27918
+ }
27919
+ }
27920
+
27921
+ // unescape html entities in content
27922
+ content = showdown.helper.unescapeHTMLEntities(content);
27923
+
27924
+ presPH.push(content);
27925
+ pres[i].outerHTML = '<precode language="' + language + '" precodenum="' + i.toString() + '"></precode>';
27926
+ } else {
27927
+ presPH.push(pres[i].innerHTML);
27928
+ pres[i].innerHTML = '';
27929
+ pres[i].setAttribute('prenum', i.toString());
27930
+ }
27931
+ }
27932
+ return presPH;
27933
+ }
27934
+
27935
+ return mdDoc;
27936
+ };
27937
+
27789
27938
  /**
27790
27939
  * Set an option of this Converter instance
27791
27940
  * @param {string} key
@@ -27869,12 +28018,12 @@ showdown.Converter = function (converterOptions) {
27869
28018
  var ext = extension[a];
27870
28019
  for (var i = 0; i < langExtensions.length; ++i) {
27871
28020
  if (langExtensions[i] === ext) {
27872
- langExtensions[i].splice(i, 1);
28021
+ langExtensions.splice(i, 1);
27873
28022
  }
27874
28023
  }
27875
- for (var ii = 0; ii < outputModifiers.length; ++i) {
28024
+ for (var ii = 0; ii < outputModifiers.length; ++ii) {
27876
28025
  if (outputModifiers[ii] === ext) {
27877
- outputModifiers[ii].splice(i, 1);
28026
+ outputModifiers.splice(ii, 1);
27878
28027
  }
27879
28028
  }
27880
28029
  }
@@ -27987,7 +28136,7 @@ showdown.subParser('anchors', function (text, options, globals) {
27987
28136
  // to external links. Hash links (#) open in same page
27988
28137
  if (options.openLinksInNewWindow && !/^#/.test(url)) {
27989
28138
  // escaped _
27990
- result += ' target="¨E95Eblank"';
28139
+ result += ' rel="noopener noreferrer" target="¨E95Eblank"';
27991
28140
  }
27992
28141
 
27993
28142
  result += '>' + linkText + '</a>';
@@ -28005,7 +28154,7 @@ showdown.subParser('anchors', function (text, options, globals) {
28005
28154
 
28006
28155
  // normal cases
28007
28156
  text = text.replace(/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]?<?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g,
28008
- writeAnchorTag);
28157
+ writeAnchorTag);
28009
28158
 
28010
28159
  // handle reference-style shortcuts: [link text]
28011
28160
  // These must come last in case you've also got [link test][1]
@@ -28014,7 +28163,7 @@ showdown.subParser('anchors', function (text, options, globals) {
28014
28163
 
28015
28164
  // Lastly handle GithubMentions if option is enabled
28016
28165
  if (options.ghMentions) {
28017
- text = text.replace(/(^|\s)(\\)?(@([a-z\d\-]+))(?=[.!?;,[\]()]|\s|$)/gmi, function (wm, st, escape, mentions, username) {
28166
+ text = text.replace(/(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d.-]+?[a-z\d]+)*))/gmi, function (wm, st, escape, mentions, username) {
28018
28167
  if (escape === '\\') {
28019
28168
  return st + mentions;
28020
28169
  }
@@ -28026,7 +28175,7 @@ showdown.subParser('anchors', function (text, options, globals) {
28026
28175
  var lnk = options.ghMentionsLink.replace(/\{u}/g, username),
28027
28176
  target = '';
28028
28177
  if (options.openLinksInNewWindow) {
28029
- target = ' target="¨E95Eblank"';
28178
+ target = ' rel="noopener noreferrer" target="¨E95Eblank"';
28030
28179
  }
28031
28180
  return st + '<a href="' + lnk + '"' + target + '>' + mentions + '</a>';
28032
28181
  });
@@ -28059,7 +28208,7 @@ var simpleURLRegex = /([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+?\.[^'
28059
28208
  append = trailingPunctuation;
28060
28209
  }
28061
28210
  if (options.openLinksInNewWindow) {
28062
- target = ' target="¨E95Eblank"';
28211
+ target = ' rel="noopener noreferrer" target="¨E95Eblank"';
28063
28212
  }
28064
28213
  return lmc + '<a href="' + link + '"' + target + '>' + lnkTxt + '</a>' + append + tmc;
28065
28214
  };
@@ -28253,7 +28402,7 @@ showdown.subParser('codeSpans', function (text, options, globals) {
28253
28402
 
28254
28403
  text = globals.converter._dispatch('codeSpans.before', text, options, globals);
28255
28404
 
28256
- if (typeof(text) === 'undefined') {
28405
+ if (typeof (text) === 'undefined') {
28257
28406
  text = '';
28258
28407
  }
28259
28408
  text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,
@@ -28273,7 +28422,7 @@ showdown.subParser('codeSpans', function (text, options, globals) {
28273
28422
  });
28274
28423
 
28275
28424
  /**
28276
- * Turn Markdown link shortcuts into XHTML <a> tags.
28425
+ * Create a full HTML document from the processed markdown
28277
28426
  */
28278
28427
  showdown.subParser('completeHTMLDocument', function (text, options, globals) {
28279
28428
 
@@ -28369,6 +28518,10 @@ showdown.subParser('detab', function (text, options, globals) {
28369
28518
 
28370
28519
  showdown.subParser('ellipsis', function (text, options, globals) {
28371
28520
 
28521
+ if (!options.ellipsis) {
28522
+ return text;
28523
+ }
28524
+
28372
28525
  text = globals.converter._dispatch('ellipsis.before', text, options, globals);
28373
28526
 
28374
28527
  text = text.replace(/\.\.\./g, '…');
@@ -28379,8 +28532,9 @@ showdown.subParser('ellipsis', function (text, options, globals) {
28379
28532
  });
28380
28533
 
28381
28534
  /**
28382
- * These are all the transformations that occur *within* block-level
28383
- * tags like paragraphs, headers, and list items.
28535
+ * Turn emoji codes into emojis
28536
+ *
28537
+ * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis
28384
28538
  */
28385
28539
  showdown.subParser('emoji', function (text, options, globals) {
28386
28540
 
@@ -28442,7 +28596,7 @@ showdown.subParser('encodeBackslashEscapes', function (text, options, globals) {
28442
28596
  text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);
28443
28597
 
28444
28598
  text = text.replace(/\\(\\)/g, showdown.helper.escapeCharactersCallback);
28445
- text = text.replace(/\\([`*_{}\[\]()>#+.!~=|-])/g, showdown.helper.escapeCharactersCallback);
28599
+ text = text.replace(/\\([`*_{}\[\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);
28446
28600
 
28447
28601
  text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);
28448
28602
  return text;
@@ -28518,7 +28672,7 @@ showdown.subParser('githubCodeBlocks', function (text, options, globals) {
28518
28672
 
28519
28673
  text += '¨0';
28520
28674
 
28521
- text = text.replace(/(?:^|\n)(```+|~~~+)([^\s`~]*)\n([\s\S]*?)\n\1/g, function (wholeMatch, delim, language, codeblock) {
28675
+ text = text.replace(/(?:^|\n)(?: {0,3})(```+|~~~+)(?: *)([^\s`~]*)\n([\s\S]*?)\n(?: {0,3})\1/g, function (wholeMatch, delim, language, codeblock) {
28522
28676
  var end = (options.omitExtraWLInCodeBlocks) ? '' : '\n';
28523
28677
 
28524
28678
  // First parse the github code block
@@ -28659,7 +28813,7 @@ showdown.subParser('hashHTMLBlocks', function (text, options, globals) {
28659
28813
 
28660
28814
  //2. Split the text in that position
28661
28815
  var subTexts = showdown.helper.splitAtIndex(text, opTagPos),
28662
- //3. Match recursively
28816
+ //3. Match recursively
28663
28817
  newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');
28664
28818
 
28665
28819
  // prevent an infinite loop
@@ -28774,13 +28928,13 @@ showdown.subParser('headers', function (text, options, globals) {
28774
28928
 
28775
28929
  var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),
28776
28930
 
28777
- // Set text-style headers:
28778
- // Header 1
28779
- // ========
28780
- //
28781
- // Header 2
28782
- // --------
28783
- //
28931
+ // Set text-style headers:
28932
+ // Header 1
28933
+ // ========
28934
+ //
28935
+ // Header 2
28936
+ // --------
28937
+ //
28784
28938
  setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm,
28785
28939
  setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm;
28786
28940
 
@@ -28971,7 +29125,7 @@ showdown.subParser('images', function (text, options, globals) {
28971
29125
  url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);
28972
29126
  var result = '<img src="' + url + '" alt="' + altText + '"';
28973
29127
 
28974
- if (title) {
29128
+ if (title && showdown.helper.isString(title)) {
28975
29129
  title = title
28976
29130
  .replace(/"/g, '&quot;')
28977
29131
  //title = showdown.helper.escapeCharacters(title, '*_', false);
@@ -29032,10 +29186,10 @@ showdown.subParser('italicsAndBold', function (text, options, globals) {
29032
29186
 
29033
29187
  // Parse underscores
29034
29188
  if (options.literalMidWordUnderscores) {
29035
- text = text.replace(/\b___(\S[\s\S]*)___\b/g, function (wm, txt) {
29189
+ text = text.replace(/\b___(\S[\s\S]*?)___\b/g, function (wm, txt) {
29036
29190
  return parseInside (txt, '<strong><em>', '</em></strong>');
29037
29191
  });
29038
- text = text.replace(/\b__(\S[\s\S]*)__\b/g, function (wm, txt) {
29192
+ text = text.replace(/\b__(\S[\s\S]*?)__\b/g, function (wm, txt) {
29039
29193
  return parseInside (txt, '<strong>', '</strong>');
29040
29194
  });
29041
29195
  text = text.replace(/\b_(\S[\s\S]*?)_\b/g, function (wm, txt) {
@@ -29056,13 +29210,13 @@ showdown.subParser('italicsAndBold', function (text, options, globals) {
29056
29210
 
29057
29211
  // Now parse asterisks
29058
29212
  if (options.literalMidWordAsterisks) {
29059
- text = text.replace(/([^*]|^)\B\*\*\*(\S[\s\S]+?)\*\*\*\B(?!\*)/g, function (wm, lead, txt) {
29213
+ text = text.replace(/([^*]|^)\B\*\*\*(\S[\s\S]*?)\*\*\*\B(?!\*)/g, function (wm, lead, txt) {
29060
29214
  return parseInside (txt, lead + '<strong><em>', '</em></strong>');
29061
29215
  });
29062
- text = text.replace(/([^*]|^)\B\*\*(\S[\s\S]+?)\*\*\B(?!\*)/g, function (wm, lead, txt) {
29216
+ text = text.replace(/([^*]|^)\B\*\*(\S[\s\S]*?)\*\*\B(?!\*)/g, function (wm, lead, txt) {
29063
29217
  return parseInside (txt, lead + '<strong>', '</strong>');
29064
29218
  });
29065
- text = text.replace(/([^*]|^)\B\*(\S[\s\S]+?)\*\B(?!\*)/g, function (wm, lead, txt) {
29219
+ text = text.replace(/([^*]|^)\B\*(\S[\s\S]*?)\*\B(?!\*)/g, function (wm, lead, txt) {
29066
29220
  return parseInside (txt, lead + '<em>', '</em>');
29067
29221
  });
29068
29222
  } else {
@@ -29516,14 +29670,19 @@ showdown.subParser('strikethrough', function (text, options, globals) {
29516
29670
  */
29517
29671
  showdown.subParser('stripLinkDefinitions', function (text, options, globals) {
29518
29672
 
29519
- var regex = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*<?([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm,
29520
- base64Regex = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*<?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm;
29673
+ var regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*<?([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm,
29674
+ base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*<?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm;
29521
29675
 
29522
29676
  // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
29523
29677
  text += '¨0';
29524
29678
 
29525
29679
  var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {
29680
+
29681
+ // if there aren't two instances of linkId it must not be a reference link so back out
29526
29682
  linkId = linkId.toLowerCase();
29683
+ if (text.toLowerCase().split(linkId).length - 1 < 2) {
29684
+ return wholeMatch;
29685
+ }
29527
29686
  if (url.match(/^data:.+?\/.+?;base64,/)) {
29528
29687
  // remove newlines
29529
29688
  globals.gUrls[linkId] = url.replace(/\s/g, '');
@@ -29569,7 +29728,7 @@ showdown.subParser('tables', function (text, options, globals) {
29569
29728
  }
29570
29729
 
29571
29730
  var tableRgx = /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm,
29572
- //singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n(?: {0,3}\|.+\|\n)+(?:\n\n|¨0)/gm;
29731
+ //singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n(?: {0,3}\|.+\|\n)+(?:\n\n|¨0)/gm;
29573
29732
  singeColTblRgx = /^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm;
29574
29733
 
29575
29734
  function parseStyles (sLine) {
@@ -29711,11 +29870,17 @@ showdown.subParser('underline', function (text, options, globals) {
29711
29870
  text = globals.converter._dispatch('underline.before', text, options, globals);
29712
29871
 
29713
29872
  if (options.literalMidWordUnderscores) {
29714
- text = text.replace(/\b_?__(\S[\s\S]*)___?\b/g, function (wm, txt) {
29873
+ text = text.replace(/\b___(\S[\s\S]*?)___\b/g, function (wm, txt) {
29874
+ return '<u>' + txt + '</u>';
29875
+ });
29876
+ text = text.replace(/\b__(\S[\s\S]*?)__\b/g, function (wm, txt) {
29715
29877
  return '<u>' + txt + '</u>';
29716
29878
  });
29717
29879
  } else {
29718
- text = text.replace(/_?__(\S[\s\S]*?)___?/g, function (wm, m) {
29880
+ text = text.replace(/___(\S[\s\S]*?)___/g, function (wm, m) {
29881
+ return (/\S$/.test(m)) ? '<u>' + m + '</u>' : wm;
29882
+ });
29883
+ text = text.replace(/__(\S[\s\S]*?)__/g, function (wm, m) {
29719
29884
  return (/\S$/.test(m)) ? '<u>' + m + '</u>' : wm;
29720
29885
  });
29721
29886
  }
@@ -29743,6 +29908,474 @@ showdown.subParser('unescapeSpecialChars', function (text, options, globals) {
29743
29908
  return text;
29744
29909
  });
29745
29910
 
29911
+ showdown.subParser('makeMarkdown.blockquote', function (node, globals) {
29912
+
29913
+ var txt = '';
29914
+ if (node.hasChildNodes()) {
29915
+ var children = node.childNodes,
29916
+ childrenLength = children.length;
29917
+
29918
+ for (var i = 0; i < childrenLength; ++i) {
29919
+ var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);
29920
+
29921
+ if (innerTxt === '') {
29922
+ continue;
29923
+ }
29924
+ txt += innerTxt;
29925
+ }
29926
+ }
29927
+ // cleanup
29928
+ txt = txt.trim();
29929
+ txt = '> ' + txt.split('\n').join('\n> ');
29930
+ return txt;
29931
+ });
29932
+
29933
+ showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {
29934
+
29935
+ var lang = node.getAttribute('language'),
29936
+ num = node.getAttribute('precodenum');
29937
+ return '```' + lang + '\n' + globals.preList[num] + '\n```';
29938
+ });
29939
+
29940
+ showdown.subParser('makeMarkdown.codeSpan', function (node) {
29941
+
29942
+ return '`' + node.innerHTML + '`';
29943
+ });
29944
+
29945
+ showdown.subParser('makeMarkdown.emphasis', function (node, globals) {
29946
+
29947
+ var txt = '';
29948
+ if (node.hasChildNodes()) {
29949
+ txt += '*';
29950
+ var children = node.childNodes,
29951
+ childrenLength = children.length;
29952
+ for (var i = 0; i < childrenLength; ++i) {
29953
+ txt += showdown.subParser('makeMarkdown.node')(children[i], globals);
29954
+ }
29955
+ txt += '*';
29956
+ }
29957
+ return txt;
29958
+ });
29959
+
29960
+ showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {
29961
+
29962
+ var headerMark = new Array(headerLevel + 1).join('#'),
29963
+ txt = '';
29964
+
29965
+ if (node.hasChildNodes()) {
29966
+ txt = headerMark + ' ';
29967
+ var children = node.childNodes,
29968
+ childrenLength = children.length;
29969
+
29970
+ for (var i = 0; i < childrenLength; ++i) {
29971
+ txt += showdown.subParser('makeMarkdown.node')(children[i], globals);
29972
+ }
29973
+ }
29974
+ return txt;
29975
+ });
29976
+
29977
+ showdown.subParser('makeMarkdown.hr', function () {
29978
+
29979
+ return '---';
29980
+ });
29981
+
29982
+ showdown.subParser('makeMarkdown.image', function (node) {
29983
+
29984
+ var txt = '';
29985
+ if (node.hasAttribute('src')) {
29986
+ txt += '![' + node.getAttribute('alt') + '](';
29987
+ txt += '<' + node.getAttribute('src') + '>';
29988
+ if (node.hasAttribute('width') && node.hasAttribute('height')) {
29989
+ txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');
29990
+ }
29991
+
29992
+ if (node.hasAttribute('title')) {
29993
+ txt += ' "' + node.getAttribute('title') + '"';
29994
+ }
29995
+ txt += ')';
29996
+ }
29997
+ return txt;
29998
+ });
29999
+
30000
+ showdown.subParser('makeMarkdown.links', function (node, globals) {
30001
+
30002
+ var txt = '';
30003
+ if (node.hasChildNodes() && node.hasAttribute('href')) {
30004
+ var children = node.childNodes,
30005
+ childrenLength = children.length;
30006
+ txt = '[';
30007
+ for (var i = 0; i < childrenLength; ++i) {
30008
+ txt += showdown.subParser('makeMarkdown.node')(children[i], globals);
30009
+ }
30010
+ txt += '](';
30011
+ txt += '<' + node.getAttribute('href') + '>';
30012
+ if (node.hasAttribute('title')) {
30013
+ txt += ' "' + node.getAttribute('title') + '"';
30014
+ }
30015
+ txt += ')';
30016
+ }
30017
+ return txt;
30018
+ });
30019
+
30020
+ showdown.subParser('makeMarkdown.list', function (node, globals, type) {
30021
+
30022
+ var txt = '';
30023
+ if (!node.hasChildNodes()) {
30024
+ return '';
30025
+ }
30026
+ var listItems = node.childNodes,
30027
+ listItemsLenght = listItems.length,
30028
+ listNum = node.getAttribute('start') || 1;
30029
+
30030
+ for (var i = 0; i < listItemsLenght; ++i) {
30031
+ if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {
30032
+ continue;
30033
+ }
30034
+
30035
+ // define the bullet to use in list
30036
+ var bullet = '';
30037
+ if (type === 'ol') {
30038
+ bullet = listNum.toString() + '. ';
30039
+ } else {
30040
+ bullet = '- ';
30041
+ }
30042
+
30043
+ // parse list item
30044
+ txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);
30045
+ ++listNum;
30046
+ }
30047
+
30048
+ // add comment at the end to prevent consecutive lists to be parsed as one
30049
+ txt += '\n<!-- -->\n';
30050
+ return txt.trim();
30051
+ });
30052
+
30053
+ showdown.subParser('makeMarkdown.listItem', function (node, globals) {
30054
+
30055
+ var listItemTxt = '';
30056
+
30057
+ var children = node.childNodes,
30058
+ childrenLenght = children.length;
30059
+
30060
+ for (var i = 0; i < childrenLenght; ++i) {
30061
+ listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);
30062
+ }
30063
+ // if it's only one liner, we need to add a newline at the end
30064
+ if (!/\n$/.test(listItemTxt)) {
30065
+ listItemTxt += '\n';
30066
+ } else {
30067
+ // it's multiparagraph, so we need to indent
30068
+ listItemTxt = listItemTxt
30069
+ .split('\n')
30070
+ .join('\n ')
30071
+ .replace(/^ {4}$/gm, '')
30072
+ .replace(/\n\n+/g, '\n\n');
30073
+ }
30074
+
30075
+ return listItemTxt;
30076
+ });
30077
+
30078
+
30079
+
30080
+ showdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {
30081
+
30082
+ spansOnly = spansOnly || false;
30083
+
30084
+ var txt = '';
30085
+
30086
+ // edge case of text without wrapper paragraph
30087
+ if (node.nodeType === 3) {
30088
+ return showdown.subParser('makeMarkdown.txt')(node, globals);
30089
+ }
30090
+
30091
+ // HTML comment
30092
+ if (node.nodeType === 8) {
30093
+ return '<!--' + node.data + '-->\n\n';
30094
+ }
30095
+
30096
+ // process only node elements
30097
+ if (node.nodeType !== 1) {
30098
+ return '';
30099
+ }
30100
+
30101
+ var tagName = node.tagName.toLowerCase();
30102
+
30103
+ switch (tagName) {
30104
+
30105
+ //
30106
+ // BLOCKS
30107
+ //
30108
+ case 'h1':
30109
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\n\n'; }
30110
+ break;
30111
+ case 'h2':
30112
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\n\n'; }
30113
+ break;
30114
+ case 'h3':
30115
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\n\n'; }
30116
+ break;
30117
+ case 'h4':
30118
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\n\n'; }
30119
+ break;
30120
+ case 'h5':
30121
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\n\n'; }
30122
+ break;
30123
+ case 'h6':
30124
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\n\n'; }
30125
+ break;
30126
+
30127
+ case 'p':
30128
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\n\n'; }
30129
+ break;
30130
+
30131
+ case 'blockquote':
30132
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\n\n'; }
30133
+ break;
30134
+
30135
+ case 'hr':
30136
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\n\n'; }
30137
+ break;
30138
+
30139
+ case 'ol':
30140
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\n\n'; }
30141
+ break;
30142
+
30143
+ case 'ul':
30144
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\n\n'; }
30145
+ break;
30146
+
30147
+ case 'precode':
30148
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\n\n'; }
30149
+ break;
30150
+
30151
+ case 'pre':
30152
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\n\n'; }
30153
+ break;
30154
+
30155
+ case 'table':
30156
+ if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\n\n'; }
30157
+ break;
30158
+
30159
+ //
30160
+ // SPANS
30161
+ //
30162
+ case 'code':
30163
+ txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);
30164
+ break;
30165
+
30166
+ case 'em':
30167
+ case 'i':
30168
+ txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);
30169
+ break;
30170
+
30171
+ case 'strong':
30172
+ case 'b':
30173
+ txt = showdown.subParser('makeMarkdown.strong')(node, globals);
30174
+ break;
30175
+
30176
+ case 'del':
30177
+ txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);
30178
+ break;
30179
+
30180
+ case 'a':
30181
+ txt = showdown.subParser('makeMarkdown.links')(node, globals);
30182
+ break;
30183
+
30184
+ case 'img':
30185
+ txt = showdown.subParser('makeMarkdown.image')(node, globals);
30186
+ break;
30187
+
30188
+ default:
30189
+ txt = node.outerHTML + '\n\n';
30190
+ }
30191
+
30192
+ // common normalization
30193
+ // TODO eventually
30194
+
30195
+ return txt;
30196
+ });
30197
+
30198
+ showdown.subParser('makeMarkdown.paragraph', function (node, globals) {
30199
+
30200
+ var txt = '';
30201
+ if (node.hasChildNodes()) {
30202
+ var children = node.childNodes,
30203
+ childrenLength = children.length;
30204
+ for (var i = 0; i < childrenLength; ++i) {
30205
+ txt += showdown.subParser('makeMarkdown.node')(children[i], globals);
30206
+ }
30207
+ }
30208
+
30209
+ // some text normalization
30210
+ txt = txt.trim();
30211
+
30212
+ return txt;
30213
+ });
30214
+
30215
+ showdown.subParser('makeMarkdown.pre', function (node, globals) {
30216
+
30217
+ var num = node.getAttribute('prenum');
30218
+ return '<pre>' + globals.preList[num] + '</pre>';
30219
+ });
30220
+
30221
+ showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {
30222
+
30223
+ var txt = '';
30224
+ if (node.hasChildNodes()) {
30225
+ txt += '~~';
30226
+ var children = node.childNodes,
30227
+ childrenLength = children.length;
30228
+ for (var i = 0; i < childrenLength; ++i) {
30229
+ txt += showdown.subParser('makeMarkdown.node')(children[i], globals);
30230
+ }
30231
+ txt += '~~';
30232
+ }
30233
+ return txt;
30234
+ });
30235
+
30236
+ showdown.subParser('makeMarkdown.strong', function (node, globals) {
30237
+
30238
+ var txt = '';
30239
+ if (node.hasChildNodes()) {
30240
+ txt += '**';
30241
+ var children = node.childNodes,
30242
+ childrenLength = children.length;
30243
+ for (var i = 0; i < childrenLength; ++i) {
30244
+ txt += showdown.subParser('makeMarkdown.node')(children[i], globals);
30245
+ }
30246
+ txt += '**';
30247
+ }
30248
+ return txt;
30249
+ });
30250
+
30251
+ showdown.subParser('makeMarkdown.table', function (node, globals) {
30252
+
30253
+ var txt = '',
30254
+ tableArray = [[], []],
30255
+ headings = node.querySelectorAll('thead>tr>th'),
30256
+ rows = node.querySelectorAll('tbody>tr'),
30257
+ i, ii;
30258
+ for (i = 0; i < headings.length; ++i) {
30259
+ var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),
30260
+ allign = '---';
30261
+
30262
+ if (headings[i].hasAttribute('style')) {
30263
+ var style = headings[i].getAttribute('style').toLowerCase().replace(/\s/g, '');
30264
+ switch (style) {
30265
+ case 'text-align:left;':
30266
+ allign = ':---';
30267
+ break;
30268
+ case 'text-align:right;':
30269
+ allign = '---:';
30270
+ break;
30271
+ case 'text-align:center;':
30272
+ allign = ':---:';
30273
+ break;
30274
+ }
30275
+ }
30276
+ tableArray[0][i] = headContent.trim();
30277
+ tableArray[1][i] = allign;
30278
+ }
30279
+
30280
+ for (i = 0; i < rows.length; ++i) {
30281
+ var r = tableArray.push([]) - 1,
30282
+ cols = rows[i].getElementsByTagName('td');
30283
+
30284
+ for (ii = 0; ii < headings.length; ++ii) {
30285
+ var cellContent = ' ';
30286
+ if (typeof cols[ii] !== 'undefined') {
30287
+ cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);
30288
+ }
30289
+ tableArray[r].push(cellContent);
30290
+ }
30291
+ }
30292
+
30293
+ var cellSpacesCount = 3;
30294
+ for (i = 0; i < tableArray.length; ++i) {
30295
+ for (ii = 0; ii < tableArray[i].length; ++ii) {
30296
+ var strLen = tableArray[i][ii].length;
30297
+ if (strLen > cellSpacesCount) {
30298
+ cellSpacesCount = strLen;
30299
+ }
30300
+ }
30301
+ }
30302
+
30303
+ for (i = 0; i < tableArray.length; ++i) {
30304
+ for (ii = 0; ii < tableArray[i].length; ++ii) {
30305
+ if (i === 1) {
30306
+ if (tableArray[i][ii].slice(-1) === ':') {
30307
+ tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';
30308
+ } else {
30309
+ tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');
30310
+ }
30311
+ } else {
30312
+ tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);
30313
+ }
30314
+ }
30315
+ txt += '| ' + tableArray[i].join(' | ') + ' |\n';
30316
+ }
30317
+
30318
+ return txt.trim();
30319
+ });
30320
+
30321
+ showdown.subParser('makeMarkdown.tableCell', function (node, globals) {
30322
+
30323
+ var txt = '';
30324
+ if (!node.hasChildNodes()) {
30325
+ return '';
30326
+ }
30327
+ var children = node.childNodes,
30328
+ childrenLength = children.length;
30329
+
30330
+ for (var i = 0; i < childrenLength; ++i) {
30331
+ txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);
30332
+ }
30333
+ return txt.trim();
30334
+ });
30335
+
30336
+ showdown.subParser('makeMarkdown.txt', function (node) {
30337
+
30338
+ var txt = node.nodeValue;
30339
+
30340
+ // multiple spaces are collapsed
30341
+ txt = txt.replace(/ +/g, ' ');
30342
+
30343
+ // replace the custom ¨NBSP; with a space
30344
+ txt = txt.replace(/¨NBSP;/g, ' ');
30345
+
30346
+ // ", <, > and & should replace escaped html entities
30347
+ txt = showdown.helper.unescapeHTMLEntities(txt);
30348
+
30349
+ // escape markdown magic characters
30350
+ // emphasis, strong and strikethrough - can appear everywhere
30351
+ // we also escape pipe (|) because of tables
30352
+ // and escape ` because of code blocks and spans
30353
+ txt = txt.replace(/([*_~|`])/g, '\\$1');
30354
+
30355
+ // escape > because of blockquotes
30356
+ txt = txt.replace(/^(\s*)>/g, '\\$1>');
30357
+
30358
+ // hash character, only troublesome at the beginning of a line because of headers
30359
+ txt = txt.replace(/^#/gm, '\\#');
30360
+
30361
+ // horizontal rules
30362
+ txt = txt.replace(/^(\s*)([-=]{3,})(\s*)$/, '$1\\$2$3');
30363
+
30364
+ // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer
30365
+ txt = txt.replace(/^( {0,3}\d+)\./gm, '$1\\.');
30366
+
30367
+ // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)
30368
+ txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\$2');
30369
+
30370
+ // images and links, ] followed by ( is problematic, so we escape it
30371
+ txt = txt.replace(/]([\s]*)\(/g, '\\]$1\\(');
30372
+
30373
+ // reference URIs must also be escaped
30374
+ txt = txt.replace(/^ {0,3}\[([\S \t]*?)]:/gm, '\\[$1]:');
30375
+
30376
+ return txt;
30377
+ });
30378
+
29746
30379
  var root = this;
29747
30380
 
29748
30381
  // AMD Loader
@@ -30752,7 +31385,7 @@ const QuickStartController = ({ quickStart, nextQuickStarts, contentRef, footerC
30752
31385
  const getQuickStartActiveTask = React.useCallback(() => {
30753
31386
  let activeTaskNumber = 0;
30754
31387
  while (activeTaskNumber !== totalTasks &&
30755
- activeQuickStartState[`taskStatus${activeTaskNumber}`] !== QuickStartTaskStatus.INIT) {
31388
+ activeQuickStartState[`taskStatus${activeTaskNumber}`] === QuickStartTaskStatus.SUCCESS) {
30756
31389
  activeTaskNumber++;
30757
31390
  }
30758
31391
  return activeTaskNumber;