From 55b81d33d6cdf2b497d383602d4d0f1282e08dfa Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Tue, 10 May 2022 18:10:21 +0400 Subject: [PATCH 01/21] feat: add shared section HighlightedTweets --- gatsby-config.js | 21 + package-lock.json | 692 +++++++++++++++++- package.json | 2 + .../pages/blog-post/sidebar/sidebar.jsx | 3 +- .../pages/case-study/content/content.jsx | 2 +- .../highlighted-tweets/highlighted-tweets.jsx | 200 +++++ .../highlighted-tweets/images/chat.inline.svg | 3 + .../images/heart.inline.svg | 3 + .../images/retweet.inline.svg | 3 + .../shared/highlighted-tweets/index.js | 3 + src/constants/highlighted-tweets.js | 9 + src/styles/with-link.css | 6 + src/templates/blog-post.jsx | 4 +- 13 files changed, 941 insertions(+), 10 deletions(-) create mode 100644 src/components/shared/highlighted-tweets/highlighted-tweets.jsx create mode 100644 src/components/shared/highlighted-tweets/images/chat.inline.svg create mode 100644 src/components/shared/highlighted-tweets/images/heart.inline.svg create mode 100644 src/components/shared/highlighted-tweets/images/retweet.inline.svg create mode 100644 src/components/shared/highlighted-tweets/index.js create mode 100644 src/constants/highlighted-tweets.js diff --git a/gatsby-config.js b/gatsby-config.js index e3202067..daabf8b8 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -2,6 +2,8 @@ // eslint-disable-next-line import/no-extraneous-dependencies require('dotenv').config(); +const highlightedTweets = require('./src/constants/highlighted-tweets'); + module.exports = { flags: { DEV_SSR: process.env.GATSBY_DEV_SSR || false }, siteMetadata: { @@ -101,6 +103,25 @@ module.exports = { ], }, }, + { + resolve: 'gatsby-source-twitter', + options: { + credentials: { + consumer_key: process.env.TWITTER_CONSUMER_KEY, + consumer_secret: process.env.TWITTER_CONSUMER_SECRET, + bearer_token: process.env.TWITTER_BEARER_TOKEN, + }, + queries: { + alex_barashkov: { + endpoint: 'statuses/lookup', + params: { + id: highlightedTweets.join(','), + tweet_mode: 'extended', + }, + }, + }, + }, + }, { resolve: 'gatsby-plugin-netlify', options: { diff --git a/package-lock.json b/package-lock.json index 5ef252d3..37763698 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@tailwindcss/line-clamp": "^0.3.1", "clsx": "^1.1.1", + "emoji-regex": "^10.1.0", "framer-motion": "^6.2.4", "gatsby": "^4.6.2", "gatsby-plugin-image": "^2.6.0", @@ -55,6 +56,7 @@ "gatsby-remark-images": "^6.7.0", "gatsby-remark-prismjs": "^6.7.0", "gatsby-source-filesystem": "^4.6.0", + "gatsby-source-twitter": "^4.0.1", "gatsby-transformer-sharp": "^4.6.0", "husky": "^7.0.4", "lint-staged": "^12.3.3", @@ -4828,6 +4830,24 @@ "node": ">=8" } }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -4909,6 +4929,21 @@ "postcss": "^8.1.0" } }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, "node_modules/axe-core": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.0.tgz", @@ -5243,6 +5278,15 @@ "node": "^4.5.0 || >= 5.9" } }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/better-opn": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", @@ -5733,6 +5777,12 @@ "url": "https://opencollective.com/browserslist" } }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, "node_modules/ccount": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", @@ -6097,6 +6147,12 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "node_modules/cli-truncate/node_modules/string-width": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz", @@ -7213,6 +7269,18 @@ "node": ">=8" } }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/dataloader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", @@ -7757,6 +7825,16 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7768,9 +7846,9 @@ "integrity": "sha512-AOJ3cAE0TWxz4fQ9zkND5hWrQg16nsZKVz9INOot1oV//u4wWu5xrj9CQMmPTYskkZRunSRc9sAnr4EkexXokg==" }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", + "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -8329,6 +8407,11 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, "node_modules/eslint-plugin-react": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", @@ -9113,6 +9196,15 @@ "url": "https://github.com/sponsors/jaydenseric" } }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9431,6 +9523,15 @@ "node": ">=0.10.0" } }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", @@ -11300,6 +11401,21 @@ "node": ">=0.10.0" } }, + "node_modules/gatsby-source-twitter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/gatsby-source-twitter/-/gatsby-source-twitter-4.0.1.tgz", + "integrity": "sha512-b3A1JG5VkKxk3vqh7cOKev8S8UR1ZX2p6KWg78qa33iW34PRPgB/PHuSH4ECYBFxwxKr5zedAIH7RyYoBJ352Q==", + "dev": true, + "dependencies": { + "twitter": "^1.7.1" + }, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "gatsby": "^3.0.0 || ^4.0.0" + } + }, "node_modules/gatsby-telemetry": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-3.6.0.tgz", @@ -12186,6 +12302,15 @@ "node": ">=0.10.0" } }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/gifwrap": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", @@ -12531,6 +12656,29 @@ "node": ">=6" } }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -12928,6 +13076,21 @@ "node": ">=8.0.0" } }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -13887,6 +14050,12 @@ "ws": "*" } }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, "node_modules/iterall": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", @@ -13969,6 +14138,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -14000,6 +14175,12 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -14010,6 +14191,12 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, "node_modules/json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -14087,6 +14274,21 @@ "node": "*" } }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/jsx-ast-utils": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", @@ -15895,6 +16097,15 @@ "node": ">=0.10.0" } }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -16851,6 +17062,12 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, "node_modules/phin": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", @@ -17879,6 +18096,12 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -19221,6 +19444,71 @@ "node": ">= 0.10" } }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -20363,6 +20651,31 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/st": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/st/-/st-2.0.0.tgz", @@ -21763,6 +22076,19 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -21929,6 +22255,32 @@ "node": "*" } }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/twitter": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", + "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", + "dev": true, + "dependencies": { + "deep-extend": "^0.5.0", + "request": "^2.72.0" + } + }, + "node_modules/twitter/node_modules/deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -22748,6 +23100,26 @@ "node": ">= 0.8" } }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, "node_modules/vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", @@ -27060,6 +27432,21 @@ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -27116,6 +27503,18 @@ "postcss-value-parser": "^4.2.0" } }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, "axe-core": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.0.tgz", @@ -27373,6 +27772,15 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, "better-opn": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", @@ -27729,6 +28137,12 @@ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz", "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==" }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, "ccount": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", @@ -28006,6 +28420,12 @@ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "string-width": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz", @@ -28850,6 +29270,15 @@ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, "dataloader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", @@ -29270,6 +29699,16 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -29281,9 +29720,9 @@ "integrity": "sha512-AOJ3cAE0TWxz4fQ9zkND5hWrQg16nsZKVz9INOot1oV//u4wWu5xrj9CQMmPTYskkZRunSRc9sAnr4EkexXokg==" }, "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", + "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==" }, "emojis-list": { "version": "3.0.0", @@ -29789,6 +30228,13 @@ "jsx-ast-utils": "^3.2.1", "language-tags": "^1.0.5", "minimatch": "^3.0.4" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + } } }, "eslint-plugin-react": { @@ -30303,6 +30749,12 @@ "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -30529,6 +30981,12 @@ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, "fork-ts-checker-webpack-plugin": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", @@ -32341,6 +32799,15 @@ } } }, + "gatsby-source-twitter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/gatsby-source-twitter/-/gatsby-source-twitter-4.0.1.tgz", + "integrity": "sha512-b3A1JG5VkKxk3vqh7cOKev8S8UR1ZX2p6KWg78qa33iW34PRPgB/PHuSH4ECYBFxwxKr5zedAIH7RyYoBJ352Q==", + "dev": true, + "requires": { + "twitter": "^1.7.1" + } + }, "gatsby-telemetry": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-3.6.0.tgz", @@ -32580,6 +33047,15 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, "gifwrap": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", @@ -32860,6 +33336,22 @@ "pify": "^4.0.1" } }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -33165,6 +33657,17 @@ "requires-port": "^1.0.0" } }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -33821,6 +34324,12 @@ "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", "requires": {} }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, "iterall": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", @@ -33893,6 +34402,12 @@ "argparse": "^2.0.1" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -33918,6 +34433,12 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -33928,6 +34449,12 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, "json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -33990,6 +34517,18 @@ "through": ">=2.2.7 <3" } }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, "jsx-ast-utils": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", @@ -35406,6 +35945,12 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -36139,6 +36684,12 @@ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.2.tgz", "integrity": "sha512-9fMaz6zoxw9ypO1KZy5RDJgSupEtu0Q+g/OqqsVHX3rKGR8qehRLYzsFARZ4bVvdvfknKiXvuDbkMnO1g6cRpQ==" }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, "phin": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", @@ -36811,6 +37362,12 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -37837,6 +38394,59 @@ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -38726,6 +39336,23 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "st": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/st/-/st-2.0.0.tgz", @@ -39786,6 +40413,16 @@ "ieee754": "^1.2.1" } }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -39908,6 +40545,30 @@ "safe-buffer": "^5.0.1" } }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "twitter": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", + "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", + "dev": true, + "requires": { + "deep-extend": "^0.5.0", + "request": "^2.72.0" + }, + "dependencies": { + "deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "dev": true + } + } + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -40514,6 +41175,25 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + } + } + }, "vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", diff --git a/package.json b/package.json index 8ffda0ab..bb34033a 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "dependencies": { "@tailwindcss/line-clamp": "^0.3.1", "clsx": "^1.1.1", + "emoji-regex": "^10.1.0", "framer-motion": "^6.2.4", "gatsby": "^4.6.2", "gatsby-plugin-image": "^2.6.0", @@ -79,6 +80,7 @@ "gatsby-remark-images": "^6.7.0", "gatsby-remark-prismjs": "^6.7.0", "gatsby-source-filesystem": "^4.6.0", + "gatsby-source-twitter": "^4.0.1", "gatsby-transformer-sharp": "^4.6.0", "husky": "^7.0.4", "lint-staged": "^12.3.3", diff --git a/src/components/pages/blog-post/sidebar/sidebar.jsx b/src/components/pages/blog-post/sidebar/sidebar.jsx index 5dcb3806..6ed87290 100644 --- a/src/components/pages/blog-post/sidebar/sidebar.jsx +++ b/src/components/pages/blog-post/sidebar/sidebar.jsx @@ -4,7 +4,6 @@ import React from 'react'; import { LinkedinShareButton, TwitterShareButton } from 'react-share'; import Link from 'components/shared/link'; -import LINKS from 'constants/links.js'; import POST_AUTHORS from 'constants/post-authors'; import LinkedinIcon from 'images/linkedin.inline.svg'; import TwitterIcon from 'images/twitter.inline.svg'; @@ -26,7 +25,7 @@ const Sidebar = ({ author, readMorePosts, socialShareUrl }) => ( {POST_AUTHORS[author].twitterUrl && ( diff --git a/src/components/pages/case-study/content/content.jsx b/src/components/pages/case-study/content/content.jsx index 1d024264..c6c97b7a 100644 --- a/src/components/pages/case-study/content/content.jsx +++ b/src/components/pages/case-study/content/content.jsx @@ -37,7 +37,7 @@ const Content = ({ size="base" theme="arrow-red" target="_blank" - rel="noopener noreferrer" + rel="noopener" > Visit {title} diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx new file mode 100644 index 00000000..efb3a6ca --- /dev/null +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -0,0 +1,200 @@ +/* eslint-disable camelcase */ +import clsx from 'clsx'; +import emojiRegex from 'emoji-regex'; +import { graphql, useStaticQuery } from 'gatsby'; +import { StaticImage } from 'gatsby-plugin-image'; +import PropTypes from 'prop-types'; +import React from 'react'; + +import Link from 'components/shared/link'; +import highlightedTweets from 'constants/highlighted-tweets'; +import LINKS from 'constants/links'; +import TwitterIcon from 'images/twitter.inline.svg'; + +import ChatIcon from './images/chat.inline.svg'; +import HeartIcon from './images/heart.inline.svg'; +import RetweetIcon from './images/retweet.inline.svg'; + +function getCorrectIndice(text, indice) { + const slice = text.slice(0, indice); + const emoji = slice.match(emojiRegex()); + const emojiCount = emoji?.length; + const emojiStringLength = emoji?.join('')?.length; + const emojiExtraLength = emojiStringLength - emojiCount; + + return emojiExtraLength ? indice + emojiExtraLength : indice; +} + +function getCorrectDisplayText(text, display_text_range) { + return text.slice( + getCorrectIndice(text, display_text_range[0]), + getCorrectIndice(text, display_text_range[1]) + ); +} + +function handleUserMentions(text, userMentions) { + let textWithUserMentions = text; + + userMentions.forEach(({ screen_name }) => { + textWithUserMentions = textWithUserMentions.replace( + `@${screen_name}`, + `@${screen_name}` + ); + }); + + return textWithUserMentions; +} + +function handleUrls(text, urls) { + let textWithUrls = text; + + urls.forEach(({ display_url, url }) => { + textWithUrls = textWithUrls.replace( + url, + `${display_url}` + ); + }); + + return textWithUrls; +} + +function handleTextFormatting(text, { userMentions, urls }) { + let formattedText = text; + + if (userMentions && userMentions.length > 0) { + formattedText = handleUserMentions(formattedText, userMentions); + } + + if (urls && urls.length > 0) { + formattedText = handleUrls(formattedText, urls); + } + + return formattedText; +} + +const HighlightedTweets = ({ withTopMargin }) => { + const { + allTwitterStatusesLookupAlexBarashkov: { nodes: items }, + } = useStaticQuery(graphql` + query { + allTwitterStatusesLookupAlexBarashkov { + nodes { + id_str + full_text + display_text_range + retweet_count + favorite_count + entities { + media { + type + media_url_https + } + user_mentions { + screen_name + } + urls { + display_url + url + } + } + } + } + } + `); + + // We have to sort on our own because sort in a graphql query is not working for some reason =/ + const sortedItems = highlightedTweets.map((tweetId) => + items.find(({ id_str }) => id_str === tweetId) + ); + + return ( +
+
+

Highlighted tweets

+
+ + + Alex Barashkov — CEO at Pixel Point + + + Follow + +
+
+ +
+ ); +}; + +HighlightedTweets.propTypes = { + withTopMargin: PropTypes.bool, +}; + +HighlightedTweets.defaultProps = { + withTopMargin: false, +}; + +export default HighlightedTweets; diff --git a/src/components/shared/highlighted-tweets/images/chat.inline.svg b/src/components/shared/highlighted-tweets/images/chat.inline.svg new file mode 100644 index 00000000..f4cb44d4 --- /dev/null +++ b/src/components/shared/highlighted-tweets/images/chat.inline.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/shared/highlighted-tweets/images/heart.inline.svg b/src/components/shared/highlighted-tweets/images/heart.inline.svg new file mode 100644 index 00000000..0f7fd040 --- /dev/null +++ b/src/components/shared/highlighted-tweets/images/heart.inline.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/shared/highlighted-tweets/images/retweet.inline.svg b/src/components/shared/highlighted-tweets/images/retweet.inline.svg new file mode 100644 index 00000000..63e1f738 --- /dev/null +++ b/src/components/shared/highlighted-tweets/images/retweet.inline.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/shared/highlighted-tweets/index.js b/src/components/shared/highlighted-tweets/index.js new file mode 100644 index 00000000..2133de7e --- /dev/null +++ b/src/components/shared/highlighted-tweets/index.js @@ -0,0 +1,3 @@ +import HighlightedTweets from './highlighted-tweets'; + +export default HighlightedTweets; diff --git a/src/constants/highlighted-tweets.js b/src/constants/highlighted-tweets.js new file mode 100644 index 00000000..98422c04 --- /dev/null +++ b/src/constants/highlighted-tweets.js @@ -0,0 +1,9 @@ +module.exports = [ + '1522180608025403392', + '1521506108556419072', + '1499428622746230789', + '1509124020465291264', + '1496140897356034050', + '1488475565845843974', + '1461375333496758281', +]; diff --git a/src/styles/with-link.css b/src/styles/with-link.css index f02ab990..c49e0f42 100644 --- a/src/styles/with-link.css +++ b/src/styles/with-link.css @@ -8,4 +8,10 @@ .with-nested-link-red-hover:hover .nested-link-red { @apply text-blue; } + + .with-link-twitter { + a { + @apply font-normal text-[#259df4] transition-colors duration-200 hover:text-[#1781cf]; + } + } } diff --git a/src/templates/blog-post.jsx b/src/templates/blog-post.jsx index 12fe4af5..43eb336f 100644 --- a/src/templates/blog-post.jsx +++ b/src/templates/blog-post.jsx @@ -6,6 +6,7 @@ import Content from 'components/pages/blog-post/content'; import Hero from 'components/pages/blog-post/hero'; import Sidebar from 'components/pages/blog-post/sidebar'; import CTA from 'components/shared/cta'; +import HighlightedTweets from 'components/shared/highlighted-tweets'; import Layout from 'components/shared/layout'; import SEO_DATA from 'constants/seo-data'; @@ -39,7 +40,8 @@ const BlogPostTemplate = ({ - + + ); From 33b343ae31cf896bea52cbe0c7d2dc2d536d9d57 Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Tue, 10 May 2022 18:24:23 +0400 Subject: [PATCH 02/21] feat: add section HighlightedTweets on the page Blog --- .../pages/blog/categories/categories.jsx | 43 ++++++++ src/components/pages/blog/categories/index.js | 3 + src/components/pages/blog/hero/hero.jsx | 13 +++ src/components/pages/blog/hero/index.js | 3 + .../pages/blog/posts-list/posts-list.jsx | 36 +----- .../highlighted-tweets/highlighted-tweets.jsx | 103 +++++++++++++----- src/constants/blog.js | 2 +- src/templates/blog-post.jsx | 2 +- src/templates/blog.jsx | 40 ++++--- 9 files changed, 169 insertions(+), 76 deletions(-) create mode 100644 src/components/pages/blog/categories/categories.jsx create mode 100644 src/components/pages/blog/categories/index.js create mode 100644 src/components/pages/blog/hero/hero.jsx create mode 100644 src/components/pages/blog/hero/index.js diff --git a/src/components/pages/blog/categories/categories.jsx b/src/components/pages/blog/categories/categories.jsx new file mode 100644 index 00000000..962aafae --- /dev/null +++ b/src/components/pages/blog/categories/categories.jsx @@ -0,0 +1,43 @@ +import clsx from 'clsx'; +import PropTypes from 'prop-types'; +import React from 'react'; + +import Link from 'components/shared/link'; +import { BLOG_CATEGORIES } from 'constants/blog'; +import getBlogPath from 'utils/get-blog-path'; + +const Categories = ({ activeCategory }) => ( +
+
+
    + {['All', ...BLOG_CATEGORIES].map((category, index) => ( +
  • + + {category} + + {category} + + +
  • + ))} +
+
+
+); + +Categories.propTypes = { + activeCategory: PropTypes.oneOf(BLOG_CATEGORIES), +}; + +Categories.defaultProps = { + activeCategory: null, +}; + +export default Categories; diff --git a/src/components/pages/blog/categories/index.js b/src/components/pages/blog/categories/index.js new file mode 100644 index 00000000..4fecfe0f --- /dev/null +++ b/src/components/pages/blog/categories/index.js @@ -0,0 +1,3 @@ +import Categories from './categories'; + +export default Categories; diff --git a/src/components/pages/blog/hero/hero.jsx b/src/components/pages/blog/hero/hero.jsx new file mode 100644 index 00000000..89c57644 --- /dev/null +++ b/src/components/pages/blog/hero/hero.jsx @@ -0,0 +1,13 @@ +import React from 'react'; + +const Hero = () => ( +
+
+

+ Sharing Pixel Point Collective experience: +

+
+
+); + +export default Hero; diff --git a/src/components/pages/blog/hero/index.js b/src/components/pages/blog/hero/index.js new file mode 100644 index 00000000..cffaeab2 --- /dev/null +++ b/src/components/pages/blog/hero/index.js @@ -0,0 +1,3 @@ +import Hero from './hero'; + +export default Hero; diff --git a/src/components/pages/blog/posts-list/posts-list.jsx b/src/components/pages/blog/posts-list/posts-list.jsx index a194a7fd..7ce523ef 100644 --- a/src/components/pages/blog/posts-list/posts-list.jsx +++ b/src/components/pages/blog/posts-list/posts-list.jsx @@ -1,4 +1,3 @@ -import clsx from 'clsx'; import { GatsbyImage, getImage } from 'gatsby-plugin-image'; import PropTypes from 'prop-types'; import React from 'react'; @@ -6,36 +5,13 @@ import React from 'react'; import Link from 'components/shared/link'; import { BLOG_CATEGORIES } from 'constants/blog'; import POST_AUTHORS from 'constants/post-authors'; -import getBlogPath from 'utils/get-blog-path'; import getBlogPostDateFromSlug from 'utils/get-blog-post-date-from-slug'; import getBlogPostPath from 'utils/get-blog-post-path'; -const PostsList = ({ activeCategory, items }) => ( -
+const PostsList = ({ items }) => ( +
-

- Sharing Pixel Point Collective experience: -

-
    - {['All', ...BLOG_CATEGORIES].map((category, index) => ( -
  • - - {category} - - {category} - - -
  • - ))} -
-
+
{items.map(({ slug, frontmatter: { title, summary, category, author, cover } }, index) => (
@@ -77,6 +53,7 @@ const PostsList = ({ activeCategory, items }) => ( imgClassName="rounded-xl" image={getImage(cover)} alt="" + aria-hidden />
@@ -88,7 +65,6 @@ const PostsList = ({ activeCategory, items }) => ( ); PostsList.propTypes = { - activeCategory: PropTypes.oneOf(BLOG_CATEGORIES), items: PropTypes.arrayOf( PropTypes.exact({ slug: PropTypes.string.isRequired, @@ -107,8 +83,4 @@ PostsList.propTypes = { ).isRequired, }; -PostsList.defaultProps = { - activeCategory: null, -}; - export default PostsList; diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index efb3a6ca..a039e3e7 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -72,7 +72,7 @@ function handleTextFormatting(text, { userMentions, urls }) { return formattedText; } -const HighlightedTweets = ({ withTopMargin }) => { +const HighlightedTweets = ({ className }) => { const { allTwitterStatusesLookupAlexBarashkov: { nodes: items }, } = useStaticQuery(graphql` @@ -97,6 +97,18 @@ const HighlightedTweets = ({ withTopMargin }) => { url } } + extended_entities { + media { + type + video_info { + variants { + bitrate + content_type + url + } + } + } + } } } } @@ -109,10 +121,7 @@ const HighlightedTweets = ({ withTopMargin }) => { return (

Highlighted tweets

@@ -136,15 +145,17 @@ const HighlightedTweets = ({ withTopMargin }) => {
-
    +
      {sortedItems.map( ( { + id_str, full_text, display_text_range, retweet_count, favorite_count, entities: { media, user_mentions, urls }, + extended_entities, }, index ) => { @@ -155,31 +166,67 @@ const HighlightedTweets = ({ withTopMargin }) => { urls, }); + let mediaType; + let mediaUrl; + + if ( + extended_entities && + extended_entities.media && + extended_entities.media.length > 0 && + extended_entities.media[0].type === 'video' + ) { + mediaType = 'video'; + const videoWithHighestBitrate = extended_entities.media[0].video_info.variants + .filter(({ content_type }) => content_type === 'video/mp4') + .sort((a, b) => b.bitrate - a.bitrate)[0]; + mediaUrl = videoWithHighestBitrate.url; + } else if (media && media.length > 0 && media[0].type === 'photo') { + mediaType = 'photo'; + mediaUrl = media[0].media_url_https; + } + return (
    • -

      - {media && media.length > 0 && media[0].type === 'photo' && ( - - )} -

        -
      • - 0 -
      • -
      • - {retweet_count} -
      • -
      • - {' '} - {favorite_count} -
      • -
      + +

      + {mediaType === 'video' && mediaUrl && ( + + )} + {mediaType === 'photo' && mediaUrl && } +

        +
      • + 0 +
      • +
      • + {retweet_count} +
      • +
      • + {' '} + {favorite_count} +
      • +
      +
    • ); } @@ -190,11 +237,11 @@ const HighlightedTweets = ({ withTopMargin }) => { }; HighlightedTweets.propTypes = { - withTopMargin: PropTypes.bool, + className: PropTypes.string, }; HighlightedTweets.defaultProps = { - withTopMargin: false, + className: null, }; export default HighlightedTweets; diff --git a/src/constants/blog.js b/src/constants/blog.js index 04c08ab4..f663fcd0 100644 --- a/src/constants/blog.js +++ b/src/constants/blog.js @@ -1,6 +1,6 @@ const BLOG_BASE_PATH = '/blog/'; const BLOG_CATEGORIES = ['Development', 'Design', 'Misc']; -const BLOG_POSTS_PER_PAGE = 15; +const BLOG_POSTS_PER_PAGE = 16; // We are using ES modules here in order to be able to import variables from this file in gatsby-node.js module.exports = { diff --git a/src/templates/blog-post.jsx b/src/templates/blog-post.jsx index 43eb336f..2c928851 100644 --- a/src/templates/blog-post.jsx +++ b/src/templates/blog-post.jsx @@ -40,7 +40,7 @@ const BlogPostTemplate = ({
- + ); diff --git a/src/templates/blog.jsx b/src/templates/blog.jsx index cb96b3f6..6ec22f3e 100644 --- a/src/templates/blog.jsx +++ b/src/templates/blog.jsx @@ -2,10 +2,13 @@ import { graphql } from 'gatsby'; import React from 'react'; +import Categories from 'components/pages/blog/categories'; +import Hero from 'components/pages/blog/hero'; import Pagination from 'components/pages/blog/pagination'; import PostsList from 'components/pages/blog/posts-list'; import CaseStudies from 'components/shared/case-studies'; import CTA from 'components/shared/cta'; +import HighlightedTweets from 'components/shared/highlighted-tweets'; import Layout from 'components/shared/layout'; import SEO_DATA from 'constants/seo-data'; @@ -14,20 +17,29 @@ const BlogTemplate = ({ allMdx: { nodes: items }, }, pageContext: { currentPageIndex, pageCount, category }, -}) => ( - - - {pageCount > 1 && ( - - )} - - - -); +}) => { + const itemsPart1 = items.slice(0, Math.ceil(items.length / 2)); + const itemsPart2 = items.slice(Math.ceil(items.length / 2)); + + return ( + + + + + + + {pageCount > 1 && ( + + )} + + + + ); +}; export const query = graphql` query ($category: String, $draftFilter: [Boolean]!, $limit: Int!, $skip: Int!) { From d2171948a50c40da01b669b45068a812e9181fff Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Thu, 9 Jun 2022 11:04:45 +0500 Subject: [PATCH 03/21] feat: add dark theme support for shared section HighlightedTweets --- .../shared/highlighted-tweets/highlighted-tweets.jsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index af56edac..cc2ea29c 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -121,7 +121,10 @@ const HighlightedTweets = ({ className }) => { return (

Highlighted tweets

@@ -190,7 +193,7 @@ const HighlightedTweets = ({ className }) => { return (
  • From 7993057c462aca008c441fa4af7007be82d25b54 Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Mon, 13 Jun 2022 16:50:10 +0500 Subject: [PATCH 04/21] feat: finish section --- gatsby-config.js | 21 - gatsby-node.js | 61 ++ package-lock.json | 871 +++++------------- package.json | 6 +- .../highlighted-tweets/highlighted-tweets.jsx | 138 ++- src/constants/highlighted-tweets.js | 38 +- 6 files changed, 368 insertions(+), 767 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index 9e180642..f66f68d9 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -2,8 +2,6 @@ // eslint-disable-next-line import/no-extraneous-dependencies require('dotenv').config(); -const highlightedTweets = require('./src/constants/highlighted-tweets'); - module.exports = { trailingSlash: 'always', flags: { DEV_SSR: process.env.GATSBY_DEV_SSR || false }, @@ -120,25 +118,6 @@ module.exports = { ], }, }, - { - resolve: 'gatsby-source-twitter', - options: { - credentials: { - consumer_key: process.env.TWITTER_CONSUMER_KEY, - consumer_secret: process.env.TWITTER_CONSUMER_SECRET, - bearer_token: process.env.TWITTER_BEARER_TOKEN, - }, - queries: { - alex_barashkov: { - endpoint: 'statuses/lookup', - params: { - id: highlightedTweets.join(','), - tweet_mode: 'extended', - }, - }, - }, - }, - }, { resolve: 'gatsby-plugin-gatsby-cloud', options: { diff --git a/gatsby-node.js b/gatsby-node.js index 76d949a1..0d3bedd9 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -2,10 +2,13 @@ const path = require('path'); const get = require('lodash.get'); +const md5 = require('md5'); const fetch = require('node-fetch'); +const Twitter = require('twitter-v2'); const { BLOG_CATEGORIES, BLOG_POSTS_PER_PAGE } = require('./src/constants/blog'); const { CASE_STUDIES_BASE_PATH } = require('./src/constants/case-studies'); +const highlightedTweets = require('./src/constants/highlighted-tweets'); const getBlogPath = require('./src/utils/get-blog-path'); const getBlogPostPath = require('./src/utils/get-blog-post-path'); @@ -337,6 +340,64 @@ exports.createSchemaCustomization = ({ actions }) => { `); }; +exports.sourceNodes = async ({ actions, createContentDigest }) => { + function generateNode(tweet, contentDigest, type) { + return { + ...tweet, + id: md5(tweet.id), + tweet_id: tweet.id, + children: [], + parent: `__SOURCE__`, + internal: { + type, + contentDigest, + }, + }; + } + + const { createNode } = actions; + + function createNodes(tweets, nodeType) { + tweets.forEach((tweet) => { + createNode(generateNode(tweet, createContentDigest(tweet), nodeType)); + }); + } + + const client = new Twitter({ + consumer_key: process.env.TWITTER_CONSUMER_KEY, + consumer_secret: process.env.TWITTER_CONSUMER_SECRET, + }); + + const { data, includes } = await client.get( + `tweets?ids=${Object.keys(highlightedTweets).join( + ',' + )}&tweet.fields=entities,public_metrics&expansions=attachments.media_keys,entities.mentions.username&media.fields=media_key,preview_image_url,type,url,variants` + ); + const nodeType = 'highlightedTweet'; + + const dataWithMedia = data.map((tweet) => { + const newTweet = { ...tweet }; + + if (tweet.attachments?.media_keys) { + const media = []; + tweet.attachments.media_keys.forEach((mediaKey) => { + media.push(includes.media.find((media) => media.media_key === mediaKey)); + }); + newTweet.media = media; + } + + return newTweet; + }); + + if (dataWithMedia.length) { + createNodes(dataWithMedia, nodeType); + } else { + throw new Error('Failed to fetch highlighted tweets'); + } + + return Promise.resolve(); +}; + exports.createPages = async (options) => { await createBlogPages(options); await createBlogPosts(options); diff --git a/package-lock.json b/package-lock.json index 75925857..298cbde6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "@mdx-js/react": "1.6.22", "@tailwindcss/line-clamp": "^0.4.0", "clsx": "^1.1.1", - "emoji-regex": "^10.1.0", "framer-motion": "^6.3.6", "gatsby": "^4.15.2", "gatsby-plugin-gatsby-cloud": "^4.15.0", @@ -59,16 +58,17 @@ "gatsby-remark-images": "^6.15.1", "gatsby-remark-prismjs": "^6.15.0", "gatsby-source-filesystem": "^4.15.0", - "gatsby-source-twitter": "^4.0.1", "gatsby-transformer-json": "^4.15.0", "gatsby-transformer-sharp": "^4.15.1", "husky": "^8.0.1", "lint-staged": "^13.0.0", "markdownlint-cli": "^0.31.1", + "md5": "^2.3.0", "postcss": "^8.4.14", "postcss-import": "^14.1.0", "prettier": "^2.6.2", - "prettier-plugin-tailwindcss": "^0.1.11" + "prettier-plugin-tailwindcss": "^0.1.11", + "twitter-v2": "^1.1.0" }, "engines": { "node": ">=16.0.0", @@ -2451,6 +2451,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@gatsbyjs/parcel-namer-relative-to-cwd": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-1.1.0.tgz", @@ -4654,6 +4665,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@parcel/packager-js/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@parcel/packager-raw": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.6.0.tgz", @@ -6487,24 +6509,6 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -6593,21 +6597,6 @@ "postcss": "^8.1.0" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, "node_modules/axe-core": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.2.tgz", @@ -6949,15 +6938,6 @@ "node": "^4.5.0 || >= 5.9" } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/better-opn": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", @@ -7171,6 +7151,17 @@ "node": ">=8" } }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -7451,12 +7442,6 @@ "upper-case-first": "^2.0.2" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, "node_modules/ccount": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", @@ -7556,6 +7541,15 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/cheerio": { "version": "1.0.0-rc.11", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.11.tgz", @@ -8471,6 +8465,15 @@ "node": ">= 8" } }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -8812,18 +8815,6 @@ "node": ">=8" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/dataloader": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", @@ -9357,16 +9348,6 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -9377,11 +9358,6 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.150.tgz", "integrity": "sha512-MP3oBer0X7ZeS9GJ0H6lmkn561UxiwOIY9TTkdxVY7lI9G6GVCKfgJaHaDcakwdKxBXA4T3ybeswH/WBIN/KTA==" }, - "node_modules/emoji-regex": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", - "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==" - }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -10227,6 +10203,17 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { "version": "9.3.2", "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", @@ -10602,15 +10589,6 @@ "url": "https://github.com/sponsors/jaydenseric" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -10942,15 +10920,6 @@ } } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", @@ -13114,21 +13083,6 @@ "node": ">=0.10.0" } }, - "node_modules/gatsby-source-twitter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gatsby-source-twitter/-/gatsby-source-twitter-4.0.1.tgz", - "integrity": "sha512-b3A1JG5VkKxk3vqh7cOKev8S8UR1ZX2p6KWg78qa33iW34PRPgB/PHuSH4ECYBFxwxKr5zedAIH7RyYoBJ352Q==", - "dev": true, - "dependencies": { - "twitter": "^1.7.1" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^3.0.0 || ^4.0.0" - } - }, "node_modules/gatsby-telemetry": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-3.16.0.tgz", @@ -13872,6 +13826,17 @@ "node": ">=8" } }, + "node_modules/gatsby/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gatsby/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -13960,15 +13925,6 @@ "node": ">=10" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/gifwrap": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", @@ -14449,29 +14405,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -14809,21 +14742,6 @@ "node": ">=8.0.0" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -15786,12 +15704,6 @@ "ws": "*" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, "node_modules/iterall": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", @@ -15874,12 +15786,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -15906,12 +15812,6 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -15922,12 +15822,6 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, "node_modules/json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", @@ -16002,21 +15896,6 @@ "node": "*" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", @@ -17004,6 +16883,17 @@ "integrity": "sha512-oEacRUVeTJ5D5hW1UYd2qExYI0oELdYK72k1TKGvIeYJIbqQWAz476NAc7LNixSySUhcNl++d02DvX0ccDk9/w==", "dev": true }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "node_modules/md5-file": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", @@ -17015,6 +16905,12 @@ "node": ">=10.13.0" } }, + "node_modules/md5/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "node_modules/mdast-squeeze-paragraphs": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", @@ -17937,14 +17833,11 @@ "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } + "node_modules/oauth-1.0a": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/oauth-1.0a/-/oauth-1.0a-2.2.6.tgz", + "integrity": "sha512-6bkxv3N4Gu5lty4viIcIAnq5GbxECviMBeKR3WX/q87SPQ8E8aursPZUtsXDnxCs787af09WPRBLqYrf/lwoYQ==", + "dev": true }, "node_modules/object-assign": { "version": "4.1.1", @@ -18821,12 +18714,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, "node_modules/phin": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", @@ -19873,12 +19760,6 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -21429,71 +21310,6 @@ "node": ">= 0.10" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -22295,6 +22111,18 @@ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, "node_modules/split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", @@ -22368,31 +22196,6 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/st": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/st/-/st-2.0.0.tgz", @@ -23649,19 +23452,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -23830,30 +23620,28 @@ "node": "*" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "node_modules/twitter": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", - "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", + "node_modules/twitter-v2": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/twitter-v2/-/twitter-v2-1.1.0.tgz", + "integrity": "sha512-BsoeFydwDgeS2coyIwxWkWXDxfnck8AtFQrQNY3ztkFJqIXyI1MKiGWjGvHA7U2SocUDlDQ3x1mtxQjr9xpyyg==", "dev": true, "dependencies": { - "deep-extend": "^0.5.0", - "request": "^2.72.0" + "abort-controller": "3.0.0", + "node-fetch": "2.6.1", + "oauth-1.0a": "2.2.6", + "split": "1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/twitter/node_modules/deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "node_modules/twitter-v2/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": "4.x || >=6.0.0" } }, "node_modules/type": { @@ -23873,9 +23661,11 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -24577,26 +24367,6 @@ "node": ">= 0.8" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, "node_modules/vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", @@ -27023,6 +26793,11 @@ "requires": { "type-fest": "^0.20.2" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -28637,6 +28412,11 @@ "requires": { "type-fest": "^0.20.2" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -29963,21 +29743,6 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -30034,18 +29799,6 @@ "postcss-value-parser": "^4.2.0" } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, "axe-core": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.2.tgz", @@ -30308,15 +30061,6 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "better-opn": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", @@ -30476,6 +30220,11 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -30672,12 +30421,6 @@ "upper-case-first": "^2.0.2" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, "ccount": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", @@ -30754,6 +30497,12 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true + }, "cheerio": { "version": "1.0.0-rc.11", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.11.tgz", @@ -31457,6 +31206,12 @@ "which": "^2.0.1" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true + }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -31694,15 +31449,6 @@ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "dataloader": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", @@ -32100,16 +31846,6 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -32120,11 +31856,6 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.150.tgz", "integrity": "sha512-MP3oBer0X7ZeS9GJ0H6lmkn561UxiwOIY9TTkdxVY7lI9G6GVCKfgJaHaDcakwdKxBXA4T3ybeswH/WBIN/KTA==" }, - "emoji-regex": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz", - "integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==" - }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -32451,6 +32182,11 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -33049,12 +32785,6 @@ "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -33302,12 +33032,6 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, "fork-ts-checker-webpack-plugin": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", @@ -34065,6 +33789,11 @@ "has-flag": "^4.0.0" } }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -35358,15 +35087,6 @@ } } }, - "gatsby-source-twitter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gatsby-source-twitter/-/gatsby-source-twitter-4.0.1.tgz", - "integrity": "sha512-b3A1JG5VkKxk3vqh7cOKev8S8UR1ZX2p6KWg78qa33iW34PRPgB/PHuSH4ECYBFxwxKr5zedAIH7RyYoBJ352Q==", - "dev": true, - "requires": { - "twitter": "^1.7.1" - } - }, "gatsby-telemetry": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-3.16.0.tgz", @@ -35569,15 +35289,6 @@ "resolved": "https://registry.npmjs.org/get-video-id/-/get-video-id-3.6.4.tgz", "integrity": "sha512-BKaS+0wu4FW3nodJt/VcvOmPpOx7/F/qV7MPi4F3NgqVYehKJRwX+/oUA5alPEfEX9h3i/1tAGEbSpsNNbXA1Q==" }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "gifwrap": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", @@ -35949,22 +35660,6 @@ "duplexer": "^0.1.2" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -36215,17 +35910,6 @@ "requires-port": "^1.0.0" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -36874,12 +36558,6 @@ "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", "requires": {} }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, "iterall": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", @@ -36952,12 +36630,6 @@ "argparse": "^2.0.1" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -36978,12 +36650,6 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -36994,12 +36660,6 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, "json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", @@ -37059,18 +36719,6 @@ "through": ">=2.2.7 <3" } }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "jsx-ast-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", @@ -37820,6 +37468,25 @@ "integrity": "sha512-oEacRUVeTJ5D5hW1UYd2qExYI0oELdYK72k1TKGvIeYJIbqQWAz476NAc7LNixSySUhcNl++d02DvX0ccDk9/w==", "dev": true }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + } + } + }, "md5-file": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", @@ -38530,10 +38197,10 @@ "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "oauth-1.0a": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/oauth-1.0a/-/oauth-1.0a-2.2.6.tgz", + "integrity": "sha512-6bkxv3N4Gu5lty4viIcIAnq5GbxECviMBeKR3WX/q87SPQ8E8aursPZUtsXDnxCs787af09WPRBLqYrf/lwoYQ==", "dev": true }, "object-assign": { @@ -39191,12 +38858,6 @@ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, "phin": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", @@ -39871,12 +39532,6 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -41064,59 +40719,6 @@ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", "integrity": "sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==" }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -41728,6 +41330,15 @@ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, "split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", @@ -41783,23 +41394,6 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "st": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/st/-/st-2.0.0.tgz", @@ -42750,16 +42344,6 @@ "ieee754": "^1.2.1" } }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -42883,26 +42467,22 @@ "safe-buffer": "^5.0.1" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "twitter": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", - "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", + "twitter-v2": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/twitter-v2/-/twitter-v2-1.1.0.tgz", + "integrity": "sha512-BsoeFydwDgeS2coyIwxWkWXDxfnck8AtFQrQNY3ztkFJqIXyI1MKiGWjGvHA7U2SocUDlDQ3x1mtxQjr9xpyyg==", "dev": true, "requires": { - "deep-extend": "^0.5.0", - "request": "^2.72.0" + "abort-controller": "3.0.0", + "node-fetch": "2.6.1", + "oauth-1.0a": "2.2.6", + "split": "1.0.1" }, "dependencies": { - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true } } @@ -42921,9 +42501,11 @@ } }, "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true }, "type-is": { "version": "1.6.18", @@ -43433,25 +43015,6 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - } - } - }, "vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", diff --git a/package.json b/package.json index ca705bfb..fbef2247 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "@mdx-js/react": "1.6.22", "@tailwindcss/line-clamp": "^0.4.0", "clsx": "^1.1.1", - "emoji-regex": "^10.1.0", "framer-motion": "^6.3.6", "gatsby": "^4.15.2", "gatsby-plugin-gatsby-cloud": "^4.15.0", @@ -83,15 +82,16 @@ "gatsby-remark-images": "^6.15.1", "gatsby-remark-prismjs": "^6.15.0", "gatsby-source-filesystem": "^4.15.0", - "gatsby-source-twitter": "^4.0.1", "gatsby-transformer-json": "^4.15.0", "gatsby-transformer-sharp": "^4.15.1", "husky": "^8.0.1", "lint-staged": "^13.0.0", "markdownlint-cli": "^0.31.1", + "md5": "^2.3.0", "postcss": "^8.4.14", "postcss-import": "^14.1.0", "prettier": "^2.6.2", - "prettier-plugin-tailwindcss": "^0.1.11" + "prettier-plugin-tailwindcss": "^0.1.11", + "twitter-v2": "^1.1.0" } } diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index cc2ea29c..4eeda680 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -1,6 +1,5 @@ /* eslint-disable camelcase */ import clsx from 'clsx'; -import emojiRegex from 'emoji-regex'; import { graphql, useStaticQuery } from 'gatsby'; import { StaticImage } from 'gatsby-plugin-image'; import PropTypes from 'prop-types'; @@ -15,34 +14,17 @@ import ChatIcon from './images/chat.inline.svg'; import HeartIcon from './images/heart.inline.svg'; import RetweetIcon from './images/retweet.inline.svg'; -function getCorrectIndice(text, indice) { - const slice = text.slice(0, indice); - const emoji = slice.match(emojiRegex()); - const emojiCount = emoji?.length; - const emojiStringLength = emoji?.join('')?.length; - const emojiExtraLength = emojiStringLength - emojiCount; +function handleMentions(text, mentions) { + let textWithMentions = text; - return emojiExtraLength ? indice + emojiExtraLength : indice; -} - -function getCorrectDisplayText(text, display_text_range) { - return text.slice( - getCorrectIndice(text, display_text_range[0]), - getCorrectIndice(text, display_text_range[1]) - ); -} - -function handleUserMentions(text, userMentions) { - let textWithUserMentions = text; - - userMentions.forEach(({ screen_name }) => { - textWithUserMentions = textWithUserMentions.replace( - `@${screen_name}`, - `@${screen_name}` + mentions.forEach(({ username }) => { + textWithMentions = textWithMentions.replace( + `@${username}`, + `@${username}` ); }); - return textWithUserMentions; + return textWithMentions; } function handleUrls(text, urls) { @@ -58,11 +40,11 @@ function handleUrls(text, urls) { return textWithUrls; } -function handleTextFormatting(text, { userMentions, urls }) { +function handleTextFormatting(text, { mentions, urls }) { let formattedText = text; - if (userMentions && userMentions.length > 0) { - formattedText = handleUserMentions(formattedText, userMentions); + if (mentions && mentions.length > 0) { + formattedText = handleMentions(formattedText, mentions); } if (urls && urls.length > 0) { @@ -74,49 +56,49 @@ function handleTextFormatting(text, { userMentions, urls }) { const HighlightedTweets = ({ className }) => { const { - allTwitterStatusesLookupAlexBarashkov: { nodes: items }, + allHighlightedTweet: { nodes: items }, } = useStaticQuery(graphql` query { - allTwitterStatusesLookupAlexBarashkov { + allHighlightedTweet { nodes { - id_str - full_text - display_text_range - retweet_count - favorite_count + tweet_id + text entities { - media { - type - media_url_https - } - user_mentions { - screen_name + mentions { + start + end + username } urls { + start + end display_url url } } - extended_entities { - media { - type - video_info { - variants { - bitrate - content_type - url - } - } + media { + type + url + preview_image_url + variants { + content_type + bit_rate + url } } + public_metrics { + like_count + reply_count + retweet_count + } } } } `); // We have to sort on our own because sort in a graphql query is not working for some reason =/ - const sortedItems = highlightedTweets.map((tweetId) => - items.find(({ id_str }) => id_str === tweetId) + const sortedItems = Object.keys(highlightedTweets).map((tweetId) => + items.find(({ tweet_id }) => tweet_id === tweetId) ); return ( @@ -155,40 +137,34 @@ const HighlightedTweets = ({ className }) => { {sortedItems.map( ( { - id_str, - full_text, - display_text_range, - retweet_count, - favorite_count, - entities: { media, user_mentions, urls }, - extended_entities, + tweet_id, + text, + entities: { mentions, urls }, + media, + public_metrics: { like_count, reply_count, retweet_count }, }, index ) => { - const displayText = getCorrectDisplayText(full_text, display_text_range); - - const textWithFormatting = handleTextFormatting(displayText, { - userMentions: user_mentions, - urls, - }); + const textWithFormatting = handleTextFormatting( + text.slice( + highlightedTweets[tweet_id].display_text_range[0], + highlightedTweets[tweet_id].display_text_range[1] + ), + { mentions, urls } + ); let mediaType; let mediaUrl; - if ( - extended_entities && - extended_entities.media && - extended_entities.media.length > 0 && - extended_entities.media[0].type === 'video' - ) { + if (media && media.length > 0 && media[0].type === 'video') { mediaType = 'video'; - const videoWithHighestBitrate = extended_entities.media[0].video_info.variants + const videoWithHighestBitrate = media[0].variants .filter(({ content_type }) => content_type === 'video/mp4') .sort((a, b) => b.bitrate - a.bitrate)[0]; mediaUrl = videoWithHighestBitrate.url; } else if (media && media.length > 0 && media[0].type === 'photo') { mediaType = 'photo'; - mediaUrl = media[0].media_url_https; + mediaUrl = media[0].url; } return ( @@ -199,7 +175,7 @@ const HighlightedTweets = ({ className }) => { > @@ -208,21 +184,23 @@ const HighlightedTweets = ({ className }) => { dangerouslySetInnerHTML={{ __html: textWithFormatting }} /> {mediaType === 'video' && mediaUrl && ( -
  • ); } From 214b89cf7946493b445b1bd797e1e17ed778af6c Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Thu, 16 Jun 2022 19:07:11 +0500 Subject: [PATCH 12/21] fix: add some fixes --- .../highlighted-tweets/highlighted-tweets.jsx | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index d6921e2c..bce36e77 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -218,15 +218,17 @@ const HighlightedTweets = ({ className }) => { {mediaType === 'video' && mediaUrl && ( - +
    + +
    )} ); From 5bccd47ff854e3f81649c72fadcdc84e18a2d6df Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Fri, 17 Jun 2022 17:12:54 +0500 Subject: [PATCH 13/21] feat: replace video duplicate with image placeholder --- gatsby-node.js | 2 +- .../highlighted-tweets/highlighted-tweets.jsx | 33 ++++++++----------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/gatsby-node.js b/gatsby-node.js index d02b4ae8..9e28bb28 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -366,7 +366,7 @@ exports.sourceNodes = async ({ actions, createContentDigest }) => { const { data, includes } = await fetch( `https://api.twitter.com/2/tweets?ids=${Object.keys(highlightedTweets).join( ',' - )}&tweet.fields=entities,public_metrics&expansions=attachments.media_keys,entities.mentions.username&media.fields=media_key,preview_image_url,type,url,variants`, + )}&tweet.fields=entities,public_metrics&expansions=attachments.media_keys,entities.mentions.username&media.fields=height,media_key,preview_image_url,type,url,width,variants`, { headers: { Authorization: `Bearer ${process.env.TWITTER_BEARER_TOKEN}`, diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index bce36e77..5d4ded9d 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -5,6 +5,7 @@ import { StaticImage } from 'gatsby-plugin-image'; import PropTypes from 'prop-types'; import React from 'react'; +import ImagePlaceholder from 'components/shared/image-placeholder'; import Link from 'components/shared/link'; import highlightedTweets from 'constants/highlighted-tweets'; import LINKS from 'constants/links'; @@ -77,6 +78,8 @@ const HighlightedTweets = ({ className }) => { } } media { + height + width type url preview_image_url @@ -184,15 +187,7 @@ const HighlightedTweets = ({ className }) => { dangerouslySetInnerHTML={{ __html: textWithFormatting }} /> {mediaType === 'video' && mediaUrl && ( - + )} {mediaType === 'photo' && mediaUrl && ( @@ -218,17 +213,15 @@ const HighlightedTweets = ({ className }) => { {mediaType === 'video' && mediaUrl && ( -
    - -
    + )} ); From f329cb9f7c3a5661d735a25d362b3cdfe8421fce Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Fri, 17 Jun 2022 17:28:08 +0500 Subject: [PATCH 14/21] refactor: delete unused authors --- static/images/post-authors/alex-barashkov.jpg | Bin 2374 -> 0 bytes static/images/post-authors/alexey-kuznetsov.jpg | Bin 3465 -> 0 bytes static/images/post-authors/dmitry-semenovsky.jpg | Bin 4274 -> 0 bytes static/images/post-authors/kirill-bolotsky.jpg | Bin 4146 -> 0 bytes static/images/post-authors/vlad-kamelsky.jpg | Bin 3551 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 static/images/post-authors/alex-barashkov.jpg delete mode 100644 static/images/post-authors/alexey-kuznetsov.jpg delete mode 100644 static/images/post-authors/dmitry-semenovsky.jpg delete mode 100644 static/images/post-authors/kirill-bolotsky.jpg delete mode 100644 static/images/post-authors/vlad-kamelsky.jpg diff --git a/static/images/post-authors/alex-barashkov.jpg b/static/images/post-authors/alex-barashkov.jpg deleted file mode 100644 index 1c025156befceb4280a7ec6f45837130c73b9964..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2374 zcmbuAc{J4T9>>44$kNQ1F|-(EUowo0C0lANgKUwRvX(W=SSHsN8q26l)|4`qkTPNh ziHIab$&l=05JC%DkbWiZ-0nT+o_qhjpU?CB^*PUTUeEhE=l$Lp-+2olPY|t$00;yC zAbtZolK>qM;+L?Hu!x8-905bX(I_Mmg_aWE!*3}pMjFFkSS6gIydqA?Oh-dQ$IQ;e z*u?HEiF7uK8dX?02>O37*y#XJLO=qL00GGXU=#>~0_}7G+5i9u{*&}S1p-3_b_qg+ zKmZu>-xCN3DgfTK!v$av{tyX4@(=M61r?8{XA9?x61ArdCc9}-vac-#!2EYF#*G-M zD2Qe0g%rolzH!_epvFn>*YIaXvK+o2dKloNhRl8jP|Bsa zX2MfF|3S22F`>ram#HwGtesF2RcuJ|ylrG0>zNy@ZE#WlMxG`M9x#~_IpUtlh8a@c z8tBr8jbMEkX)UjxVraojA}75r>@J`G2{*ROxI>P(j=Cs~FUj70S_a;g_U1+HT+xKT z8bX&6KnZHx%7{5%yFVq?z|10%E&l<&bDif`g}^jH5i>#EU8}aoFiXVos@d zT?b!mA^sQP!^JT2HeWQb=xEKx;W;pNt!c^Ci-ej(ku;oCDNW+l@U z2Y-TH$RQg=+^w5D+VKl{kF|QPIYlXn6wUK>wj(SLgv5qVFc?m0`xU}d%+>5`*$Q)3 z5tw_HPSxf=Ux`vCeoRZF1pZjB87@wQ6i8Z#3v=e)VWj+Vw}GfeAF+NN1*F5dC1;)0j!u z?ETLIAC1V|0QC-iV))p|=Phc7nzWPVd#K)e76L9>N!Z!mF7EoOU`osUR#t)hyE)9O zSX-q9HnKIuuuO2PNC$Sx<-^Z5rvaaqYZQIVF{>r;*kzL4BC80eIXUs2FK*QmoXKzirW{=7J8aGt?^P$iMuaV zu2;o+E3o8U^~00)S>Ayk*WIF|d@JGV;gn@L9(|varyE3K#BQ zP|<2tN8dlW8Xr(U4)=TDFUbk19-S`)5g3U&&lxTQ%&9|$;a3DVB=(BV=&M|licV$> zHBn3brx(MqF&fz{L)6Q?*@65S4PPJZ8w>dp23K$<>90G{ z)@o@vC9kxk0F^l6Bi9F)2aAW1(308vaGH6stZE>6)_!t+kE-#`>>gf z$$s|Ara4MFrOJmgJDfa}_UP}Ru(oCv?dro71T;;oewrPY@Xh{H6yfJ#6$gsZxDM^f$;fX&KvKhA5F?Qb|TaI^|y*E6z74)3|c$;Um8p4>^9X zPBo$@o40!7oPJ7X;l??tC)_^AB`-KAN4g78H83;UW0B;{a~ZyWi#j#>qvBS}HCxG7 z8buaVBZR_blT0I_%BHLCMPO^1(%|~+G45cbmz6^9xV}Rm8qcu$D>I^<2vOY1-3*k=_{Em&1F>}Qsu(QC)Nh_WWKOQ9@m>Q8QKVy7o>U5IZd~Hi#q_JG2iFqNiX@=EW(U}_rB24Hr$NOw-1dJ zBG~9*1=b-q(YfrB+jq?l1~gB+yKV2M10(Oal#D@xRr^mT_{OV<0>FIdh4Rzv-ysJA z11JboOcsfjk<)a*6HFZc*en>tx7kl#RMpeTjf2z;QJNN_H1*yQ&{L@{)M>4^BBksD zdgkz_`KieoyWS6ebf>k`OSk>*>^JTZbGDm5q90*h7iY6CHo9H;cCIexiDkZndiBWu z^s=RH@tNBC*%@)T-O@rAPdBT%(s)&Lxz8Z#Mf;Wp?{oU=Hsr-s_lw5| zE1K_%){Zv_>%8B@h$lpH9pR>is0Z}^^sHgk=UJ$XE3MBFN7t+h5tmmfW}q`MK?BkA zl2y7~oxYJkqvg8^Zvp7k5$l@}8-1z!*|@I01GT>DJyxYSx8`>kxw&&us!(@?`)?av zjsb-Psb%&9l{ZaOIW<;4@{Nl>s!MLexX;qEO)r&52V{`URc>J4J$sAEuRi`bJ#;*4 b-E4tQT>1;=d{a2xKb1+yfoJvP?@asy8ioUh diff --git a/static/images/post-authors/alexey-kuznetsov.jpg b/static/images/post-authors/alexey-kuznetsov.jpg deleted file mode 100644 index d23fbc080a3247129a074b72ea3b5e46a02ab6e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3465 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 diff --git a/static/images/post-authors/dmitry-semenovsky.jpg b/static/images/post-authors/dmitry-semenovsky.jpg deleted file mode 100644 index 9d69baf907a40df29f7657758738ba9e4a6f6fda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4274 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 diff --git a/static/images/post-authors/kirill-bolotsky.jpg b/static/images/post-authors/kirill-bolotsky.jpg deleted file mode 100644 index 3212561334ce3857f7a60ca02a7196b8e474316b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4146 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 Date: Fri, 17 Jun 2022 17:30:16 +0500 Subject: [PATCH 15/21] feat: host link previews --- src/constants/highlighted-tweets.js | 6 +++--- .../1461375333496758281-link-preview.jpeg | Bin 0 -> 66429 bytes .../1488475565845843974-link-preview.png | Bin 0 -> 28452 bytes .../1496140897356034050-link-preview.jpeg | Bin 0 -> 32336 bytes 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 static/images/components/shared/highlighted-tweets/1461375333496758281-link-preview.jpeg create mode 100644 static/images/components/shared/highlighted-tweets/1488475565845843974-link-preview.png create mode 100644 static/images/components/shared/highlighted-tweets/1496140897356034050-link-preview.jpeg diff --git a/src/constants/highlighted-tweets.js b/src/constants/highlighted-tweets.js index 763a97f3..d1ade1b5 100644 --- a/src/constants/highlighted-tweets.js +++ b/src/constants/highlighted-tweets.js @@ -14,16 +14,16 @@ module.exports = { '1496140897356034050': { display_text_range: [0, 110], link_preview_url: - 'https://pbs.twimg.com/card_img/1534269585721069581/FstJHoZj?format=jpg&name=medium', + '/images/components/shared/highlighted-tweets/1496140897356034050-link-preview.jpeg', }, '1488475565845843974': { display_text_range: [0, 196], link_preview_url: - 'https://pbs.twimg.com/card_img/1534169628762841094/LW1kjUCL?format=png&name=medium', + '/images/components/shared/highlighted-tweets/1488475565845843974-link-preview.png', }, '1461375333496758281': { display_text_range: [0, 999], link_preview_url: - 'https://pbs.twimg.com/card_img/1534809431136948225/FOIy_vqj?format=jpg&name=medium', + '/images/components/shared/highlighted-tweets/1461375333496758281-link-preview.jpeg', }, }; diff --git a/static/images/components/shared/highlighted-tweets/1461375333496758281-link-preview.jpeg b/static/images/components/shared/highlighted-tweets/1461375333496758281-link-preview.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..616f1e188d17bb92d75818340932b57b417e0fde GIT binary patch literal 66429 zcmdSAbwFIbvjDn4DOTLw-HJODcXuydoJEV5Qrz94xVw9CDeg{jclWpS`+hF>-uM1` znX}0xIhmOxlQ}t)voCWmzW_*5Vv=G2FfafB365`F9HxQ7Z2oe(VEz~<` zC{RFzgM)d8jEI7QjEIbkih+lTiiU%ZjEqH$g@cbzNJxl^NkT?KK!!&^NbpJo4Ad0r zEffMYGy(w{G8)1EIlOcNkfFhy-&8<=kpRGv!61;qUb+EzuVO;Jiu>092Jr?YBsesv z76()T4)OPu0I)aU5Rh+Q769)+<={vVNT7~xe*A0W{|O=4Uifu-qY$i0{Y8pQ1||{p zJ=vd4z^wkKwtuY$XP`fZYIdbnDwdE@OFSLzN&YOaX@Shy4s4&P|31BVUbsEpXcYS9 z7(%yVxiHyjWHp4X9k(}Jw`zt$V6|zhXjiMuuS7Ql`f9W8uSEYR1Pl}7YLw-;P%2JK zBunHzrfc=9$?lnUcRJ5GK|~VIGo6 zQlm1_sC2ai|L~ipHUNMMQ47rYUSWoA4E*uC?06H6>s?eh0mA{ajaZ@M#t*6nY7;|%z-?@oVQ^K)Gac6hkR81xn&Ekmz8 zyN45Ply%8$&Lf1i5OV5TrG30RShe*HavG*|;X-UXaP~Nf*-wCiA9AGs_KV-v>dPzL z{}4!OaeBxtwqRAw0a9eKl2lRe$xwn&Q7GOF!GKzTe|+sLiYI*cb5Ji9JSOdMgn;6~oxv4ZiNC9%OT{XsXMOa-v_wXen1?(PE+Q~*R~dM#R6;{98%!?!|sWbS)LA1l=^ST#Ob?b@#PaR7+K&P%0D6 zQjr`*iVQa>zX_7Ujn*ljhxK||&SAz(;A86N-kdDS4@o{O;2!`0&_Mi`098Hg%_^@4 zx(@)hd!7hT|4yTPbC?AhL7IsI#iUF3T(uw~(C|jWyvY*j4)P(2eeD9pM+pG<+ruJz0mZOL-~8WUNjn#JmCHLPz7v z9|8mc0HEui1G>37wJU&Re`0sYsETugJiOm1G@gevoNoI~)(2E@MUszFWZ(*9Fg`^8 z*pmJW0AQ=ZS50NV5)gJ`*8c=0cyD#LgXm&sguR5kz>1Le9f!wgRszas!i^&SlWc@8 zF;Jt@N^94Ov$IF*S0!^ERV!WGc^-Unr(dt*OnOl)=De`(UwD9N#aRFVuI&{~u*|B- zBvpYW+2op8v{VDC5^9R*v3{z=YUYBPVp7#2YKqZCkwv-Wk~uVmutkPhi3NEy)WO03 z5eZQM0I<`KE&`@Z6UOKolL8JnaJaIst-aYb_uctbI;^$I5*-l<1w45@I$NuF!ngAF zdv65zp4jc>7W*&6lT*d_W8mWM9CEPaMsts#-rbkSn~e}IRp5gCbjyG`*@lR`@>JM& ztJ^8TZ0W1Dk14-c)e-sYxXY-KL;|2vQY@oGe}EJO1*C{DZ@xSg7Z zV;)4zR+eSTq>ByUJXhFR$rJ8H-2Ai)zw1{%kBP;z{ld|24XgYu%IhZ5?pU3)x5CmNfpvg5dwi zp33o=lV2eJ{9M}uC#VLe*|aBd#{SpLsCfKI2-~PTW(;|OC(lJ=>v`IZ&^!NyPtt3K za}K8d?G^aq2~MP=j0a73nT##*R>#oncudn=m_j@GQ|%Hmy6`< z6{yLdVd`3kP!T#T<4u>3YAT&(ZH9+$55(gPWwy7M;8|EM{0E(%4JMzR`1992m3M@9 zz0>$ZHYn{U$~n2Npa^zx?j~KQy+}L-E-=TJkb0aLw5P%=M?8Ts`v@HE2B8V>j+e;p zF+;D@={%v%cc#1<2$k)^PtH58`cMwM>0gx@(t<6R2!O~|Fhey2^PyZWm-N8hHscA) z!!|<{$!eK2Fg&}~PTusQ`fQ$M?g5$`k$-qy_Iy^i2OoSR^^RLiJxa3jgg0b->5AWq zr!*h^Qs0EFk$bqE0l!#clIY;M5h|vAH}zPqOF67#%sHHnC5Tw+pHH5GTJ?kHfQAo%qz_L!yY! zF0)o%2kT$A-vkqATHPDI--H~%!6M^C;HdfKFVcbO1ypzDzK6cqAPvEMKR^`;;^`g` zFE)yu=MQ`}lqeJohSsyr#zEg+%~0MxbB+6H&-+*(kO@^aNki&XBtr3_%)&$?2Z!;Y ziUiXG_67C>04JDDPNeAbwB?7OwyW&hcm&;~+6)7jgaU8)uNoro^>~WpN zTV4$SaOX0(ym_L&fOKeI0_r+0*XyxpR6#VK`dpeSe=(F=e49o&yUKeo7xVERYU}65 zE+5N>ANbzzS-13gP}4f?-#xCio+w{i>j14CcN@c%53BEOw`G#zPP`dbGCu6<+~{+J z;0}w_|83YXL0gx)tDW(K*2kO3&7*q(ziYhF@W%6{CrIF~8)2>iuaJs-qc6ryy%x_Uo?5AHaX+oB_~hSOj!9SP0avQKE_FuXmQH7i z&#hO@+iWj#mmQW9{ayh4^H=^n_s{ia_3BrT38RWtt9=t32g%sZybkv>s6S%yf*w2$r;2hVMf-6cRdhz>QwCXj(_Vv2!pN3lA?;< z$vK~quJpj(4sTX-JcvzXrEF zJ3`W^w8Gyy`bGwp2xP7P+zY)L9MIx^H8rmr4#3~Gpr9K-wg|>Y1OR}tt(d>PtG(8b zc`oJmKGIQlWA$1)9~~E`J!txd6XA5Hz8e#7&Qlj{wQLk~k$zx7@IO2w`|A)*X57eUFXy}FMdaY>Ftr!O_1Euu~{X5|)yIarqi2PLFlK>#A3EI$ok$U3; zdYPvH#edm50TNMOZ70aM0%BnRC_W%7`gVEQOQ*n-H04e!sL@tOfY*pm3!Y1a}}tm7XY2)5~rOfMCx7e={@33vErqlesVct0cShU zyX|+L27!0!oA>HFq4F^TS5QBne*Bt?{5{+xr8K!zm%K{lAKZKnmbv|;VmBA6k_oy) zkFHU>dv16a*ghpwQG7^5Z@H8b3&K|?aA?;hg|$GPv<(-O&vuAbZ>G+xC(h?Ue!c3E z^Vx?blBe9p2a0UCvXjLgYE#YnG5w`Enble$LWNKx6tI&y2$WHB?{9ijwkIU-`%ClmhyMOE{A^F$*{E5hQ3^C(T)4v z<2`NU^@xJC8^Q4Rw8bFjl@GQa3EzR$`v}U@jRs>4@*jUuPU59x?)S;8r}agrX@}Y@ zFwJ>+9P%O^s&Zko)OmPtBvtS8{T4TanY+1 zWAYI@ZRb+xVspC;f|JTkrTkx|(o>-K&nzhsGNFIGbhLG~k)mM!?FC|nEADg`jF`K# z4RpDr93kEJ5+B-hZlmJ=c6Us+yBx3;2-=Jt_sZwAIo8MQroI3MPo22&CUevDT+7LM z`e4s_(vQw-@Y_=?h3kNvF&_Ib0CvGks6TrF00h?*rBn7_ZEa@3g=H(0nY@3%a2&UB z7NDA5^n=g}edc1QiZxm`M>c7Ko`noig`ScI2gfkCB3gs!gBs-NJ+<}9E;UB5NfeM1*VkPUV*LJ zXAC^_{3k+c+2mR*|5WymS&;Ejq2J~sc+ww;NVx;`rPtQDGG*L^MW!I1G6&>W0?=$! zabAr5W2^s~b4%VT00hVGV@z&K?^Q-$TN$^eP&29-o?C4e?hK{p55>IaBasyO@+xs( z#eXIB&y}K5PH>tRWJ8F`+meaxbop6Isg5u!=4RzGX-(;FSDN!|OAaB;I=!XW@ky58 zX%m|j+0ngmz`J+A!+$3AU-Pf?Jz^-C!7TIRir+XXh#Wk+Y5(^D?2s;p43(HD3Fb||1ci_wGYaesG10$m5Aw-#B7sae7&tf-)En?W zee+=8uP%EOR48O5G@|#+ENtk+q)hA|K4MU?Dv;Qb3u2N9Q-VD9&>(L<7$o>(j~;@* z$LeKt3$$D==gODSl;>!5AJ~a}ycz6^CRc0(F{Bu!v4w>3T%DR?DNR>dY^o-B8d9=C zaTJoA{HQRHi*b~KKh7QnOBq}lHv9}ZaZ%&%Kz}><)RAS!ktrvgBZ)=DKfZPQ{sIBj zQa>E;o7mSRg~9Xzntk=^B+o#&AlT`FVW-}0u><2vave1R5^v*8HSLMjhSVue6q8x7E-k z%YAml(@Me`*gGwo64q~Udl010t!3Qj#S#=mt$5#j6iyO_##u@BQ>B501p2U*xQ~V& zmtqmvhc0gsTM$O`$m9i@z>|Hros=i8u5!859_#2TEa=i2`4GC=7`}`&tmM*sC=^Z&t3gt z0V^vE%Oj-T2(&1_3{O+ixHAF@ZRev+wiMw4Qlz~s=cN(koa`x{vDzVE$jgMyC7E`- z74&&m_xf2%aLwTIQy>p__R(&uECT2^+WeUgjRM*dUH}e>wv^c>b(JL!0p*`+`*CSf z%^P;3xP|zNV?PwN1YbKa#UIfjQ;d*5;wDbB34EyCKEu6r8fBQpi_(s)C&Vm>W9Bn* z_}G_OW^r_31%~Q^%|+WT_1`t(F^(Q*T%wo|A~FSZ=8>aO7(oRUqrdFccoJYo<+5 zTFcjlb0XDs2OOgYH==EiTuQP`#4rDW+1iv9X>;yYI7N63@f+)R>jG?S&yaKkf8OJ? z*|!J2P906Zmi2`&qRmczEzAj-_muWLqe&UqX#BuLu|su_lLn$$2FIZ~ZgAM|&O`>_ z0ZozGKUscLM9l1&3Rbb;`KR9Z9Q)&?Q%9y9uaDo7eF_4bH%N($jXh%vCeWgpk9AI? zu#?Af-twOO97{K_*tv#QB&N`bs1Y+Z6{$MLJFTb^+T@IjA#gE|50aew@Hd$M@K=zS z2LX^<^|lkWV5ZF5QOww4GwY~vZ5JdaaSu`b497o0JjWjp%MpuaYIfTsF*IZH^LQd# zvOK|h6j7MpcIo2q;!)s7c;~3lRpN}1W|%44zfHn~HD=i0g%zgQ5~u!1e`o%4B*um{ zWuzD;_7CLDZjFou#Vq){R-E`$iq%bfo$-p?3f0PnLl3!Bu9QmgQ?Tdk+s7HagPip) z3Xe=wo7ttS$(0udi=3?zOa}97)$T^E?Bg)Zuq|yRM!1}g|?l53HGDUVYrVK5)ZS{$b78$xk}Ru;PO$JE>fTIVriW2^UGjs+03A?BPH z_3ga2o8?_s{gov4yzNef~au;x-XB6^(5Oi85}&Xf=@T3;BZT{4d-?4q%^(> zKDU1etm0zos>z>Mi;IoUBT2y#I){0mp0l=-y>m>jE{p^0`(&0&oyzI7mnx_oV8djF z=R(+{6l=;WrWH)&F&wO)xONea-i|zx{#m80Ry0)QO2)@|!G5T-U|Y*%LJA#{^=f9W znmKtd#7c~%pi@IxlYB_(&e|On8)>;T2p5+O!?Iho;QLb-KmX#2%UTP6RHJH~>BEqBJ!!cqnTH-2fccnX%eWwQHdMD?Ef;GBG~t76LRj*-uo^izpaCWh-d*mB-U zhAn2Uo^NSFGs|P1WwoHftx9)#s@OO%T0igsJGDD&k*uP^O2o6jD&K^ic^&pKy%UXV zLMMp{RtXc4p~?h9Q#H2Ek8kPzN6Ca*2oH=iqspjroyqi4v9V|03xEJLc=v2x`qn2r z6%v~93%!4V|F`S**S}lpCD#8HKI#7=czzm%dKKa%q+&MWLFle|+p|;@ZBdNQkms$L z$AYY7M(A8;V3+B^&0O~H8Q`9iNT5u_;BBFWWfw^-|x=)3Xk7qlHJ ze`T&7 zmMzYJS^U(GMNOhkL2urxVy6pm8i`4K-%dpk$CNk+TZ z(TY>d&A5M}kp$rs!Cl8AOerS=9Z?gPnm(Dy3(JC!7fx4_{7@zLpqLCVL ze$JNAkEUsYS3(NdhyTOeGPODxM5G|QNM<{~r;y6dg5-f>hV?Da--@`H^R{SDsXHR_gxP zSGX^?=d86E+hnrV87Wf499GYak!!7owF9ErZ^48xsGH2Jqh8I*zEM8;_Hy3x~Xk)9U7K|BI zCbQcvc18eIvRDi34yNd~ddk9AEW-Bagj$Mw=5%zL1JmQ*%jcgH>bGB#-br2JsZA#* z(eoz|Z_dBd);d0U0R&jT06_X5*k+F{6Ig4PQts<=K>zuk$&9@U3Y(#wbCWNHJ&3V3 z7(EIu$D(hS*0Y#@kWncE?pXi@v;FK6OQp_GmoHRC=QN*cmsb;$izKC0JE?*b=AQ+R+tzLYg-j_eg6+ zy^w|OtX7NuXYYW6AyWChB|ip=v$r{=&z{og z{OWh-GP`2nVk%tfQ@lKvseSu0wDNmDmq)EO9?}G z8~k>GcSR{tkv+pEk*0*Q-OqaJmxqW7Kc7>&YM!&#F?K3@!OG_pE?)qfawG-!fn8`8 zeGG7M6`%zLB-HC)yWXh`9n%qC$C23=dlw_e7kU2#QXRrU_3tl$DMG;$+|%pTi)Mt| zulCwG`B!XnKnq}Ri)S3Q6d|cnY&Iz~lab-(47T24-DFx-D!df)Axdm|N1@nu^85jA><@S2Yz3rh}>0y+@~C1?8V8jVY>dX^Mp zNeA3ZOpg`ZJI$T)^$bNI)Yz%J^Kyt&h*%m)2w{jqOV?gQ#?Qg$G@pHJ?@1t`j;7*@ zpR0<7j`iJy!G!ACap_}m;A$6^`eeOc1*g+K29RW~B9yvx&z@LuI?ufaq>i}`Y8uM! zXGlNkjQQKWcf~=52IPDmbMK9a@dxd$UjS)yYH{$?I1=W>IljixYTv?Oa8OvuK1qy4 zWs(YseZ_(PMEu?V?~^)VLHH^hXzR#D;yPg~|9SW-Tx0hB|B#(q#5J{F_a9pz zs@`t9ZhM|Up|i*38pGmWGeObWdCOvs>wj&A+|lSL}hKpM<3Yp2|Sln?NQhR7^h<%C)3U9pA4)r z2^2HuzgPV#d6i0jvG=s~;JO>y^Q<;hV5d^lmcDK@0o|Pk(dv6*--u zJ|Z-qSu!6z87rmHaxAWT0c6~oB0?5A*Uc(e;bNjI#(Tk** zEUUCDHMvR77-*=ZVZ>F_>gAWZO~{1m4HpVzy)sVFIxXxyq{H=o7auDV{K)Zq1oEw* z_CKJINX;(g(kRAa=gF~em@U=g-+*sOiaSQL5voO_#Zfj%%TZD1D=#BshXs5MoLnZ) zS6y1e2%zDY^ePIHYbi+~s!YO&uPm96d(6wyoiZpbOwHQwDC$RH9yqBUj}SD?N_W;Z z+zd6`EZr~$BBb97;nd|SVIpatL{xxRMRI1ae2Bs>~q>)43teOOy`L* z4yzW~yImgI@%mYA`|v{NT0IAM`mSQ7QqYZv;VGRG@1kg!Zf|bI9nDR7uJdi0^xs>)0DSrD(56-tTXh%n`q**<5BojKn+Y^uO%gUJka3{4WD}|a|^8p%!*5h7!**c+_XI3@>MUK>W zaS1A7V(PV@(g!DU81t%7V{&@Jr%cHQOlg&v$@eXZy;EU^WQ8W;^443{c;<4;79`TF ze!^Z)r2}nnfkG3=l7bhcdw$qTy5==CL5S>~cs1&*T8ybKi=H%+^ejerEVgpK@e#BcGk{$g+d#~z%zk^a0#u^q+1g+g;>Y-{ zZ=crMLjv_`pohYfHRVdy@kVSqBR3`OOgfs&EYS*t@92NB+1+}cG_Q*X8m`Ju zYtob*%@iLW9Go@vE3t%NX@3rr#;9Wc9Ql3TbL~-R*LyVlp>idw+Gdc>U)wWf!KFBL zw~s2;0$a3qz;Ppf2i=IMfco1y+Cn$9?XYtju0r-upLnJ&(dcyFMuC~o%KZDJI`qD?-3%WKc zCVlFnj`S3C+s-uG=DStC4TwvIWM*V#JQ4x7e1lq?gOq>0o_GA*#-@8WNub11P z`4vhlBXV~|lmCp?^|v`n7AaIRp+in0tflLWwNMCRRuPqGs`UhCEoAx@uo~GGYQd=s=(En4D(E=qGs|sNwix; z=>?!Y6i;|@Ps)F3_T9v5)7XiIvP!E4Jzbhc(Br`=fq4xT8x1{bMa@1gnpu?HI4ImX z(RBtd#QT^w@U7gkkfdyb=lW4sr56{6HTs9c%z&dYLeJUR1@oSoJga`R+e~MsK*H}JQf zTg!`2>3+AS*m0c}I>aw*DTj$`^ZZp+U6g`}p`&&UcxiBTPOF&mB*vs);P3(vG_P$s z^1`X*V1c7=j9LjIAs|UoSQ1LH53Y5NIj2EW5zEd>uz-UL%DTZ%(C`rtAF38y1J)R- zDp};7LCo|D95m{v=c$Ny&M(w;8~52jz(jFxpsT>HsRor-;RFy1x@OlhJ=sm@f#E)iejMF17Urei|`DC%hft+y~?+|nJK+3x<@U4kES zp~a+bcqJ}W(VI)x;Cdx%kHZU(>x61eYnOZtT*?9FG17{vDhyt7`FrGCMry+}@^o!g zHtEe*q9a$3(blxLJ_kmGSM&1qIIKf?)3awh)0*)vU`$rD>7u1%ZZ~)ht{iO-72{RvjA^(!7VogL3v>x`#wkuQ%~*Oe227%cu#-^A_t5Nxlodb~16pP&Fh znw+26Tm<*&EYXMOHz+GSK{ER;NhOf7#kZINFxt)fzqd8jH1d;Re6mZ?q|}DFOYc zY_KRj&*Zo}#KKW=h-5fT5#D?_w?lX|Q000Jr za--3QGVysckln^cQ^U=$j^>ub&)HbzQ(PdI`Ud-cVRDX|PEQ0%Rc=Y$VaWjr0YK#NDVVMFX-ly8w*DF~mEMl!ok#KwDm zI@?p;F2?P@pH*o-&|4bBla72tP(0&p8L_Z&-SAW<@EiH@R3Tsm)h=gssXc1B$fz=) zCg?;q;9!zRAahPC9Hz4_l?;{>xxqZKv_o>Gtyzti_s-hZYmTrE>d5Eequ2Z^67^vG zinx(bjni~6!_VH&?pwLx^*cvpIJ4#_TL)w^Z&cA}1wX0DY}o5O&%z~X>y->nr%-zv zjwUVTG^U_W=)#z``ijiG<;suo7bA0hYV-a^K>bnCy~i*fCge$&z)Y&mlRj5kneC{? zZ?0-UB8f(j_-!`X1^2F+ZCog1&0&PVJ+-ts$c`kdE>7j*u8?KDL+j~LmCH%62O zdPsTwO^`#5VnmZQ;2ixY}srrxlQ#s}o|M6`E7rf}ag zME7KieV6Q!D!&L%8i+K}6SCsx+a*(++PgM5cY1PU)Rtwqo)R#?s%xSaTwF#QqU4TK zeO+rg4gF-~SXinSCnw#mRA@V++C!yTC;ri?meShPa_wj7?%*e@?a>V8wLJd$2$tOA z1h^M~dOl$ie*8_**pwPJt_JIU&vXcL5zbqs|WT3aJ{W#SD1NK-?v{6x$AdW zbv`t>seC3Z*>SL+B^OpXUrI|ngBt5r*E1B6=`^DFA>qd&AYcex4 zaZma%Z?Tp)5z=2AgRnw-Ecf+W-G-^p1$>kFTL~cT2iAzsq@Y8hha{O)mlr@`pABAN zY>%I4F-pFQvRI5c*utDWeh^7Eae0NAt`76yIoimFPI{xPYKq3dV1uAdNImU1hZsvw zU7g`?`FVrRz3p@3>GnKRjd<8c4kf|NLqRADYpca`TD`vS6AQ>Uv3WlqVJ8*i4a~Ww ztA1;Vp){!j1|UseJFw#g0|OUDOFd_R59B(lKgt5Ghg{QWPcNCb7h*E63CkU$vDE_5 z#x^sbKcsrn6K@co&b$j~C1!+RF!pA_>mu-88Zej}_4e#)S6>&%ctRyGlYDH_0`{s5 zN3)UNRs}88so)k`b?yz5Pa%oe%}cm8bYsMKu&41K+aO~xZ_S0r*}70m#j?kv`H?lx zrU3H=+Ipd+QwTDLh72nSLgY8Bpwl$s|Uqu}I*5n?#_$5gY6s^k4AzeG`Z6 zNOp%UpBu)j`mQFUrdP%J=J`82H3TQHOH ze&2NRtLzsuj$QJ1OpZp(63AF~;MYCGrVXN*>2O$j42oa@o##`qCQcYdMSOk%5NQQ8 zkR`s!gC^b%bgJvq7H5-0;3-(=UU(Crp;#{INAyX-0CwdeNuEad1rWuu@!;RG+8DjA z=Y3A$;rS*G9u5bMmCF3@58YV{{+fj#W$@Pm?wG2{1%8=LxnYhSTzw46z>*IELTHKA zgqh<^ydKI=MHQ0%{gHfBA@MXulz(ZB0M{ihQyoX9wNst5TVLm@i(Wx|(mQ*73D6V0Q15#3*!JwLhXFr*4LtPU{5Dczv0>CWN~}5N z5)+Yk$e7mU9QRo)M4%(i5PtqJ3!E9Y5=)Jl%2FdO|5|tpoLDw03x%o7Lg5VlwQ`P& z-jWGyXwxfDR)&NQq3U0CU<9_rp5srzJXB*os(a9 zMJ4E;51DP>b8#Y?Er%bc!pP)tTzKd|KmS40+i+25K<1L1B71?T#(Woa$5}a{O>6w- z5U*DaKDr&Z1Yqx%Z=pXz6%qGthsl8XnWMl)#2Uh92tC`Ku+Psu^%4VeWM3l`Yg#Ew ziD$Vk*|wiQ&qf^MTzK_!@nqSO~mSoX}}2#G&eiutXX*!O7HI_8G-qcBc(1?)C9) z$@5rN!!L97^pQh^XDZcE+LGQVo0FyXs>)J{9h-BPN-Oj&i$C3}SKJbgOidzWLp_c2 z2qy5AVX4&I?yfsf^7-Afbf>9%MhkDew4|2&_FMx;<2DNGHE)j3GB~1*4(MYN5-wrMqvKTP&{@(? zAyY+$?5FdNl8e7o-I3=)C9&sDo1J3UXD;`S*6ocs?%ZN3+@s(%y>tE7j}10YuPcI9ogRJ@hGe#eHQiUKu&{oN+$t$}n{y?hGpjKyFhu>Jh~&w71%a$G6yLO4#f(j2N&?xfwQIPsP0}}Y^V_@{R%6bnWGAX%6OH+P zF-wUp%b)IyQ;l3b%Xg%WbncXfEXZ~J(Q;;|(O$mawzsaOb7Dz=LN$Jpa2uCxpwCJ{ zldFOR0D}MrgM@{90|f~M4l)FP7y%SiVkTxmNF)+P1E76WbR`-Q>3bF-B?q6(jt?Kd zj*BW7W>u}7qO-EuIg$x08^v^<`DSB~vx|Tx>dz0;-U@&}Y!GtHdV&~jrg{<36|~L1=TuGX9Oa2!A4pFW z#ub-5i`tLYKps{WmV2w~9tk-(2J#JcS;x@8A;@liacw{MEwOUMwSCVUYGXr3Ds7u- zoW7k9_K{DyyP6(OXsiYljo(c0M}TB`IAkPazw1{FkjzHaaY*f9n-`i8q%?zJHekn? zZ>TBMOsLkGG=p2%J*~7qD;p}3Q?c|EtYoUt1*CFCk6s)m@m_jw))!lJ6#P!u*rcR5F`&OcJeKk{|O47(f3{#kPF>u?3 zwmQXJ6|$BgtRyU|qtijy_w!LkoZ9qfW27YagTfisd@UhK4WgOnA>Q|NHPb(2ueB_UcLod1Yo9mV zQK#8$_pe`bT0?PHYN^HLnuDVJlN``gRA_dZ2_)5C+J1D5peHDFwmm0#otEM^Bi^Vg zrAoDO*B@)8rfFZ%*Q5kAgLs~VWe;4BvL9=|&Ok?&y3@ZRa2l`41XBGS6ruP*+lcqH z+%oj~zzCdeztl;g#e4+|UJE=aGolHW6&5Os~ z?Ovv8OHVe}VvT>F!U)~pPU>z{XY7HItXY~5r+}_9A?k_sm8DOXWgSNk%PKIKa=_N4 zUK20nJfRNGtO+~|hL}=}ecl9HP(jNP5AMzB0BS?}BAw$@jMNHyJ@den&}~}xnz040 zEYml)wE#q|U`=9oQuhW1yV_~;fQPQ75c9&##4t{6M_!tE4Z$&;>6ovSgU=Kp#qAFJ zA9jiHtQ=MxS>NsNI22iriI%-V&LM29y!2{5+<8)^luX;tU-d*SC}OtnA9vUPwmKjw zjk|RH1)4Gr!3l29mr3H0m)JAdoYF}6lt;W~xhUra0CMBkenwOIid6}Rr+Gp1xgc>! z{RaaVOB|2I+>i_15c|TfqCu9*)oyeXnHB=9@ST_!01c`Q+?SNX_5r0HzEGfnjTfIl zG?W9j)a_BKWT}(1Y?I1*y0*Wa^H;|rH_xs-Q;g6Zc7qC1Hb>d;A|gVAie;0PA?paL z^%dUzw7gWI{#9USqe|Q94Ha&q0^1d%rH*Z{V;mp<(TCoaC94t6Y2l;*#@NbscH=#K zaY>%HscA0&Hf_=`Key}I9dATs#d$w$!%v#9p4UUHobPZ1J`G1?U#U@H>iS zb3!G3=@qo_d!95|Ku3E<-|&tc7*o~@-Z?wg?BE`auz19>9Lwz)voFB~K+?sflqZC| zXIh&~lRw^)*@KimL9`F5QB6lw=&day9HwSeXguTmw6SH1sh)uM9hM%dIu%Gpj!A)wH|(#=j{&*KOxgo7 z)1p+hsD_rZrNVqje*c|M!T@jWTvDxfvtQo^X;iphI>M;cj`z8kB*9M09s>u@>dL;r zK6=oJ!zgapEaV7YpWB(lH354Hosz^(ItOm?SHVpk%7%-$J;H^Rio!$$y3CbxWl8*} z1f+7Z2ycmHgWdz6zWcWw0{cp_oA+lm^RALP-jdzLmB;3r>}v7m1On!p#kD>8ktK}j z>Iftk_mk?SW>IMex_ycCh+5@G^y*iojD(QMf@g4SX+vs2+ls#N`;+S2bxV4alG^yX zi#c0|8n5pjDz%JZ;qyJi-65Mmhwy0G(WT~HJQHj0eg^oIq3WFr_MVhDyCfU6G6>&B z_Pg7A0acT{HJ03)i5-^DgTLU;T7VV(qst+XK21E&^LCXSf_I+}cb{D5M{k<1)6NN~EwvUAL^IPOYdESf z{I7+^M*6j|=i!9ii9eYc)4x0Pd#z#tRXP8)isye*)%vfkEUJHVm+8WctgCqs<{Ie7PzKVYvlSj2^r^lPyow_0v{MaGk` zU4NHh`k)mApgDCTk#bUQiTV9pepL$e4~8AiZJ5i+`gfu10-FjEAzV9W86)ZUR+L!P z$!m%EQzHlc7xth$)bD&DjhQnwfsOL2?3WD;2OSo)`=n)80voT50ZP9nO0ffsUrkO7 zyx%MAoJyVGSseRMr`fb=@u@@g5#Vfb5~dQxn8zR(o#;u)nFEhpwB{cr^%bSxm7yZL zRN(ul^r2aY`NAiU8x-+sE-T8u%aKlO{c@<>_s%-(3;Xb=it+nCKi};~m z&?TyN40q*f!OiN2{NQxT!AJU`@dsMe0*ZPHCqp`+fezFyuN0MRS*Y{sD_84{3p z&g32V_Vr31{<{WO2bU5ym2(kiLmY*0tYy*>{~DcGd_`$iSuP)U=#_3N8oPy?0sM9I zy}U$tPAu7YxlgOOeMM`Am6H<^+wNLW!$yTUQK8p0VTY;6{OV_{x<;%hi_tw84HymP zkjB4)&fDcMLSmO{>BcwMZ77hP;{G4z-U2AHW?2}7!3KxHq4B}p9R_!IcXxM~!QI{6 z-QC?~aEHOIaT#E?=ezg*@4fgpc4IeUBevs2XJzN9EXz}sou@L3l{w^x&r8n&Ompt2 zzrg0Y=C#2Z)Jqf9oq5Cpa_FrphKQH=9$*l(D3?H=mU>v8bpRDO*}gRY0fQ(#tI%P= z;vnCNF|`!v9L|x`69s5+s_hCBenFoN|9Q)!j@st*u~2M=nFvyMoXfjkuHdBFFGgi9 z9sv|d#BNHToFRy&a#iK})=S`z9!4?W#d}_%$V?uMi@7d1<%K9r4SGT)SSVEb`l!?B zKR>*{fy~nG^B%5xsPWJdEtr8*HO*E(+lYxY_v$pFZ(b{0H2e-CrQ$c>O|X% z7y!$_#f;_J3pr+jHeOJC4tu$i4?VP+K!~fnZ2k4@bhCzqD*9uiaLu-Hw#YG1CP(!T z7~!vM+5>dcnN(zKTo@*yUf0T*JCUKK`9e#(=2u*o<&;zn|emxvbrLQS988FEMJ2yLMqAoi~4 zizs3fyb%fK!$0_2cyF3l32ob} z)MUCac|rlvYZG0~I-2-xcmwj~&V;C+rV#uZd#G|wCt^#kuA92t{+k%*IJ`gnr8EYl$P*t-^iTIO!53a|agLgf^pqx5HZb2Je zucFDt;eXM6LYaYSpxr63_Q*ov%?RP`%o2S_z?=+qaiVpMlA;jd5m+lG-8vDM7QSBm zlQW~0=+%If^qa-{1`b#{==b0A3!?xe6QjN^yr**Nk`^w+={RqI)~?;>)jFxM3NGEW zLNrEY*3z448XG)#9#nLd|eLY5sq|lIc6JdV=&!ea4T}2(HjbAm2`P_Uxm% ztc($&bsaD(SDGDQvluF#YYm->M@3!if=!CW?qu@qyWZ|b(rcM{+&Idf(cCqM>Q$&$ z$&+~Rl%&FXIKmAJPEYxE>O0j3{?Shu~xPu#%swM{CZXIWRboBNYc5pPLK&l32Zg5iQM4ax{bY9lB zLXS>4_Npq@F2vxOPv=m&Jo^-)_ZSf==`-d{&X6V<@vG1YgAp73RhG^%-`T6o$VJCV z?@D0vrk)I~*X=e+f2t@OL}!d*Q#C3JN5_wCilbnvvI05KV{J3&3t~zD$VqEiM0T-{ zKjIcev$nv zn-SUCD9C3rI~;6>Hm6c?8%Z@Ct(CYVFmsfdg!~dY*iHR(l0x(b-U{mC5Z$3PDKFDsr zEeWY&(Ig>}$mmbg<=8o2cr3xzgxl-ov**GIjuBO99qqcJGZ=lpYDOoE+{wq6mfHSu zu$^$Z=P5ewE}fT{M4Rd&u!@RwNY#&xmz4*!tBst)+>}keqZ5EuWGFtxhpo&^qnfSI z*sGh}*dqVDOnIC=fuLjjEK^y0_KQHp&tDJm%rc#-myL5)`xlOFrgA%YGPTY^hHQzP zX#@S62-dU6X2Zk_xkuj%#%aL8`nDoaJ2nbVD3Xl&M)W@)DqguXzHn*ijcc(6O*D4c zkA*uaW#v|n<+eLY_gRdXkP55J+o_#$Tcu@2LaZ5l*uGB!J91%yxDS`x9~!~(YYWQR z&>N20ar%{h&RxYPjh3P@e)m+RV?SDHY0-?%HZ)jz&wj7EMw~x+=4?wjP0!KhLu?~5 zbJ|>f7LE<>L`ZK&tf`zz7UPzpKsny)jP1uc;gDS5#WN`~4VT@*U#xWHWyTX(X1{U@ zXhprZKcTP3(pt(Aelz?^mmkQo3!ROkqF=^}f%!899)Eb`8|hFv)Dt?Xaj?SrQ1 zdd-)ap4h^gRzw;8aZ%^bTvlF|)h{bYe~af7b&pqcN`Tm)#5|PW;a#ZqZ0KEACpMW- z;0xs*)FMmNGGotwhercsY%_94QBAOOyO?IU-42V*lO#cHSzK-g~1M2B9DyFO=3164de73 z&c4@v#dG_8N0dzX2VG2lEs>KZzlX*nbT2Zj%9ZzCS}!zSq&BDA7F@`_jXA=%o13Z- z*~QtSCOpGqO#n3PeF&QO9r;x-k3)mF);GQyHqk4sXiAeruJr7HWvd=kR^){h8>#@o ztfLrm$df|k7zKtOzlBUyd4!E}rNzGgT7S{@Ji@YlS1T2i1uvsxcdpl<5Hjwk#9|WQ z8zrecA{;`GlSYqmS%@?|Q(78Z;i`{}W38TL93^FTfPB=0Uv!|8yxCr;70iXO?7dj#G4m&?&^>xd_X6BqbT2wc{qW=~1fmX-Bwg z*5l(r`+B143F+#enHz(4QS2#nH1vC>68ON$&BmU~x`$zU%omug<-4qzJLFT3UhuAG z0tuU_0UPJCQxfORWn0IYO5fkVSNfjp=R2dHy#_vp+Zs=bF0uBNJ@92zZbxVriKlF~ zR0aNkq1ySPD?oc0h+b8E-5fu?If8~o^8A!xyPRKKT-6&te(D6Ysf!HI_12Y@j*?7t ztw*dVs1#|Q8D}Yc*Y^r^8nOI(d*`pe9DKNmyQZNTc0uiFMNt}(-Rf*gKXpac$-5)k z0Wx8Hi#g%sAf_d&=4{--x>cN3S=OALHs47W)Ne20GV&2D4YmQCJC_@I_y>MF>K=@l z(EkHQQbC$NZIF{)WgQb)ZszSyogClvqLYT5I4PslT$e zG%YLL9Y>#rsW^kvTA63%T5Vu#8II_P9^kEdSsOf3yz*Y3>Pi`4GMnjbtR@UHt=}N9 z)>WBTK>Ph=ZU%WO9UpNU#$8lADC z3|gWcwm)D6CAC|m0EGsU`GFpKljD;i$!&Lm>_B9^+T}`-jx{4cJTz&xAJa3rk#aIS z<%%vJ5eFvI6dpS^GsJ55A3x-;KYpnC5$?g|f^w`=H`3ImI2DXrn}*&g>#y5(EMc`< z#buL?cB@6FWo}lW?^Q7_Lbf2~6 zKd5{>be}aA2!v7V=r`N>kcoyW(=xf@AH=HDUI2DpIx>+j{o#sj?{Gj-_}FHmgr6d+ zAU=40KUMr)BlSio^mAW(?$er?N8vD!cwgAytJ7q2%dSNotDaDoD}7&7bN0427C;UZ z0)yQ!uOMex$y=nf^!_SDjPHUgvh3t>p9!vUXPjfX)Zwli zc@K5)@Xss|Y+|_042`w7({AV9=wV>jvsD?vXX@(aII46c_Io4y9kKTL$s)r6rCz@h z+-oE$k}Y{w9Ra-R)4dKg`|@1skbz@0YKh%N*BWhcoD*&8j$dypo8qU`T+`xxFDblv z!dr26K%?P`C=DE@>IAsJ5EDCwIM5~8ZM#rgSuwxxqlw|MI+X(!9gNw}6y*t;?2zDI zauKE*Gl$1&Xm%3z`v=ZtOG@iZgb~}4?d4Cz-786;-=We-Pi|I4gVg7fQe0*i?3B zcVD-7$A32~R75Dr5jS^-zN8t@XIHaTc!G!C30J*C-iIUf*nZHSd#&*I+J4ZS2Th`` zsOKXWf)>aTg656ZQoSM536Bnu4|z7&VRZrK~ z+Z9j3-P{p{d?U1@oQLYZ-cvq;DU@aiF-#V#tZn%n;=JuTrMKE&1I!-$*_`$6FzyZZ zTub_)0!enk*r|8?RL$Gm-R^r&<$>3NA8G!`*;q$vH#-YAf+Ntjl?!ZMVzm-Wr?`z{ zTks2wN8L31*8c&m|HA$a{wMAK3gh@6T>jqa_YY4}5NnpB?*9h<&E%$x0K_cV+V0_5F-PG-27Y1c zDI^~(5@Wn({%ln@(r*@ps7|#XW0S*Y_nC%4m7I&tdVM?@g$E&OX3;dhvTTA8pf&*Q z>R=<(pK4S1VQi;jm*Q=*6<%#o*Wt@2D#y7~#RwLdS%eq#>UmZ#c4Ll!DC;eowdjy5 zuc#cuagKn9x2C0;jn>XyX%z6WENg02;!=CK8Z62Jlwg6dE@`Oo$un%*{n54VWtD~6 z`mGPnrvb0~7%i6mE?1IXb_SCdMa9*wg3DqAvki=e#yI3(JbY>ox9N+r8eX-F2m@%p zh=N3yg?n63HMo_2X3jas<>e4$Uv=cXE$ydMqugd}GubHg=(Fldx5N9J`nFyvw!8;H zzD3|6uuj19s{hNAV8$Q+ouPeAqs)wU)z-QYP~}X(+B`6N1xCHi@~ZEw^O6Br#S4RI zx=0Ws1hcCL+W9?KCEk2YIH!@gp#;@7%{&PaD(W~Z1bf}fPS)Hwp=(IM5s zxHbx%?HB^jKAc8WtN@v(HHmRsprn{O^z`S2=SSzD361R$zE}8r2H139ciMMO*y%1S zA{QA0Hv$~4#d6aGj_y2t=pb@V%YANy4EcUN+_oZjR6Fz&YEl;`4nw79o_#y1l@Yn6 z-9T~=;+cdu%+jTv`q+NE&t}Q^BC6=c2^=VUgyY;4kzAp$O6*zn?MzPk`C=2{M$Sc8 z;6YUijO+~0|7iG%t7KgQd; zq57+xxrFw#C#Q)!i#k${+FjjCCF>VYj5h+ki9OcVEYBJQdjY6{=!3nZ#!u?`i4Bbb zTyHDT6uE;(J}{&~$|9T^%}ELohV<-4Jv`KAX$?fJ@KxtPF{k?7Mx6c__RC*-YB98_ zXp%$K)#%fm_!l{>tGVe@Usy|3C75iiJti`+2BBfGwfnn=p9YKSJk6BM{dFWVWKf3B z0yYw7a>mn^X9?O?_eKKCpK04N=;cI?qNTzbNpb8E@U)Y~@$Nnw4-+3Qs4OLuqTxE# z08CC`ECgT?36ehV;EX~%?`#@5`IB;+dj11wd9|hx@t}~WM2HOtv!1X zUU@a&KwP?CCx}K$*uYUYHn%qM{H(Fc-iYe zF~o3*Fl@9Ey1svWQx%l#4{{@A3t?vqjI-CgL;_UebAWHp3`FXDCY89U+MLGKY2-lb zF6&c2N_2M zROZ}9b}?uJ6&nEhsF_{}B{rfn_Dt079D+U-N&eG(8?(ow6(lz5wr>Ni4FtTy~(FPcndd-Cg;*o>k+PT4fJ(eP5K3^503%>bs!Jo3Qe z`8FtNq8{k3P#+h2!KCSkE5K0oyt50S^ae_Z+h6vK!3Fb_WqAa7;7T!K>=)-Ks|vNvZ^qOkJIm5?0oC|B9k-xHx-)#UJQhU+HMxBfciwB~ zaC}tdhoBc{j|ID%$t=P2h0QeOOC?}*Xn=)dnUX1>59C|QK!F1Bn2JOmKUOn1gK8bz zuVcfF9GM*FDO{N7jbKdaC#}R5qL|3*&Cw7=py2bSZDH`QtV%p-jikQ#RnHH;jda9`WgTIp*y7{(ADX9rV z3YdaZA4ZR&u1wZ(xk z-z5N+`4cXBMQ%~3fV&wxo7m&o1p{Z{8v~FW{KDi$_{Ce*DbLq%DUCy<5^LT_f7~1> zM`U?&uCvKDChs?sB#c zuG*-PpRRMp8;=+@9@~xDhnwNNt6gK0@R9C+CgbW>9_~&Fa%gFd*0|Oz3~b(%5bIAP zCH;Vi#vyQi@+`1CPWa-o>sk|7L6M-u^65$6n+mcv`oLN?1+4>36N_(nhFelo!o8pJUDeK!3EDSF4RS--L`RGPntxb4wE zCNE;%K-gU#>^^)MjFf}XI>#4TkUH18c7587eu)9t|LSq&Qyc9JoNoM|rE;dC6(z^y zSdzF_yK#?sh>A2C&PT7b+!@ET=dfUf;-AC%w+CTU@DEZy9t2sbjvk=c^=4dchT)WG`3E@C9O8J0CR+j z5!av*%Cf~9p_GTW+`kE80en=pb`{w=^@#YWW`My1 zLI%5y-J$~{AINy9znVB2bxuwP2c#!8D~!|T$UyVr>C2y8Vdk)Yq&%m<;^U3X1zKBP z|91S4=Do7#f!pnoM80Ue6XRBU=Ha|{r~TlJT^PRTG-tjIkcg%1_yEf9QvaN5KaPG0 z80EPhVn+r@qD=xglPiqgWZqJXNwbR`q<5x%YNL#`9v?C0QqGXHX{>st7WeMajEzVh zI1Q859_&Xi(@e7LFP-vBvs3tBVtTT_y^Uabirv;=lKWs4@g@H<{(94H6u%;1?tDr# z!B#RF^ojL>wx4K$!S_hHZ&QhPt>BzNRX#E1***&J;rjuDqzqN>@LdSE?beje5L^YvZx{N#VH z(987x1E$!)QKJEE%6% zoh%A1Vr34UuC#p8*fmR}*?7ZQi$*9V*0;v6&e_&$;>6Vx?N@bnayzQgDG^{c zChm*T=2f{^_yH_1u&3{JEUj7gu;D1*T=)jH(`c6(jSdDdY?N1<`_l+md8Ew$E~ue9 z&D4JSUyprdPT# zl+T&T1%0@9j?R^a0qJ7(!}*V(m){BkppNY6p1w^0(DBN`-n&4uP^8~#9leFeT}2MX z^KRf*X%(Lk9LmqT14~s5k>avwVWLg(c}(n*3BH8gR{CB$MIA!eQxlqrEK_L;O%+dUGqc)?t~tpgV~@D#(ihYKZ8g6%#_1 zx}=lu#jr=y(0r^TH;{08C7)YHIax`pu&;KwxiFd>AH`d`edO0&_ z82}w{c1PJhHL^RZtWmprW}iptf4m02lRmMtBQmv5^SQrPdRCWT3~c8}qB@jyYgWJoU#|$w_0US7hlu zrT5XhqQSCBO-C66^g<^dGPVkE2ywFi2w+u-RmB+Nr1CYBS)cqm_Diy5r-2wnP21=ZQhN4y$|({^tc$e)jinxiKwl|4(}&GsP#G zKf58Y@{H~gH1n+zK~k4x(2*lA0po==t}5D?cq?Cp$_yaY9XZ~Os-AnUM=Jg+auxdC z_uHXGR}ad{;Ef06j`-Fv5IC4V$RCYWb%mxQKEF1~W!Bw8!*qk<3(o8!d0NXl{Dne$ z?3auj=mTUHSl#m^LMrI8aua;w#SvM2&2y(p`sMwhqfQ@Zai`M-mHp5%2aeYZ3N2?@ zYOcaQyr)Ym;+V?|HtD`NRW+88jC$X?k^)R?%bU}&*Jgs1^_=>jZ=CY+CUN+xp0iss zqfL2XvsT#8lol4dONpRqxnW5D^MslnyA}@N%44hqb!2d)9uJLbV=2}5!$ViuEcn4b zC>`~fwXOlAa-3{7HT0)c$Lrv{s$<<@GR;^0VXy8qQ@%8MB)G)J=qz(K*@7dC^2eyi z$v)cUAO*)l)Oo8-)&JTFjYTqbMo2kH4jTe)^U?&P4L`3}J#uyJZ~GWU@4wP-(QvoG z=&j5(GL5{2Y1YgZvM0xqzwx?Fg&5}w4Lowy>=P5fPM0!w7Q`W`SYn!5;rb%Mac{M-VK;LV4);7uA z!8RAc;K-usp=p9#V(q~$1`G6!DRTJtpVOg{ls-00@-#4LdO}0{k_S9Lfv9dqLmvjk z12!*RnSR`U`bKXQozt7N^y+xGF0rxbx42PDF^xv9fo*hCSEB8)B~hG$EVs*lz}(#- zauX)3rc{xPTjkX2M1I2@;ciC6&!AyRto4Q0G>Kh31eA=6YbOH5jGRqx)i&J9m{g}6 zr%CY#xi-v>6!&6Ui30%g6EFA>OUEk1^UE#Bh~{vT_BgYdpI6fpTozddiiTcvo$E7Az)^X8OC zHMlZebQTr9)$9uhC$D7o3*||9nuEAuatWZrsf7T1Fr;FWxU>Xtq|OoF?*3$TFV+cL zf`2}au%ggdpQRKi8A&w!>u?XBx6NK zefU)!gzAG(e@DOM|AlUc?^Qb@LxYS-6_%w5H8jhOV=BD7mJ5SJWexGm4GgfZ4Ga60 zTn`>e(K$J0d_NmNQ9U{D=oT{?V8_rex?GWm_6K&6{F>zf%!ed+>HIK`F&HTa>UDY< zIVj`_FX=&k+c@wNOl@c!@ATC3V2Tt)*hqC@W54^0mk$=GDBY5hT28!EEJ zi2zg%+3Ep-e*{FceU@Zu3L<)PQtiOu!N_(Qli6_A)WN;zl#s9V3MXnVOA zE1QkW$_6~`K68C#|6Tc6-aQS`c3ennO~h7%(g5Odn?GVT<8cl`k%|L`6tsXoF+ zD#M+5O95ncy$HKlS>~9P;;t+k1*9nLjw8n4bE6x@SUO?>r-D#$y9!NxL)>vtBS-_- zkG*FrP`-%0AUB<&6>qMz@tTi!Z4$<=fqc}iZnhX#mh8h`BLemiyc|v`*^x;W2M%19 z)y%P5GRIWdK6ygu?2p{8{{c&I&Mg|VtKWC%CF$XCQ!jEi)sgb1S>S2tChhzW(0xzN zP+rrzzNmJ8RO|dr1Hx-QCRY4St$Q1qcmCfIN@`i!$w-H%5Eqa|)Ctz>*{gJZtyhiOy8m6bQ3; zEwj#G8FJuB0~wy!tV1j^gS(DjC@HmEJjLJnD=0N4+gQ+gEyt$WczYY>i5mSZ?>9=( zfZ!h6$DceCsWs?Q4Tl#%q6&I6WW9$sAeeLUBRDM^<=LL~#)S0Y6ZF_6?BM2qospiY z(z>M#2wp>LP07mQmkP8%FHR~=_O=$hMj zD;W~YC$^s(+J7&KoeBn68^(F-lqVIcab@96+e}D>fSD|rK2JDLyZq{8+A}*-bRf$}I`44Vb3Eu~GO|ZB%-3-1f^&@+=E235JLUrG zSz|{w(*&I^gi8udmJt{3TA6rqumt*eZT*VMLmOM0q!%%4e}|;>d)BSk=V$*z=7Nk2 zu7Y{8>weh~xX*;7(cd9UxqZi?m^yS|iP_!Eymh0T3!sZ-G~3Y~Cm6>(oSZ8ns$<+C zGL1q!!uCc!%a`VaWG67L21v27ZY0AWbT?(4aaNW?vF!CikGw4Y0bBH6&qZsRM26YT z2f1oZM`4cJ21c`UX6QZPK}T0$mpI%qIm}K~l=GE^zwf5A%F;9Ppnc!pc1diiU+hG& z++R&6dq(8KyItQpRUe7e$&-zjqmtc*0Z|j53=HD(?Aw}08-kX(T_QZW+?ZYH&uEslUBE2cMruf zEfjx#yI>ZxL$Qf9LDLS#n{{Fil!UmLHM%L#Qyx4>cj@Zz4!t6)9)Bn>zQs$-+XG2FyCx(O#8l&xHp#0}2ERv1JU zJ?wyc%|O+IgO9|k@TFXcn}N4W?8@Em*fJGgEMEb|545c#Cb9j6T2|58KVadg^=dvq z*>N7m&MI2P_8b2zrEPQRluvOKy;vvKWOfz-9CjJM}CPL44iiQCJ4cuV}rF3vW;hYdqr>dHfACxdrD zSoU{)xbwkk?;7^9X<|Ts95yx9pAAVym3u3bk^rVyoo;4lHN{ zwczH|9J@%uW4yQWpptU3r|k){k3jinO2dW;MzD-p|Ec}Pz_|vU;c|1R)-t~JKR$r} zb_M(gGzAyY5o^mm2(nKYV0*T_qYb6>2kpxOvr44x5UFW*>2M(gxV|zqS3~ zcw>~Fc}oPW6XQh_CX8E?hYQ{!XmgZla;bdvq{$5@Om6`0OD&Vcr@W*D{^rO>u|>cr z&+aUN3_scueUyG%ZQG7is-%gd@eTEqGo2b`{H_#ytV1Q!hSdIFz~4Gu;oGQ5EfAqF z&5gUg>rQF3z66;UvcRem>E-cL8Bj~a-gt4Bf5}c9jP36kE)R73#4rqp-pP#{kL~a7 zFAwDIuE|6{V?R_+WP?(vl}U?_c$?r8wGQGGTZ9ANJyV2ukvgm>b(2)2k)BqzSc4|%-BDP+{?Rt)N74aTN5-_ zc`etU|4m|4snu%@{~MU!As+vJ^`hwXnv~SiX-Y1tCbOiG)RJ0IOQ=4^n|<2eW;)5a ze2)}X3#kUTfd8iTX%6#y6O{8`+6IsPjohx!oAEr~j-|c8&LRjJwQI&a1T3hN-+6v~ z)n(~MYjbscLCsN4Q`G5;wJ1kYzdPRg_>Ag5%|nHZlz$7B5K zWNUCRRAMGYK|@EBAMyG1^S~RTe#UPGdkPN!ITb^I_z#%zaZk+-S(g8E>d;ZFI^aOD zZOrneD4 z6LSyrPezdFNi`Mj zYzgUQoae&AsAEDW?a&#&eqM#|FY7n|RQ;7jOfan*BPSTuo@DuMYCX5>`aao(&_>+l zvqTHP|Imf7Y~^63M~c>p80NIX2wYfw5-yZ;)p0SLrM~OCqAVyjSdSzKoq^uX1?T_d z1Nj_&gSJolKvKW+o;!7vOacmkG7D;f|Br8ytnj6Vm&nBUJ8z`>&T^lr^J(AgJmsqn z)|t#fo9unf&GPst7UZjPHTfHSMP9=nP`E+*THo8^(#9cwW32I~4n2e6m&8ko4OvJ` z+`ihV-{Vh>*A(0GUAdn8XXwPBko!O00Wnx>xIsVX<1A{>8mM@bQyw0Y z*1f;Wa+{-l&iSFc*a^JKUhHspbCYqJ0~Zkh;)4qpQxM7&tn{U+UL)E&=KN(Cz`e#6g7*hpuZ$W=@Wayll=ayS?U zKO;jL=B6kAy}A@nB_JwXDFhujNcSXc!)S}4Ks6)a@RM^;C&3uc2Hcn>V!*0{g~=26 z^_#`ImaZk(VuYb+8mIUI^n=$$iBHXug?@5Ox=f4oCL7zt`2^JvhbOjTo0B;B)UVm+ zo%m_aua#-IEft;&RR^GmGx^ItEvx#7+OAsZH3`9Q8;%The;dNZt+&qktr{U$X+v`|JAp+3%!VRaW;?D=F} z4)b;D*l`nDEZ$=OYZSys$qWfq7PKP{^D#SF-iL;HZA9p4L6>mWK*`9^>4Z?qyCke8 zBixM@&Yy3G7)&p3xRLk2;kluf57l=xe9eiMCnM!yUhvu`{{nzU+0qYi}}dt zRC({U8Y802t(lApT%WiGDQOVrZDTJPunJuIk}GXm<<_!F3R_Wluif=-9z#mqeJ84g z;`vf<)qKdc=hSs9z*_!Y!J7sGjByUVrRaJG#-~_thZa@RP<24ThhDQ(o zI~09NV-_LJ1fi&pbk$)b4B8 zdwEN5r0b?y1LkX$FMq%!nKDeLYENE5D_j4zVh*n91@;#07fG>pT_H6YfRh)bM}cMJ z$jMn-oub%p)$e@J-&Eg*ukZs7wY+$r&%adDWWIehaWnCpUfryv`U8gTL8MB;BQOo* zDwbNlFyKNPFC~0*qkO^W+N$mq(ofj(&k3f8;${iQ+U1DBb$rV)Jj)@9-Xs1dPoCvZ z1o*Blo*`(Fy?`0H1$MGEM@ZO#OZw!U$0~QQjVua$3J2E`mh(Rur{aaxdT0flR^|0OPnHrsyjTM9Z?j!3fAfN(`!Ufa=NM`6EvqWkHik zPgpkRNS@>S(^$>?;M(Szx|#iv3(t?~%&Yv%oM#j?@KMJer5wXtJybU=TAJz~rf94T z2Eod^gsr)c-^s|MXuxEV05kfT{N^0?iC!}TDV%CkhaTpngIszzz{KRetXRlj9u%bg zTzY?pfP$u<%MW%ED5^<#_i189!rIN%{rbI+dkEWwZo|)de`~#q_JE<~H$%hWWGcN* zyVJkHZ!CJ9p5e(qV7RBiJK(|d0J^gZE z?aycRGas4QDawLs>f37S9hwC_)kDx_AVbSQeOvqY0;ZhDHlc*DfPs2Fh52#!Cf!|}MY@$W;R>;Rm)|1LK(86xdSH|T61!f4PL92nb53oHm8gs)#);LM)PPnH`iz-6;nwmB^7@bQV1gcEQAs!gz^vkA7A2tZ(OY>jS$v$2p#SZp_RPJ zR#L%qEH$hXchir)Ki}`W+b#75L#`chPxkW8liemogd-UpRhNssL!iJ>i#+_Gm=k4> zMf%%Q3W0c0n-L;KX_e_xtp)sJ#p3l{GAC9jT)K}qwkDGPU*V=3x$$vMeBvPe(!Z(O zJi?kPP*vYwcppe$%oIf3tKm=4KNP^6EF8LATFQI6uHqkvmv=;${bfsu9xE9Qwl-%S zK&zeCb)nagY912CO$Txc%w2l5@cRQs|J9FNo26^!cFktyj%PA`+uSqzu#so#`X7Ai znl62(&~QZn4zKYY&2Y%3 zjVz(mfF8379_XIOY*+HepSGI>WY5Epite7b2%o^tUB-)M~a+3U@^+P!nI0!Btltt5Ge)b3ZCiF;!4y6*n+<( zA3OxHR9rB;8us$ZITx|QWcmUIOd`SQ!UfIof0H%MFbtCKFwl?4P}YAP(w3R2`;p_vSjZK^}0QbOkBn@Uq9gG~CNTM^U{h8JD0Y5+MiDWTWBke&P-LVWa z9@`+OTB>xjy2rl>$>5sK2&k%#zlGpA@d612lHujsbK$Ona`qoN)s_^b`~&GL!PlxUzf7 z*l0>55mOJXtH&(pYmC*{cytWLd=RC}LD?80}JGw z$M%2YMov(S z!tstmNw><*C1>5O8~*`&aIIDU5ClV`viqbGj3jAX7&v1c=t14DmJ3nOk7xeqxapl+ zI~&gXwDRU^8Z^wfH(+K_qNkO}-uY;(42lxBH`h~K{fGsorht$8G+MbSh0lOm-(6in zyV{I6=OCN!f>J+)Ik8MK!4m@V%xp2}hVJjX?1d8HQ0-?=wVjupt7I__|3O?LcOjnP zr3Ya+U{Oe<#nxbpn5&rTy?(h?x~D(Bc?cVqWx17>+;^?HwzRqrUcE5AABXacZ}l6i zYe1!&37-!W5To>tX{GiHO=^#yE0z*0RqC9(>FNUWz?P?%o^R~TK7g03*Z@a#EHLB~ zM&UfMmRh@;nyr7sK@LCo%MC@AKkyQZ>==~F_G2Tp!w-Aayl*`9Un*E`uC~@%E~XMv zO3J4KO>Lk*Q($1k|24%i!speaDGEfi@(Scm@#*J&@qDV?U+2W|@Z;X0Eph*6ia7fJ z0PKH@;NabPUBQpp>%eax_Ek@~g?W0rZxq=+S40GDR7fF0fX&lZxZ4{oLj?$V(-QB&PAnAZCu;7+&<8&p?tq-HT6{f*;8;7$EFeVnDm> zmy`GD6*j~kNz08`GEb`=#ll^R;M18FAO)Niez3>tM#IfIkc#Yz5gE&} z_;{>khIZsAYd91JH!h8&$+6(HXOz0kxO^_>oIxs6e{R=~n>p0Cpl^ki_Kl+AUTO8E zKO)O9ypIE)aDd?3SG4HWW7J}vm0~$I7bNI|LT1+I<$}#dA~u$CAA-r<-Q{S9hS5>8 zb2C!&c=&4BQmXRBhMq5GeT$LI6@WRlF4OlfY!u?Dw`RXdXYcmq*&p6q{4{vzziUci zm4oziHF=MCGCs@-YoCToNNkxF`r=_zbcO1kD#dH`YXw9Pj~QXsTm==O4Hve&lW&Q@ zXnu%8_O)8+1XFo60219CuuUxkGia7Yeb{f>>>CFf(Ml`e2YwDI zas5*cJMd60glJyw#1|Q}I+8o1GWIeu_e^s?4t6IB%^|HD`|twut85Nc)qVO1X={EX z(-mm&8b$hj#@#l3ZSm;%%thX~^2LsCTcp(%M?&YMwXO#N+_T}Q=gQEdm~(-Q4p!BZ zF;onv>|(ic)Lri(-~l!0tV0Ha=8$CLHYykCadWiBIpP*Wuz(*sw)^W4BEU&}lMqskqC~k#mI}Zz5oIk2ZNDhuC$$I8ZJ% zHJbch9KC~WZ$zVIsPGMu5z%#+sQ6)kg=^F;tiqSNflnt|YMU>Y zciM-kb_!KB!1sQ=iKShQ`=leSVG6G+4X~`xL>i1jo&k(W?+}+Cj&AJNfq}AiR&`i2 zwg`u)sqU59t;cpVsBkYG2)Ke3^9HGV3gUFb3BaE(RktsIQYb&FO_EYB=}$Qd6dj!v$0M1& zf)HsXP&s2iZ?npatY2cE(jQM9A==g+uA8Is$0K*zTEGpnl$r*!*0y5QE!8wn23ga_09wVM!i5LFEC{U5u*=XZ5Hs3@fIud?k)==B$4* zI+H||-OJ@rS(f%umvV7A*Vo_&lPMjMX11AGRPbO4u?WG%)e-UhUyW+g8YyABs`&=joi5y>k5+t&gcf;?jwzPW?^LIa){3rDtgaeFn!io$l2eusr5- zFIPBhFTiHkz3RH~3Ing+U6O5*@h-1+wNh5WiW*-WWrdf~Cv@S`lWOSXn5@uycMg7H zU}K*sKGjM)(e^rYXojtwq)xjZjlHeYCljTu4j&~8k#qQs<$=oL*$oHt;y%jCe9a*h zoPcyUPrW(aHJ(zUDmmw1^C1eQrXC^BSio9!jQr=M=hpNzl75|6wiDeFUNM5n7@qat zwo1jJQL_b*P6X)w0(z~0zKBU*xT?Pa?f3H^+q}y6-vd>ZuYZ*kXW@CTw_9b>1q39A`o;2*6eOd^35_8@Oyu*zu+sx>ZOz&ZJuqP=7&x8~Ks+Ao#xR z?VYa`d}03n*@!<`D@dn!k+x>3 zQbcD?*D!7>-@B@ZygA=hg?=ixTe~25OP{4!M_w6gFUE>av?AUHWvvW8JGM#dWHA@Sbjt?+v7*I_394-OxW@+Q+$7Tzrvb~&8P&)&7ja!T5 z#N|*A%Vpf^w2Q5Bb`oPjTHB&VpCRYm4d`rdBg;86XfY~WvcTznXzq94f7W@oyV~|7 z_<6?5@uwfy@uh7mv=Db&W|lRn1giN7mZ3VLu~&C>6m@T_`-|z(^V@)hnsV&|4P?4W zh@K?Q6c1;vwsk+Xwu}18^xGl3Od&&3SpW|xt z*_#by%i_LpH*gg&vbgPGNR9_EMIq?L8zAad!$LD3Y>6P(bs?~Jf*;kZ60~KWA>#h- zT3v%AKAT)SZe%x(6vR&)C3t7img32p$Q`*9UY|QM@gqiJT$`^rA_~9SIY-43o9?KJ z*3^q8snSKs=vat&nh511zlFYGs7v|&KDK{~whifx79L@Dai}!1S*O9KrPcR7+$P8+ zEHnZTQ8(_S@uT;9EV6d@#L)(V{Bp!u>u1uD=j@-yOnJA~{de@IRz-Q$K6ks;8mnXt z7vS?J9N~8x>>;0e*OM9L^=W(pJWxrpyElEkq*$93wUbC()2~(8=4SR-91k*z(=Ph z>%vlsxI@ZK{RqedxMtuU!0?^=W$JAGS@?e25xxXyAh=Xqvs_)&^S@ELlyiGzk z-Er5^4R;NQPdBxmbU*5e6K3P9Ic1_P!tczjq%;npW8E?qurD8mWl~mP@x3A-P9Z_Q zYcILxLlK@6U}l45`LxczgR!)m;_7fOonfHop%ebRqyOm&BEz_7PC1^Coh)~`o)xr6 zg19K)m=;elIsExKek#7bMPsW!_4SPGQqs3~;`!xKUYIvOXL-i!)M?th z{2Tp0(e;<#l+49Sr*_;-U&Y3CL@|F+|NdU_T*6=UySedXAm>FK12-cgs5G*$g=!jG zPI}ezRV`A7y7>(2_ zg}P9lYja!KpUtM)zO2No;YU0?QZQB1_-zp25?gMH*vPgI zfzw@eOkt0i?dWA7BoFZpXLMW8Z%FE$1D_ztB{mxnoTMa>>%Nu8Vm8sHHwc+FrF-oX zYkMQ!#kTb~WnfvMK z5P(YDt4RH+%6&(Yyv_YyCOn$M-h%TpM~=Zph3+2k+O-$Heb;A+9~Ci^A$!;pbPcNJQ& zU%u}iTtxEgz{plr-4Y~Y)7<`2_AVMK{At8&_Fy@oByRB=L`&Sps*k6Mxj<<*SQZJ$=D>BbpGYV42A9SGX zbmP=Q=p;t{GDC8{B*!v;vLpl$0D`|=^T>C(jdEsk;;J2{ohfiMY7=g434^ALYw>8i zgN}OY)oXZQvvIQB(YKFp9dp$bAJ{I5CSpr!z&kFrb$F06;jB=A2O0?(S|f_7yzEU@ z?PML(+TEhCVc0b~tq}FLd?Z}jz}`z;4Am*S&^QBdt8aLV9rjq!>8iPkx*5OV2q zEcQfT&V>anCs~awsw|aS^`!`iRdVDbp9%v3Px(9^d+WID47X71@)m3|W2UZj3J%v^?jo27&SeEK1mf|B`o zAGd!Fjbd$%JxU5`#kwt!7pv7g>*Ed3Y9Zrd-i$Y|FU()xb5F0ei2`MZAvtQsFF#)Q+XJ%6 zr}ePUlzBGRRC+`c;L$Vfv)c!LlHm=wv-g=1Xm+4mV?VebI91n2xv>!s7pW>RB>u?x zkA+dMeM@eVcU>jc{87)=(PJi@TnzAz(}@)&aK!*rGH}5S?(OR?f^20wj!DIm8{xT1 zGab%;DmT%r1l;bw01(Kifddo4R*h?ufZ6@*;C;aPC#D@D!Ec#2_c8i7%Jwm|2xjsl zJbdC!hn;mn-E!>yne7EgO*7krUPXme@}Cn+d9kg_D(5(8EZTnowqEMgvu(Q1tUgoy zRZEzC!nS)RK|OeqF+xDu|DuLua>u~59{Mi1Mo`xk&c$!@s43^t7hySE=FKPJ{&Xay zI_<@LN7a5}v`1Dpp?upg)b`|LwYQwkrVkpOV-RrqkqErDSDHTGC)AJ_N_h1k-J@=h z#MsgH`N)U8elmX|v@*u;KOctAYZv0XfK-xx4#>owwkLDyXF9qOafb$RAsjqw5gE5>k#_ zw5Btmntb&3so|%R+eqsmTA6!oqd#sTS~p-8{g6@n?$p&;IZLF85*aYmG<7-z1R}<$<(*nyWU$3wtZXr#Nbda9 zd+6IGA+p_InelS4_FXHEOVBA5Rlp8s@;ZQ{2XBRkecz|(LBU9)XH%QK3$)gSL-cI?7==xj>Du4e4$o9rT-!!as(?!;;6*f7-XkKU2sul6T#zI8Q(*3E3&nMI0x@8wQ&@I%|!(GDU+ z@f;AZh<(G;l0867bM;jHX9(7I4kMnDsM0~(4x2N2kh{8!3081tgI2Fgwzo#~Sc`ld zyUx)IHA>S1Hv9x9UL!#iTW{Y;$f-3?6E3)FPn_K2e z!Lwvag^nS#H%#9{qs9mcciqI{h_4j4g6zJAMUQ?N+N}_k_8$eRoG8cd%88y>eN&~g zx}@txmTIAQ(YA#_S7YTBPbo0Z?n`rk8-KF<0#vG$^z=Ms&2r-dH|k`eb!b#$;9ma&Z0kp4a}}#jrIx5GT&BFK|oc3Xu&x#+jjla zjr6ACSqd?O)unK7f9&GhAoV!`%Rz?St}-nl2CWk3=U`&ih-xK68}@v9f|;kIV2_UF z@I3gmIE0L1gVx!fq~tKg1g>R6YK!Og{Ibs$DIYmGz~413D!mJJkKPbFa;p^uJ&f}X z5{+zbgb34l$}3NN5+Hts5i`%PW|V5OmWNBnX}i8^VuY{N(@lfelJt|!L?V19R308;hJspceamFa0w&~ho4%1ez^|Jw0jU*r`zcH$zUI=8$El{ zAdD!D?#_^9m#mUY$;(f6#CXQ|mD1(u_V_+9ySi zlMn|LKJ@dXq2$x9j?i?MVy^7E!sob}Xj&ZvN9NtWuH z7p|R;D5j<;jPo5E?kO-p7Q{EWz9z~_A68wW9S%Fbx@(K6?riA6CuL2)fq?^Rxg;m_ zeq%m&+It@W(xA7r9p~sdV2sFuQ-tUtI)wPx;H+*=C;u&@0ep%Qz_hND&Up$7ji$I6 zkuf0cpiYWWt*6k|n4Hsp1!yK<9G98m5U!BICr`(-KeF7Jv z@LcgGVwl5Vb1vBN6XmDrt_qS#u;9!S<~uyW6Yi*Z?QkKP>Cg;XGRWOxN`Vi7S=65w zz9Il?WJKjN>G{^3-Vc2O|J*%>ocvi8dEEV|y! z+=GF#=FnehaueB1&<8l+-+SOVkTT{21nlXKdwaU1hoJ zLaQCs^4w2J;zXsB;zN`0c7tzO9#>dN9$SuhiNnTv5G#AV{}l(10^4V>?nUvWXYjtu zFF^l&%SsYgheC}U_-oJVftW#&E$}y;hp0)JT$G4js-yB%#i*Q8m4^T%HNvyz zqh%*@RNU6f8lR>aGdC_4At|S{vg7NZZWEp_xAM$I^PBfN-D1Vo0ce_qvrce01Y6Ee zAJAJ;`)Jy4KB1%2NFwZFU_n@`U}AqA4LEe7up{91IS!X~z$%YL{w}pnklpPbH5P4b z`kwG|ED5vIq(ei&$Ktr3ttZZBKfUmZOAdV=@2$0RhWdl5RxBSSbLabr8bH0&?&u!e z5av6#sG-=h<>K-0SV9nMa8yvU`|i#BPcZGf_Xo!L_x?wi=HL4Zz?3h~8)8Xf8MfYIMZY1-d+c9e z5Uh81M)wTY^6j4ZvTfb_FEHP};4{P_;60UTO zVB9L^t6PgmpUmoMZiYh08g*XaX| zTD|jr)e$rochSB z^5yGZ8WilqUU;5cxJ2NQTpqr~ax&5f?r-rFW(e8@W3m;gopcrF>mfB{TvK`qWzJ>H z?BgxY$sDVQoc_i?egSaPfEjz3wVW`YEyC<-Jf@UU(k=6b4Tn24-z%p!mGq3puK`sz z*_nQdnbfBo%HW*aW6Z(A21P3BOC@Z=^KF{-qSHs}gWDdfsz#9%@YkRn{)dt3`0Wq= zmI29MccxvYF<9(W?pMxX2nY0hawZ^TmvkJGeWprL={1H|dpWO<`j_3KlN#yIeaUym z{9%q&aA>b`VrD9Io$CAQ9gvZwi=(Jx)EYYL&{^U7bu(Fc83)iFr1u4ITP zmn*2q#u)F5t`eb_Tl{YKj^7U%0y?dxGX3C&lxD^1l=xa@#@)8^mv(3t^-UO6ZS5O| zuwzNSrv zF{rID(PTGKbb5o5n5LV`t+HdQ#kgI7c!a=NYnI7uNA6W^w&UOtn0S7hlv*j~NeN?flyc8Um6JDq0X)C6eGq7J&OzK5Q@+GVXD zu9;w|I@8o2#q4fyKbXE^iptYSu(eq|=Z9x@#tpW>oaX7!!^~M;_C?<*R8|DFEvS5digPbkth>{3VVdD4EBwSH{kbm! zBN<1xfomB@SxhiF_IkJ~5T;1tv;O|gcW!^cC?M)XC@fxu@|zDX>(W|Hll@jyO}QU> z?;=F#9gHlj?lBqnG)lUFHQ(NeAuODycioqmYSug(J-msHNo=1z!I{$mkKe(WzmW1d z$Sxs)+kp%6G5;J=zX+u10*$EU@k+0m_u^{{ig1OGjbxammF_|z-@LDq#1N0!8=vk* zl(N2HAsz>>u1EGR87OoOv}>@K61G+EI6RLSel4FY)BnM*AFEqRf9{QPeRZ%mH&&jh z4OW-7`H^~!xlc8&kdrAc5b29G4OLlNi#ltkHV9R2xd7%KtaVK_%*6f89gZoqi>SHv zjOzS-)wku*6RbFGzB<;L=_s)2+x9_ZvVe%O_( zIhrY|j(1+Z_ffECW=i`DK~&gqtDQyKC<>oCVL@@;`qUU-Vd(DG6_fNADR3jGE=TKR zK0Y(*LuWa1C11BQlXrgYKHP?NZD(=1;Wb)R!{w+RW97;GodTDe)xyeQ!&RWUcq1%h zFEzWkFJ$`C&$MIpN@z0BHwLYoJ>b7K74Q`uMx_6$*lHG0 z2jFnu`b8bZf7OTh?D#?daV==&XC}ojz%qE11Txf%8qmvue!xG6`u!*N2S_ZV0f6Wj z-_;BJCmes#kikRk-@U%<0D?dOVWIz+5dv#GoLxBr`cH`G|2ZE5p-})dS;t>d1puId zpx?|8|H~^d09Y)d^cS7v$nP(7!T@B9nIh!7?ks(Pu?48~tVkC-C1#5d10#05q5r0vd}Hg_t^x-Qag| z{A&pR1p}S)+d>2j4N?0ZCDyjS&8n$Dv9?f{Hzff90I;+mR|81L|B!*z&p`i$;m;#DS+U50kj(KB z@Iqp*q0s)w*k3l73IM{xca6Oy zFsl>5ECdaXHlPcc6axA0S3m;f0l@f^XmSx!bOgL{;5H-_$wdsZkm73!ly(4s&`^vN zAWALz4%h_)O&5HlL7$9uYp3)RkBzR z0A@@f_IAX-8HJ$n$!86WWFyO_lbCTFe(db^iz};oHtYwF%Ko8(fCqw$4D!D>ju5b% zRRBOB@QZP0?lJ(-xm!kt00bb@j}3y!0nEbCKmZ>w5S-^&;MHo(e+LM_MB^Lph87ZG zei1onXecDEifCl8$WL%|~N0P8UTAs7J0 zFtA-7-T{IyH|%vFGQ1F&3JM-<0o%dW%LV#vL-xW~A-&VcVTOQURs@Fy075~qD}uv< z1x|L*=RlHzseoPZq(aCqB?v$!ZU4;%09-`DZ@?5tA^}Jx0ivQ@Ab4a4uo%DtKwSXQ zK4uUCn2c0Jn0aCtI2i*kEKd#ki;pWn2!LtxDliO@J zg9b>5WA^_AkY#EA2lDTr|AF}*?tHn>q)G$ym$7RVkkF)E$iM(-R?z=I_uo-y@E^jl z&d1oV=I;NS*ZY6V4mnJn4f(obnD1)zzw!Mq&aHNOkQ6ec*zb1Xf1&-`TL?f6CGr|+ z{f0RNtKx6;fAECJOd&#Q1PNplA^i`i|0aRxCky~XJJ|jk`OhbaF+T8OQ3mvvfekbi z95f`m~+OPm4qjfe~GutASH90=X zyJ?z=9rSEyvg-Wi+rSws;NCgzypOH(?B^2X&H_?|nVSQIGo`vox_MT&%ID9@+EWWi z;ikH@?fqJnL&g^lo)B7~*k76_ycTR89 zS?8NRCFw!myz%)Y{|oRPZlny-5QeLiBL86z(C1n!3l#;lo~^zj4befNwi>JqOJ{9B z{K6CbBOf{N5b7@6QEKM?;vhhW-Iu&hdA)m{E|GtdxDs=*Tjae$<3QsT zSDw)R!5s)sLL#$KT*npPiQfZCM*-7JolufZ_3Daw)>-3$^%%Ry0FI$)2t|*rdEcR0 zJ;QeRX4N#ufP>SWuYlNf@MpfoP>(SxX5Aa91sGYm`8f5cHfq9sf#i%r>9=-|a7L&O zCDi+p2-ZF5G?W#eC2M7FV>SF9al0F(MX0=d@!%Gs(LQ_QahQ!#ZN5?w7;EWXI5s*! zvK!N|pyu6sC-rvu6D?7HqY~M2(z-h(rD)?@rbc&0owhx47%|@w63ycG%_+OqEa3G= zM1$gHPUE;>jf%Qzdzv(+joZ|~CvJ&}20N-0fAAl-zvTcD0UA8g{eAseG;9bICN*&U zvus$=p<_b`bn)T09K0M@4SYmVw8rSaoU*+Ofb5(+o)WLFva8AKJ z(c7&TaD8TGd8FFLOX{6!JA5*IMH*oa#g_c(Y(2X2REM`s8Hms@D8Qz_hTDDD$?Vag z8Dx%u*FMCOVXlCP#OSoSaX6+VX5w=2&79yta_j~bg8)`QU%IQoTo85alQRT(24L0V z?4zvk4}3HNU(zgw?N=mh&OW5F&-NU1^E+MGRjA(SM`gf{A!XbCX@Ntf^?Cx{$T{7( z6wyLqfN~-@Pro~biDJH|BqDYsWb6WgoBm22J^0E&?Xd3*J+wYP_le}`l}|EV=KO;1 zYiY;#AeFPG+^D_v^CJ;tGZMfP$#1yXWca_0ssXONbykB)j#9&p2KCcV1Ule|;3&co zogy`;OpH2LegJ3!Od*?I{V>>2@^&BRiAmq0RXHZUBclAKbEvLNoZtFR;9~mQIuJK( z)=pnpyq1|?Ms@6T;zKG`F)QGLe?1V{oka5F?}gz|kgyQoLjGOK|E%kz;37W1$YuuD z_y2QYI1sGi;Kj}3v-aB6vnzXi--QQ^SucCKmZ1qLHA2l+byXRQ+K&Au5GMNKD|k;Q z$N+5T%5x_>Byx4PxfhT+yb6=vkbvhHOGL3{hq3OF=@er>RaE55uYOHl2HQBDLmrL^ ze<*V?Puf&lg4AgFw+j^Y-} zx=v1WtOO-o8iEs&YNgX)5yBuxC{9nn*vk_q=dJL;-+7y4`2p@uK=|hv*s%kIQ6+pW z{R`k^zSH#j-Vc3dZ%P8%_%qQ!@|;M4DkuGvX}8Qke{g?Jtv6}-e939eB-88@Ek4twi;Xp%96Oi?eo`uyt{y!Sba1g_`A)Unf!os+Uhpnf5Jq|oEajTkKL=7Cio&(`f$dA0 zl~G&AvER5{c!=Qr4)BEPChD9ceDnQfFujy5u6aHy0Aa%(mjo&CW6NJphg(Zbm)B&X zb@H@qz-yvUv^*Xc)%@@Vl{ERq&T~Mzobd-Dg^qu9D@|pdb|fCf zqIKxi#=WF^1`iR-$8UoD*DKoL&_-~l}0)BY)f~HYGVh_8|jQ;sUf=i6v zm)&86JX_J=7~smPS$Gd`MQrL{Tz$#L<0A+U7IpQ=$!oE6$N6HPIM4qDS|=a8b5v=U ztX0u21R);VLlZyqEX^6C)RrsGryN}RP=28jcW3S$30YM$e@zj|!H!!yEQVI4OD$YB zjbFE2It}~2wx+FY0WD1U#BtcI@z{x~qCL*WeT|Z^I@}aL@7qTDfKS*MK{unQGAs({rYM=t|SkLQ) zDy*R_lXIU*)rt8P2eKX3X4P<{gp#wdib1QUF{wnAgWUib+1LUA#e+*L_XD4uGS_zs z@_leX_zG%Jb@ltX#e%@OJXNl8+_6Wg{o#*~3+L$Vp~tYi7V~&bL5C|>I1WLm-LY9cXcm^2y%sjK+c%YR%w<;b zD?BM~EV-_jjT|RE+k6LqQ;Zr`|J2>8zR)}aYrcMDUwUGzjThD6#N%Z7O3ue5SI~HL@22(P6<|9tv?0|rZ##Thn=stmjDE^us#;$32oEVuth26;&#B5lmvrm0X z7!4SPgBXRU_rNX=E)y+q))!LaWVjQ^<_q3TT%YqSY``3Izu z?-$oMk;9)-CTOjvl`PqR?BTtsVWR0WOJ=B*4B3tC+tw6H!Ug)Wx1rD5U6+l z2hmT{y%q~ZWVB@BC*xG=nZin0NWBJ$^LC}?hNqvyn%q|RKWOYn_QP zLljKO|J9Xr3B`i+J?-ug@KU2^^vn#$smfKGE{kNI#&7SWm}tspwEsE3!LU8d4ymKn*88EkVbzSEO@5L4g`z;A`i1ci*Qx<+efh zEBLm|@zuM4KBLxBQK&u2$`fVh^|IP)jhZ9Hyz8H8e$ocwAqCwd%%vp~K4{=B9V~-? zW%u{w@qN*s=G>7PqVrZQxe>~v{suR7Z2mifUq8Boo;&^Cl^lO~22XekWl>vVBwVis z52e(;%i4T1p^LI4VEz%@+K(SNwHaY%Xy%WgGX}k^*-?zW6>NY`{ENvo0I-ZSdaBd6iSS+`78q*8kn1Y$oOa zk)AJVn8G_rBE(H4G{!&T0q%ndH;C$pkSX zgSSEGNJhJ!c4-0`v zn4wU%`m=bat6-f5@lHk}NSbkRGOVPeq<|OLRZi8^)NmhkM!g45+DxfI>6tXU`I~13 zIqd40$jBQ_GcJ@?lZZbsYV6EUpe9!Sx@><+=q1vT3*I&lED8g>=cYRN83b3$j1%8O};0oX>0$P zy)Mz+;G6#pcfxcoXlWntDC2{+sJ-qtwGMtg+=T%8lS1%6!urdxL(=`wcOl^Tq>$l{ zxx3c=P=6s{`=pTIkGTzYyuA>R`-kHm>_B-^2=d2VU+aExz&r{0sc-#c{TS5r3qW`O z%COMfA9jrU{HgMt%29W_s?O+xd>260catJjauXnDy#S}RKPz_ z8|yqDjvNj}%e%^d0gj98M0q?^-jaP5yslH8Rw~RTcHi)S{otoDU*_g4j9wML668$` z1%Pb_aFM?!TNr^BtEFg$t0N5ggEC_I3k7>i4+}s60UTU;KK}S{o@a zY@0udtw>@nEeKNrrJEC8n%;}=#&8{abZlyKNtLH+ML(m+m||TI z(g19h1GBATuUN^cm9ijbe0{iSS4AvDLQ0jA?*qS%L)iIWivbp6(}?r=Q#}oGn~uP- zRvr&OV8}EL`x*Th{YVcs(T~WFEqhElkAE4#!@b2910ENuqy1>S1)IBrJMKGb|B0~% zh2KW>IncNBw+Zz9@&DUAUh7ua4s&D*e2l><31W&_&1~Gg1_`Z%?0j2gCv!)93L?TH zW>vbZuTh+VIm#doB#t+$F8zuhw77vUgZGp#=@xGCJtk9<<+XJ!=yZavpMjmX_(?o) zy;vfLhaWY8y;Zf8b~el{d?2SHd$$cfkh&2zhnskcg*O<*f&s^jswI?2Bfl(#I|*)n zwpJAjb-Z8AUjCeNLC$XdqkD0axMVw?Mh6N(mbQcr(g8E4=9r5R1Cnk*NY!Fwc2)a^ zYWh~T3-37&Jo~H_S`G}kMiymis`5kEGMadNWM{BvA92Y+#?2J5BD1?iggQ(l=BOXW zj#C?9Sv2ww@p5q_v1&qQ!%o(Lpp?oy_6RGGBF_ggOi96QW34mFu+`O7s!OqHpXXz4 z5>KBmmk;3e5szK*cgX{1ObM&n$*cNQE#DQuK35HoL)$NChMl|5eg6&p>GE;N(|5hm zccNS5}hjn@eb5cGZGT74x6ev3tGo9(X2ENuGsBALurZNgk?|rjK8=c zEDjx;tHHnPfJzn^djnaW#$hl*<7QyvswV}2$Wp)mA$i7P1zpycsPw4+E#fI*=fR5@ z=^PCDflqKC@WU?v&o6*DmT>;Wrh2FQ3EQnuhW>#oN%EqW&AS=O3nTIg&)JT>-18A% z#HYR^fSbnSx;}~_WMv&P;z4PFt!cp2fe2AJ^T(0=@c`3oWy)w=6nDu{MK4NJB0@QB ztTfu)&IV)ENU{Aw+#UMM9|0aRFD>; zt!iNb#FX9n4JOQa2RshrLF0k_F5Xi#mZ`UjS1wsWkPi9|^CTpCN5B)X z?r>jN`q~@*4zah0_KSWL7s#B5pgM;y7`HUtg|pjds^wMtS3e|oXUj#jUTe5Z33t3w zcDeBB3hf~_!K*j@HwccUw5D@5LfJ*8ZuEw1#mM2}oim=`?V+f+Ef0mCK6>6~4hZNc zclbfId!RwA^TEAj-!DM#fHlg#eog4jbh03{m#{6CN@h6SaYO!`OZGX&+RxO2AtO3DK%v zY0>K@LN(fMuI}ebC@2|^r(x49<~xgCU}Tkg!DUTf$~@!-hHN@a@@v#p1?-cMn)K{Q z;w#$L#|I2^>@y@zGxck8n@T>7V)=ff{R_dC>g z`=CfIPkNZhoIuFPC;`VQty5b_qlzCL7Ti{g!58F~o~kElmt^508D%)3Q~j+Qt&3MB z5cVve1gsu<{D2$2m-|>Hp_3KwbB14obg7%7JvI}u2NVWEn(2FQ=K3sdzSk0%^sv*Y zqGT&Od-d8&!{mPMLoYF<43hYYc2sAw*15~Fk=W!9&UgFBW6fs;&l!|D=|sak?(+WNv=ENCn9DV^xGrgY+!2^PIt;fbYn%^UVMTJI%CWWS#alqt@ zA-Tpp#ym;*wi!>~&z(Wx+jc{s?U#WK=J0rf}O zojXcG`qrirOB@vj>COWj*rf;|$GYuE;0<_$7>{udbhkp=q(Y(BNRgo|PA{sn6cHz^ zHKX+5mU=47IZxaL`5z@1ZKcm*Q|AT4iMqqOyH|AA=lPxs?B{Qv#|R#%x-YMJcwGA# zMNw`XU?Vlqdi2!nXK+J=*%j;(&?fmyFs5tZ$^g;Fx7+QGc`eLbFfg?3fRe!!L|{3< zun@vDY4mEQ z&5}obs0y^mr#<_Um~RdL);;^mNTt>O_UK8OEsFa9EG=gyYs#Rm}s`h zQil9PSIbRFdzR*#B~-5)e_w}F5s+ad7qmjg5^?%{rL7Tj<~ba(tD!20=CI=fWPnq9 zM_Ut(YzpBuEqC;gNP1We9~ML2lu2Alw|l-6UA_bq<#^_opM||nA!W0gTAZSZDI!pd z>V}1;E265IlZaTSQ5^M$J`fYnKH#PiYN!~OhypUpszwN42I$S!u04p*1R1=`(X(rE zM6YJCEaugmG@Ou>gi(^jN5fr6rT*XviaY4^o{sY_{#M z@T}B1R`w{~bt)-`C{XL(Veyz8NC%BCS%1eNcgUv%67uQ>1H3a6+k|>%P}(5B zT*Z;5#&FL~cOEtxEbW+fG=+H_LSAhs+DEs%Onm)7_#*}fLL?gY#M(?2 zR|q??sG@}#@=`54x#p&Xu^*1funa{$78fQ)SEs_DHY>G=Q#o0QBglf?r4GW?=$Q35 zF;{aI5t%cKTFXJF1Sa&dDD)atHr)M^-}d`+Xx!%6a2inB!P=Q@#KwE@@^Mz1&q{8&^|DQgxl zWIU@qMU>H>1Y7-hG^&^l`L%$!F_u#hja# zKnT(17%K_487#0E*uSZ&;TVyL%{R&Fl3mguv@_4IL_QJnE~=|977dJsqk{|{Z3H;mb#viMVXrs7 z%BuZT7S2?uLmR<~@fr4l`lA9Oh!d4+&j%K~d~3oEsK)>w?cgD@VN!xVp*crs!mf5P zjORz6sN>qtTRtDq4$pzafG;7$U|Os@5rn29GNlToIpApARJ4ImE0h7}rWPt=ut@HV zL=cL?h}Yj;TEpSCl^dEG?HYbWPfv{G6BR3qybn~7)-=mMfH1Zc(aK2BX18XmeJ0{u zL{)%ywgt*UPRG-3?$h@SY8nM5NI_d2qZia4Y+M@foPv1vpdung1R@n{n0PDdgFC8_ zW3{d(4Nhwo5lh{W^t$+3_zh-~40r>=zv^~Tp?I0YJ|M&M1`v7%aov)ksV?ETnH~a! zMRD9vYDN*vBam!Msz0J!IDNhnTQhZPPmh$)=syfr5c66_9|zRx9$D39CrvVXs;9{$ z-rfoARdtImNMLs|A0umFLoCqnvYmgn7a$0Jh*iE?tGORlWRe?(9f?+=%NSJwxiuL_ z*-)UczKuJ?BS_e98;gE^cg~lM8vB{TkM}N)ibO}!aJc`b4?j<}EW$7^sG^Bq}?J{4jl_(WK}Qn~tkn zVp3eH7ji{w9WSb}W*udwX7}Tw1QE+wR-W!h6v$bW2-!x2Z&yA1%uhSw-$o%?KTkr& z+ovE}p*F1sQz!-`YC=;xzd~lL{y}f>V;XjCek! z6rh`IyCd@<6WuT}#~eulybL@LCVN8EJOR$1?U+u@u10SIx{`ay0-|A5LfzU)c1%{{ zKn6BHNAafwu7jOLy}HseX<0x=c0jC3!VcA&)o!d4^l&`J)4?{5UUrT_QRS+<6Gap9 zrj(Qu(fw|hi-y^EDiY$0%&%zA3?klFV<~xb_lXk#0%$9(dm?p{pswE|LS&h-_#6>j z{S>sAp2a(q3R23Ofk|%mxwXsTkYYelA=R46w?`}L0cfQl5^#25dwdgi!pa9to)Ezk zah)!xNJpe(A$2L0lr~$mYt5v!vN7y^sM+3VKZ>^yXL3ZCvF!7l*u>~23MiY`GUKo( zmvGNB;TRB+9Uro}qEm@*Og~P1n}9x8z>(SfF@&EHpKq`8>PIg7w?e;XJlOKnPf)c7 z>~xY@`0h;sh8pSG{^ppSDDy&< zk)E+9nuLqp7S>E0Dy7^{S;fa$=MyO~H`OiA4bv_G)zXtsch&soi4MJ-O$Q0PHN)?V zehX@`Nr@XN`!hd@Cp+SMm)i3Kb?+h>25g=45uk&tVFOmRuEVFfg0GKMU1%>6hJhQ| zJ0N8I?4E5_kU=l;Nn(upQp?<`2o9xJim=Ei$|C3j%(vh6CTd{5TqllDZcAUJK_4u;B7erDq%7%NHwPft z3MIwnd}DYaib6^q(cy%Rt+yPau{ zn6sj5qhNu2`{akRZr^`P>DVU&7le&Ci;MgxF~ypVd!Y(&yin44@@2Hj0y~B+JmIoW zv0t-@N-!`mI9ks90!P!Qqj*9J&$*2p|7$K@<9pfiV zX;J9k+&7BD2bF7SPeNK!U>U7DM#KM*A}+Hmg2fvFOp8xDOgh342f#hjM4h4O8!dU~ zeERBIYJ%}&x!aTG&Ta9}vkyR{a4~S8 zI?M+<0-bpg zG6cAMtN~wbqGn}Guk>h#_i(|OaA9C%C?&pRo9SrZo}CJ3S*54}G}P&g+pso!@NxB9 zr6cQ(@q>zvPGhQPLX#(RP5U@zQ2Y_B^o8&On~WRa?;^^X z`#_tA7?UPMp_zPxj@%;&;i;!2M5Pr}?Ln5}(yXgutk}IC$m}H5TyPFVTIQVd=Uqk=@=Lycv=VFMBv`t4fO~AuEoZc1t zn2o&C%h3AoqewTjfB6Tlavaz**!M+gQdfOQ)LD~iQxrzCu>ROyMPaC+muolfR}ubk zEm6x93v1y8!Dqz3_9`F`xv1s}_lV;706N+{2B{R7~u z$d|NOvSh5MWg}y?Fk|%yF6;1D5?x4hvLnn1O@IM7Aj@{lv$VMx9G1yl+J`o@-+o9T z8Z(VbD~edsLoR+h(Uvy@bnI~@O@vV?kJz)#7W-All`NY0riI5)GT?LyjMv@&Z0q>KqK%(Sl8qOq-Z1LepgWN^& zVFJ;U1h`?%2h2}vA#RSqN*zD$=CvCmLnM_x`6C`=L9XGv!O@t;#km<%`LFK4t6F{d zxQ0d)zDm?-8=!6*JW!QL*PCn|QYGrpR=Kij&qcqysV;}R&AUnzYfflsr<`f3c=uAgX)6c*pQ_fZHO-Xu2nj1ow zITBULwE0)ZBE&n3JO}okrF*dhOW3zFFybe+%w|9l829|~bhy}q8ZUzIpKoYkhdQj} z2JTa>nv|)dT~=Ui&2&C0{gzf0S_*4Zid+S$#2SWXE?}s+fsvWwM;tcl!&7BRLBY$kW zKfT;3?{SNoHHsUY+qX5tuA|$i^y5WxmdThe(pt3Mq=C2?gIJK3WW}7>1R9$1Y#v=Y zeGO1n~^+AYEuO0QM;5}*Tj>V5vOjQM`Lr+ z*2!gXSIt?+;t;Tolqjh!QMe+2kfhn@^@v^GmAxoB7*!xFF)rkfXJ^}?Ftse`T{f%Q zLCdD#hsBcm)|b~$K(QVGlBfmOgcGZFOMp`?aJwKNf0v zyI(IT9gkwhjB&(Lzla4Y;D7ikl5`jx300Fp7s?n$9pl38S6=pW-|A)T{B7aVpo=6~s^fQz!}S*Cc~NQz zH4Z7<`a;+=Msd@lUnwvo(8cf_rh=LcJFXgJ|1PILqbZdku!J&2kC|MNHed*KSc(f> z=jo=r@XnRsmc$L1kPzl>=i=Taw-tLOU&Ljobs1Ufl-o+`BJcQYJqZ#;^p}|sL|@Ep zNEkFHB5{a#`Pd_a)A585cc`G;*Sq&kf7!g)=H)Uu0JkqHm@!drjEG}ATz9`DP_&Oi$hU)pnV*?U> zKI5uepmb=m}qzJLlngp^D>kvf_z$_nLA_RDb9HD~BGr z&kjO4{1nQ}H8Ieft?-V9MIKK$N)tmyhO$OC1b*{Sg7v%u0{%1HwCVhF3k6k85s`%7 zJ@l?#s0DoVlsB0Yd+&g_px?amfHN)<(P*^CZc5zVld+?k9_vA5Y+75|x!|XF(dHCk zz_zw9mv||Q2U#a_47RM^fc%N4fCcgQiPG4HB2Q9o+`7Kw3v%&IOeDqXef5arW#{ZF zlTg#$=^XaN(sOgDAD!6qL-t(W^~@)S4o;MCAc95NI{Vy6W7RnXA`g){s4!?jhP9q~ z62EFF7{19&`Jshtm8l;~svN!X;PWd9@$TOal8&jam{7e)vb^|6AA#84XE$dMC$c_e z2aCz6-49Z)2wgTKB01yv3byaOh7c4um&gS4V%rNwl<3d4M^Z&U&^zx$2qjT{)B;5% z9Z#AfEy<`734bO4vxT$07kHN-`>mPl9x=v-UzJaE^p`B{-Gw5k1IZ-aZmd(D%>bn8bLULn}g?(FAixFP04Q5t-MA z&*QcY0D>jw<}YN~3N42Ez3N-usj0}y6Y9<1>#k_fVxE9s0w9FPkEDl>!}KNC}c4$<5M zuAw_|yg~iVD_+Jj2SD*=^cBm%&!7zJ>Z}jK47?=E#ek(FH8zSHdr~L%!d(I>PVG~>lUS|!>82s*M6>G$A$o-??(2& zLW)@&%C^M*0pK{t3vl9+-@d%MVeg4Cq4pCMEH3(Ybj3ILL`S)Ho2RXa2-Z>l1F*OA z?0xs)T3oX|0D0S)H@qoIjLMid4PPvA_%ylRBql5>szusS4i0q7VDKu%*Vo7ZhWk3V z*5f^G=3Jf2W@5Z<WwaHa%OSdjbZ`o@2`Ri;g;5N971btHe&-#y(HZY5|6VtG)Kr>)&HFcZRl)QQzEFBauw13F_aWFQKON~$^^_wOb5tRr z8|`BE*Z1ChLXeTAL3bk-qwiW*8GMk3J?qaqS@?8QnppZ)jRp^H4(fALp4F5HRO3qK zU|;#yVh$xxMI-8KH^3KSI*w1+ zi;|@5A0@1Z;N56#eIh_*s(YbTsAE%ng>!kvCOH)VcyPs+L;g8##gN$eZa}MLYi0eH z%(1l?W#7iF?~j)98B*=<*dq-CJqn+bzt3BQ4-GuA_aa8(NaI!kegW3L+z91tdHV+a zW{I)voPs|L@h2jfPLQN~_>d3_^T`-rm9GGPRW9AR91nC>KOE^lCR_DVa2ueA39b_# z#kls97Bd)F47ACmX!l1&=KXn#Fx~z8m^Y&0xaL$0MGl#_I1#Aem|L2QP2BP)CE|kg zIVQhd2>XxDUbIfEM_j_&UwYr8g0n69nuJvF8+h5oA3;%CpihqZCA5Gb*&eMaj^0#m|a-M>^zLpQ6?%fBRIPYkp;7i-N=k9)!V zduD1dZT+n8=u8+<5PG2^8~34y>?KeQPNCfOFPRa%-iM$nWX$PaZjrj3Fc&12wQmbY z!t($-Dnuz*qLr(T#cfJB`A3=+6t~;ku#-`h5jMfOpJ3zu>T2{_5Ld=#TjS zXo$IbJ!v25aOS^kAy;hj_8Dy_oDP_=dRqxz2B=gZ^s=>~Jl&n?`K(nsF}3gen#j#L zFym-Y^9$(1&qb{E&NL8#&F|G$l$_R*<$ffJAjXl<78j%sn}U;DxLYO{WK5OCKSS(8 zR*&g~Nv~JM-~m)srh1aJ`%;Zw7F;PEkTT?Fu==|#3EPh$hK%3=1h4Ygu}()wqpQ75 zB}ywS2IeuATm@NnryNJeB}ZmoNx{ecajCL;@O<9H`QIC);n$WxtHqC+zrB59{j=>9QHN^;!4j^q@JZ`0CWLBWglurugGtuec-OF zbDtGildG%dDNoa$fn&lZMVgxmhz06~;Ah9@Gt|UczqU!n^T{eG%}Gl-!TRS(@+GW< z+n%d^--AZ|g{7OVo`3blFhd4n7-~LNx}sTFtVMZM0I$LF2Y^F^Zi9jHE7D$1xdEY?3I#T`-AeDNX5?Y|Kvx{4U4n$y`q^k z_?2|?2|gi|74&ONg#66PDsQ1EYdysQF(8kUAajY*vZ7z{(y=UwXDK%#0DSAhXNHrC z*$d{n^XHA`YwMT}I4*?hH6KULas-^Plq$62sJ2Z{9cTKAfCWaza8=irOHXXr58i2h zTCoeN6}Vpho-kpv#y)5&Sl;sxt-qaFl0MpncA3ZWr*Zuyu^v`k1Co^y+&KN zbfmNAGJk$6k6ofCmRyj3$gUCTS3AnrZd6ly0@i9 zDCP}Q&BLVlf7>^3!H^|3jM@-MdLar;Xu?PLM%9cP&ms0_-OhK5cT%U`NPZJ~(rW!G zV(ioYseACsCHYRBD&bMe1)g29mCz_#Fxw$EQEq6Cv}E2-`tuzQAQ**mlhI*>dJtPl z+kULnkMM_7;*i7XDf|YIP0cM-GSG}R3yp1=gYyB$pGX6>(Pcc& zh#J>DL;DEiqVE1f_^ZA?@0$92F(S+KY%nR0d=xjEE?zJE86io?*8{ z)i6--_j9Vc3OWMWB5(Xm=qs{rSUcSgMUte`Hk_H>l?sI-6`xqxjT}uViqf(F`cYO? z%#f|G(IG4rW%vgJ(QIE!a&yO^e&5+tb=#u7Z2kCZDV>7r*H(dxQ2H@FEV*BHtq6YM z3@dz{k<5C$uKh+2e-+~URf)C^paTYE<$*{1I#Rm zF9P7|_`kdzhoh*X4bg8iYDt;k*ahz+!gSznW65&}Q8hvcpOSmOP_E5RXQ$4avJ`VL zOal2;K{Gu@wV;|A6K`wnLL$;g3@kU2RK~Fx$uX%X;mC~o#0b)Y^iv!7s(FkJoz4q9 z#v@VqQ3p2isuK99MT@o3nq!FFY)47=g8}lQLK*y=Pt{N5_u^l#Y@boUG?TZo$S1nS zkGLQ#*~r#kzF&=m1VhONQo3OZ*e274@0zE!OTtQbvf(F7*-lG!1|^O;LOVecf|#p$|wqhV$C%w!0n_& z&SvyF3?E~K3@OW$VUd|f7+`<{%{>n)tsN3t*@=fpgFzV+4bnmSZFmc-qUE1?xwG2UuJ48rzE%5 z4bygr7wmDmmT=pSokHPH?9Izy?o_9I2pO>?Gowkq(R1KutgrjnR14Wu&W1@IEzx~SIo8FqUy3x^L zx0%2dwAO;>W!54k;{|^4B0(}CLo*j?(0VV=_d~d^UrW!=$CxOR=#D2k#N&Bg4I3%G z9-2ylDc-+I)Icsd7jFzMY2f5!_BbhyC7F;_T=ff@6%Ewysx3bMVjF_!aJa$VlgvtS zhEX-kpG{?ZAq3n|?9A0XlpF;k(5y##U8!hTj_~(wX(|7Vy)rDGjNDtq0vj;3Ax<7X zB+XzZsBPDAj3)Fqp$s_H$Tzz(BRMDv2{vL8S#;JWP_ZJ?V5H4%^B|EXYPZAb6?@z= zK4LQp>czdFf4Eq^6PcXl8~4 z%g=3eVyQAUfM65_9Tm=+7Q)Qw*@O(oRaSe21ilZKubT3g$5fpAsbnsk@F_dEk^A-! z!@YG3+$d30t{j`8Mh5k54CSF=H>D1`*OJY6%L*uuaIBn@lB1%zH3SX`uEKQ;R9!fsWfE+qbzCU#5O!bSG zP21)H(P$+e8P>u=HWI!1#@^`%oSu{Q%avM=W3WjyCg8otRD31lHwxw3cKdWj|6daY z*~KT0-70MQbdgD0*MjNAZ1P#@b4K!OsGdEu+N~H=$3;S+kO8u}3ql0 z5a9kj^uydP;~zkZoHLNQdxkIlH$cP|g7oglb)Lbp<(aZ}(j)TCQ1aO;I`|=y*=QB# z;!5dwB?>|vPEx|bVp=(93A2>M#B}iVwSp?>$A@TBLfGN)RJEy`-py>cNyCVK*kTgK z*u%|U;@X-Ad!hI?nl709HP0l5Eo@+FfRjL@+oPX5JuWlPcW3XYQ=h%hVA<~`-fPc$ zPLp$gVs@>Vj@cLcLzalxOYDHWqTYxrwF$j$lL^czID(KMQ={uK(E?|z0ggeSMv=R60 zC4m8>HLPzca2tMrt_s?$F&kXIaG)%cq#r5h7E*aC@NZ#AT4n-J(<@E1IYS7%QvhH^ zEQZdskSbWL)S^n+#Ywu@^c9_ugj*?51Hq;2I-nM@OiT?92;mx8oqzxIXK>w>1NF$h z6gnjy>t_k(FECoONz(bJAu9f|F>uk!>o-X)H)OxY@2gokrn_^P?0||^^q0D&>|^xe zMocusU|jfgNA$J9p%034qAxU7y9Z2m-jXVy>KtQ2QNzH9~$A{kUi(p`K zbV3Vvgo-eMN!Kilpc1faKN!>BQasygZUE%nHrpo%^^HI`&556r61%!e0L(bJXg)D0 z3e1s#&Tv+YXa?5h;j6J2>iEpt6l)$B6#bB}e!nT$)nX?K!OyGm*%BjB&+qrag;);0 zV0Zc5fV9iC`gE&JnN;(=p5Q533U$RrkR;UE^&y(YiZBPAHZ^43YQtQ^CJ?@1_UwE~ zX{3R5hEd9DpS&+B(E`J!7U+AF>8Gm13A_Z)xbQB75_N zknpQeXF2J~pMzXi5}iQ*(S9>JY{q?x8+Ek&;XHfmId9N=xeKvehmg9b1c#S#Dq0JE%o< z3b&Xy2aTovlUwwAvf6+{aoWvyb(;vT1TH#6*aMicOQn)SQvi z#LQdI(0AN=sV>>xMec9x2ruVpIJYjW4~?x(-YT2-RK7KLti-D-P>)X2oGS;agtAyW z2zT#d?o!{}(Lu_41yR65z`}6Jgbdq^sQ*DXs&IDWN=6O8eH>G~Ot85s`fnu0|Wn9Grxg zx3(Si`Fp(lueb3g0ltJ&H5Q$ky#cOdmBC{qIVcXFg3o8mVj^dQQVQP@&FyZ81egni zo&pcMl8-Q@5t=0y0}KL8wotdf>3_~_Tzu{{TlVM@uuOAzv%$1CyZ2>uC z{eI3Dwme&Vj;`NTmke+(IQxh_-Q*mMyVaz}t$9z(IrBT~RAHaN9MA-Hun@0aHgDI1 zIaC}EsXOkezHuPC)!^yIG4J!<=`boz!HoRVhe<%LM(7;?R_T3HJS|>efOp{A-#NGD ze>1BsmOl{-e>GM3S$UI38Cdo}9WHM!kL2uB#~-;v#1qJ`t=9I+Hba<~KnICELy|ce zpTNdAR0fD%*)TO@|Cs=Zk*FlEdRY{YXUY-p`d|?KY%8Z{Kl5qisEB5% z2NT0L?j1h_+AsGqS#lDGBZnhS75lhNbon?P)>=bCMN5sseb3wP&voP^pvGJs{PcabH5z`VM@j ztPD7mT6r&e5R#E&JkE;TCmFu+Djzb+JTBL4WUa)NdX1kPW(+TO2P|4>*)laRfECa_#k_eKs)^RG9F{ag z<|#EBOon0{r{w9N4^T&dOebPTGthkFld)2^-(=cAGT(-5{?u=6A`xBJSN3)`cdf-LLiQg(cnx&to9JxqHJrmq(5BMJd~WWt++%Mp zC9&GDB0QDY4&#x(vEA_>a=Am<><32##%ryENA@(VDQ~s z4RnJ6L3dNP7=i(C+AX2^2A=k?IEp=&-;=(KcMss16B2sHnP7?-PpEWRuc3G)+aN9P z>~va4`1limUuWsMob}Z+jZ3fJ6urO1>0?DyNU71Bj#}q?@28xmhD?L2c_JYyk1yC| zjN~I_ITP>CeJSZUa~s<1J8GnFUVI%S`@viV9weUGW`x_$?@gwA`w6q0GHauw;mx9>u!KQ>-I%^LT4N7?pNadl|LPgUDi`qzZq z1?LODFbbZ=eVctyWwHN>S)-BRkFEs9L$=_v90T_po1RAPxZcAON_`KJa|Li+-)>@^ zv2S)30reXX7GGEr+Fj#j$MOH*vd;x_CEf^YMJ5SL_Tg=cl|$r zC)(TL{R>TFq+=SDS3~+|rauZCIw^T}P{K;Dz`^c%co}B1oRnxJQR8(>|3=$MF103e6535 zRcw+4$te5Go2l<$Q&mUQ%dEuN!P?)lO}NkC(PT)~-S>1T>7xyKVc+od zxHq-AkhuCZGNpl(#1Sz=Y<8-qJcwBpz1yl7Gd+UyaCCEYGx8_v52?!^+d12*f6Mg2 zbm?^I+ySiYdRt`yuIYb1naN2%F--SoebJNu-bCn90sS?kl}sdLWWHP1Z~7-$AHkxf3)AXNm{6)knj=jF_d+)|A?|1j!*%mm&`~wJ7 zw?2n_+F{%FO3=Ay=DyW$Yf1O#o8!;B1aE}0f&Kv?3B{#FY+}}?Vi)Y0`zX9Ucm?0E zGt#P;X|q}qB8ItUpelt060mun_uFUJL}kJScD*Cc>X>wbp_}qDJTJx#9=>JP%{Mx5 z4Z{>Lmv(hOB8Cr1#>8+MWCpfVr8A`qrSrD)wouzySou53Gq$i%-u|gwNF43+N}Tl+ zFLCAHJVd(I43ooh6f$W75-1fdEWPi$wRd~(_Hdq1H?wtD{Cb|qH#ZmG`$tX_tGIs8WD4ugh^QU52p?J~{B)E~a?$a+Er+b~lK8V|}fmJlznG-;&ETwsB zA^V`u{{Yt4(;8vF5)qaTN~@2?k?I)IYc>&ZGd3dhalea{RIYG09%->8reqYviLekF z;0n?1j-`(Yqf&Kl50MHk{@+Guq1b2&h=rkqeaxE?Zs^;1f;J@FZzG^T&L-05LCcMs z+i#~lI8q>JlM5e!@Q*Ybou|g95F;#EWs#g`~zXy%7fS22}jGnIjEIj Yn+Gj6Y_FEEPhuwV0{XiY{AcNZ0fcIZzyJUM literal 0 HcmV?d00001 diff --git a/static/images/components/shared/highlighted-tweets/1488475565845843974-link-preview.png b/static/images/components/shared/highlighted-tweets/1488475565845843974-link-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..2b191451eee08ad7f8db6e47fd0653a2eef3290c GIT binary patch literal 28452 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 literal 0 HcmV?d00001 diff --git a/static/images/components/shared/highlighted-tweets/1496140897356034050-link-preview.jpeg b/static/images/components/shared/highlighted-tweets/1496140897356034050-link-preview.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..48fc1985dc9dbbd82ecf15731cc50e95a3d0e80b GIT binary patch literal 32336 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 literal 0 HcmV?d00001 From 1ae0b8b2217cc401adb9a4765bdfac7206b32c3a Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Fri, 17 Jun 2022 17:52:14 +0500 Subject: [PATCH 16/21] fix: fix display_text_range for tweet 1461375333496758281 --- src/constants/highlighted-tweets.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants/highlighted-tweets.js b/src/constants/highlighted-tweets.js index d1ade1b5..59050814 100644 --- a/src/constants/highlighted-tweets.js +++ b/src/constants/highlighted-tweets.js @@ -22,7 +22,7 @@ module.exports = { '/images/components/shared/highlighted-tweets/1488475565845843974-link-preview.png', }, '1461375333496758281': { - display_text_range: [0, 999], + display_text_range: [0, 235], link_preview_url: '/images/components/shared/highlighted-tweets/1461375333496758281-link-preview.jpeg', }, From 2498517c4afc28bfc466f7f1dfd914aa5810bdb1 Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Thu, 30 Jun 2022 11:20:03 +0500 Subject: [PATCH 17/21] feat: add autoplay + video lazy loading --- .../shared/highlighted-tweets/highlighted-tweets.jsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index 5d4ded9d..15eb8be8 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -4,6 +4,7 @@ import { graphql, useStaticQuery } from 'gatsby'; import { StaticImage } from 'gatsby-plugin-image'; import PropTypes from 'prop-types'; import React from 'react'; +import { useInView } from 'react-intersection-observer'; import ImagePlaceholder from 'components/shared/image-placeholder'; import Link from 'components/shared/link'; @@ -56,6 +57,8 @@ function handleTextFormatting(text, { mentions, urls }) { } const HighlightedTweets = ({ className }) => { + const [sectionRef, isSectionInView] = useInView({ triggerOnce: true, rootMargin: '1000px 0px' }); + const { allHighlightedTweet: { nodes: items }, } = useStaticQuery(graphql` @@ -110,6 +113,7 @@ const HighlightedTweets = ({ className }) => { 'safe-paddings bg-gray-2 pt-28 dark:bg-black lg:pt-24 md:pt-20 sm:pt-16', className )} + ref={sectionRef} >

    Highlighted tweets

    @@ -212,13 +216,15 @@ const HighlightedTweets = ({ className }) => { - {mediaType === 'video' && mediaUrl && ( + {mediaType === 'video' && mediaUrl && isSectionInView && ( From 64489254a86bd2578884f2b10e3ba83cc7da9885 Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Thu, 30 Jun 2022 11:32:48 +0500 Subject: [PATCH 18/21] feat: add missing lazy loading attribute --- src/components/shared/highlighted-tweets/highlighted-tweets.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index 15eb8be8..d704cf1a 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -124,6 +124,7 @@ const HighlightedTweets = ({ className }) => { layout="fixed" width={48} height={48} + loading="lazy" src="../../../images/post-authors/alex-barashkov.jpg" alt="Alex Barashkov" /> From 6b8d0daf548890f3be4e1afcf2aca6b5ae7fa7de Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Thu, 30 Jun 2022 11:36:21 +0500 Subject: [PATCH 19/21] fix: add some fixes --- .../highlighted-tweets/highlighted-tweets.jsx | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index d704cf1a..0f4dd377 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -6,7 +6,6 @@ import PropTypes from 'prop-types'; import React from 'react'; import { useInView } from 'react-intersection-observer'; -import ImagePlaceholder from 'components/shared/image-placeholder'; import Link from 'components/shared/link'; import highlightedTweets from 'constants/highlighted-tweets'; import LINKS from 'constants/links'; @@ -57,7 +56,7 @@ function handleTextFormatting(text, { mentions, urls }) { } const HighlightedTweets = ({ className }) => { - const [sectionRef, isSectionInView] = useInView({ triggerOnce: true, rootMargin: '1000px 0px' }); + const [sectionRef, isSectionInView] = useInView({ triggerOnce: true, rootMargin: '500px 0px' }); const { allHighlightedTweet: { nodes: items }, @@ -177,7 +176,7 @@ const HighlightedTweets = ({ className }) => { return (
  • @@ -191,8 +190,17 @@ const HighlightedTweets = ({ className }) => { className="whitespace-pre-line p-5 md:p-4" dangerouslySetInnerHTML={{ __html: textWithFormatting }} /> - {mediaType === 'video' && mediaUrl && ( - + {mediaType === 'video' && mediaUrl && isSectionInView && ( + )} {mediaType === 'photo' && mediaUrl && ( @@ -217,19 +225,6 @@ const HighlightedTweets = ({ className }) => {
  • - {mediaType === 'video' && mediaUrl && isSectionInView && ( - - )} ); } From ab68f5b91b0fd0b84b81644db8ee81ff610b9e1f Mon Sep 17 00:00:00 2001 From: Maksim Gorodov Date: Thu, 30 Jun 2022 11:46:44 +0500 Subject: [PATCH 20/21] fix: add some fixes --- .../shared/highlighted-tweets/highlighted-tweets.jsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx index 0f4dd377..e3f33539 100644 --- a/src/components/shared/highlighted-tweets/highlighted-tweets.jsx +++ b/src/components/shared/highlighted-tweets/highlighted-tweets.jsx @@ -80,8 +80,6 @@ const HighlightedTweets = ({ className }) => { } } media { - height - width type url preview_image_url @@ -202,10 +200,10 @@ const HighlightedTweets = ({ className }) => { )} - {mediaType === 'photo' && mediaUrl && ( - + {mediaType === 'photo' && mediaUrl && isSectionInView && ( + )} - {highlightedTweets[tweet_id].link_preview_url && ( + {highlightedTweets[tweet_id].link_preview_url && isSectionInView && ( Date: Thu, 30 Jun 2022 11:48:21 +0500 Subject: [PATCH 21/21] chore: update .env.example --- .env.example | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.env.example b/.env.example index 518812b7..305b23dc 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,4 @@ GATSBY_DEFAULT_SITE_URL=http://localhost:8000 GATSBY_DEV_SSR=false + +TWITTER_BEARER_TOKEN=