From 5f8d24b45330c5a6aa56de9cbc8d3ec53fe9b316 Mon Sep 17 00:00:00 2001 From: Mister <131907731+M0v0@users.noreply.github.com> Date: Wed, 4 Dec 2024 19:33:46 +0100 Subject: [PATCH 1/2] Create PrimUtilities.js --- static/extensions/Mister/PrimUtilities.js | 316 ++++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 static/extensions/Mister/PrimUtilities.js diff --git a/static/extensions/Mister/PrimUtilities.js b/static/extensions/Mister/PrimUtilities.js new file mode 100644 index 00000000..d8dc8d0e --- /dev/null +++ b/static/extensions/Mister/PrimUtilities.js @@ -0,0 +1,316 @@ +// Name: Prim Utilities +// ID: MJPUPrimeU +// Description: Powerful blocks for working with prime numbers +// By: Mister + +// Version V.0.0.5 +//MIT licensed + +function Prime(num) { + if (typeof num !== 'number' || isNaN(num)) { + return false; + } + if (num <= 1) { + return false; + } + const letzteZiffer = num % 10; + if (num > 10 && ![1, 3, 7, 9].includes(letzteZiffer)) { + return false; + } + if ([2, 3, 5].includes(num)) { + return true; + } + if (num % 2 === 0 || num % 3 === 0 || num % 5 === 0) { + return false; + } + for (let i = 7; i * i <= num; i += 2) { + if (num % i === 0) { + return false; + } + } + return true; +} + + +(function (Scratch) { + "use strict"; + if (!Scratch.extensions.unsandboxed) throw new Error("Prim Utilities must run unsandboxed"); + const menuIconURI = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9IiMzQTdBNEMiLz4KICA8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI0NyIgZmlsbD0iIzRBRDE3MCIvPgogIDxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjQzIiBmaWxsPSIjNjNERDg1Ii8+CiAgPHBhdGggZD0iTTQ3LjI1IDY4LjEyNUM0Ny4yOTE3IDY4LjM3NSA0Ny4yMjkyIDY4LjcwODMgNDcuMDYyNSA2OS4xMjVDNDYuOTM3NSA2OS41IDQ2Ljg3NSA2OS44NzUgNDYuODc1IDcwLjI1QzQ2Ljg3NSA3MC40NTgzIDQ2Ljg5NTggNzAuNjQ1OCA0Ni45Mzc1IDcwLjgxMjVDNDcuMDIwOCA3MC45Mzc1IDQ3LjAyMDggNzEuMDYyNSA0Ni45Mzc1IDcxLjE4NzVDNDYuODU0MiA3MS41MjA4IDQ2LjcyOTIgNzEuNzkxNyA0Ni41NjI1IDcyQzQ2LjM5NTggNzIuMjA4MyA0Ni4yNSA3Mi4zOTU4IDQ2LjEyNSA3Mi41NjI1QzQ1LjkxNjcgNzIuNjA0MiA0NS43NzA4IDcyLjYwNDIgNDUuNjg3NSA3Mi41NjI1QzQ1LjYwNDIgNzIuNTIwOCA0NS41IDcyLjQ3OTIgNDUuMzc1IDcyLjQzNzVDNDUuMTY2NyA3Mi41MjA4IDQ1LjAyMDggNzIuNjQ1OCA0NC45Mzc1IDcyLjgxMjVDNDQuODU0MiA3Mi45Mzc1IDQ0LjcwODMgNzMuMDQxNyA0NC41IDczLjEyNUM0My45MTY3IDczLjA4MzMgNDMuNDc5MiA3My4wMjA4IDQzLjE4NzUgNzIuOTM3NUM0Mi45Mzc1IDcyLjgxMjUgNDIuNjg3NSA3Mi43MDgzIDQyLjQzNzUgNzIuNjI1QzQxLjk3OTIgNzIuNzA4MyA0MS42ODc1IDcyLjcyOTIgNDEuNTYyNSA3Mi42ODc1QzQxLjQzNzUgNzIuNjA0MiA0MS4zMzMzIDcyLjU2MjUgNDEuMjUgNzIuNTYyNUM0MC41ODMzIDcyLjY4NzUgNDAuMDYyNSA3Mi43MjkyIDM5LjY4NzUgNzIuNjg3NUMzOS4zMTI1IDcyLjYwNDIgMzguOTM3NSA3Mi41MjA4IDM4LjU2MjUgNzIuNDM3NUMzOC4zMTI1IDcyLjQ3OTIgMzggNzIuNTgzMyAzNy42MjUgNzIuNzVDMzcuMjkxNyA3Mi44NzUgMzYuODk1OCA3Mi44NzUgMzYuNDM3NSA3Mi43NUMzNi4xODc1IDcyLjU4MzMgMzUuOTc5MiA3Mi41MjA4IDM1LjgxMjUgNzIuNTYyNUMzNS42ODc1IDcyLjU2MjUgMzUuNTgzMyA3Mi41NjI1IDM1LjUgNzIuNTYyNUgzNC43NUMzNC42MjUgNzIuNTIwOCAzNC41IDcyLjQ3OTIgMzQuMzc1IDcyLjQzNzVDMzQuMjkxNyA3Mi4zOTU4IDM0LjE4NzUgNzIuMzU0MiAzNC4wNjI1IDcyLjMxMjVDMzMuOTc5MiA3Mi4yNzA4IDMzLjg1NDIgNzIuMjcwOCAzMy42ODc1IDcyLjMxMjVDMzMuNTYyNSA3Mi4zMTI1IDMzLjQzNzUgNzIuMzEyNSAzMy4zMTI1IDcyLjMxMjVDMzMuMTg3NSA3Mi4yNzA4IDMzLjA2MjUgNzIuMjI5MiAzMi45Mzc1IDcyLjE4NzVDMzIuODEyNSA3Mi4xNDU4IDMyLjcwODMgNzIuMTA0MiAzMi42MjUgNzIuMDYyNUMzMi40NTgzIDcyLjA2MjUgMzIuMjkxNyA3Mi4wODMzIDMyLjEyNSA3Mi4xMjVDMzIgNzIuMTY2NyAzMS44OTU4IDcyLjE4NzUgMzEuODEyNSA3Mi4xODc1QzMxLjYwNDIgNzIuMTg3NSAzMS4zNzUgNzIuMTQ1OCAzMS4xMjUgNzIuMDYyNUMzMC45MTY3IDcxLjk3OTIgMzAuNzA4MyA3MS45Mzc1IDMwLjUgNzEuOTM3NUMzMC4yOTE3IDcxLjkzNzUgMzAuMDQxNyA3MS45NzkyIDI5Ljc1IDcyLjA2MjVDMjkuNDU4MyA3Mi4xMDQyIDI5LjIwODMgNzIuMDIwOCAyOSA3MS44MTI1QzI4LjYyNSA3MS45NzkyIDI4LjEwNDIgNzIuMTA0MiAyNy40Mzc1IDcyLjE4NzVDMjYuNzcwOCA3Mi4yMjkyIDI2LjI3MDggNzIuMTQ1OCAyNS45Mzc1IDcxLjkzNzVDMjUuNjQ1OCA3Mi4wMjA4IDI1LjM3NSA3Mi4xMjUgMjUuMTI1IDcyLjI1QzI0LjkxNjcgNzIuMzc1IDI0LjYyNSA3Mi4zOTU4IDI0LjI1IDcyLjMxMjVDMjQuMTY2NyA3Mi4yMjkyIDIzLjkxNjcgNzIuMjA4MyAyMy41IDcyLjI1QzIzLjA4MzMgNzIuMjUgMjIuODMzMyA3Mi4yOTE3IDIyLjc1IDcyLjM3NUMyMi42NjY3IDcyLjQxNjcgMjIuNTQxNyA3Mi40NTgzIDIyLjM3NSA3Mi41QzIyLjI1IDcyLjUgMjIuMTA0MiA3Mi41MjA4IDIxLjkzNzUgNzIuNTYyNUMyMS42ODc1IDcyLjY0NTggMjEuNDM3NSA3Mi43MjkyIDIxLjE4NzUgNzIuODEyNUMyMC45Mzc1IDcyLjg1NDIgMjAuNjI1IDcyLjkxNjcgMjAuMjUgNzNDMjAuMDgzMyA3My4wNDE3IDE5Ljg1NDIgNzMuMTI1IDE5LjU2MjUgNzMuMjVDMTkuMjcwOCA3My4zMzMzIDE4Ljk1ODMgNzMuMzMzMyAxOC42MjUgNzMuMjVDMTguNTQxNyA3My4xMjUgMTguNDM3NSA3My4wMjA4IDE4LjMxMjUgNzIuOTM3NUMxOC4yMjkyIDcyLjg1NDIgMTguMTg3NSA3Mi43MDgzIDE4LjE4NzUgNzIuNUMxNy45NzkyIDcyLjQxNjcgMTcuODU0MiA3Mi4zMTI1IDE3LjgxMjUgNzIuMTg3NUMxNy44MTI1IDcyLjAyMDggMTcuODMzMyA3MS44NTQyIDE3Ljg3NSA3MS42ODc1QzE3LjkxNjcgNzEuNDc5MiAxOCA3MS4zMTI1IDE4LjEyNSA3MS4xODc1QzE4LjI5MTcgNzEuMDYyNSAxOC40NzkyIDcwLjkxNjcgMTguNjg3NSA3MC43NUMxOC45NzkyIDcwLjUgMTkuMTg3NSA3MC4zNTQyIDE5LjMxMjUgNzAuMzEyNUMxOS40Mzc1IDcwLjIyOTIgMTkuNTQxNyA3MC4xNDU4IDE5LjYyNSA3MC4wNjI1QzE5Ljc1IDY5Ljg5NTggMTkuODU0MiA2OS43MjkyIDE5LjkzNzUgNjkuNTYyNUMyMC4wNjI1IDY5LjM5NTggMjAuMjI5MiA2OS4yMjkyIDIwLjQzNzUgNjkuMDYyNUMyMC42NDU4IDY4Ljg1NDIgMjAuODMzMyA2OC42NjY3IDIxIDY4LjVDMjEuMTY2NyA2OC4zMzMzIDIxLjM1NDIgNjguMTI1IDIxLjU2MjUgNjcuODc1QzIxLjc3MDggNjcuNjI1IDIxLjkxNjcgNjcuNDE2NyAyMiA2Ny4yNUMyMi4wODMzIDY3LjA0MTcgMjIuMTY2NyA2Ni44OTU4IDIyLjI1IDY2LjgxMjVDMjIuMzc1IDY2LjY0NTggMjIuNTIwOCA2Ni41IDIyLjY4NzUgNjYuMzc1QzIyLjg1NDIgNjYuMjUgMjMuMDQxNyA2Ni4xMjUgMjMuMjUgNjZDMjMuNSA2NS42NjY3IDIzLjY4NzUgNjUuNDU4MyAyMy44MTI1IDY1LjM3NUMyMy45NzkyIDY1LjI1IDI0LjEwNDIgNjUuMTI1IDI0LjE4NzUgNjVDMjQuMzk1OCA2NC43NSAyNC41MjA4IDY0LjU2MjUgMjQuNTYyNSA2NC40Mzc1QzI0LjYwNDIgNjQuMzEyNSAyNC42NDU4IDY0LjIyOTIgMjQuNjg3NSA2NC4xODc1QzI0LjkzNzUgNjQuMDYyNSAyNS4xMDQyIDYzLjkzNzUgMjUuMTg3NSA2My44MTI1QzI1LjMxMjUgNjMuNjQ1OCAyNS40Mzc1IDYzLjUgMjUuNTYyNSA2My4zNzVDMjUuOTc5MiA2Mi45NTgzIDI2LjI5MTcgNjIuNjQ1OCAyNi41IDYyLjQzNzVDMjYuNzA4MyA2Mi4xODc1IDI2LjkxNjcgNjEuOTE2NyAyNy4xMjUgNjEuNjI1QzI3LjMzMzMgNjEuMjkxNyAyNy42MjUgNjEuMDQxNyAyOCA2MC44NzVDMjcuOTE2NyA2MC40MTY3IDI3Ljk3OTIgNjAuMTQ1OCAyOC4xODc1IDYwLjA2MjVDMjguNDM3NSA1OS45NzkyIDI4LjYwNDIgNTkuNzcwOCAyOC42ODc1IDU5LjQzNzVDMjguODEyNSA1OS4zOTU4IDI4LjkxNjcgNTkuMzMzMyAyOSA1OS4yNUMyOS4wODMzIDU5LjE2NjcgMjkuMjA4MyA1OS4xMjUgMjkuMzc1IDU5LjEyNUMyOS4zNzUgNTguNzUgMjkuNDU4MyA1OC40NTgzIDI5LjYyNSA1OC4yNUMyOS43OTE3IDU4IDI5Ljk3OTIgNTcuNzkxNyAzMC4xODc1IDU3LjYyNUMzMC4zOTU4IDU3LjQxNjcgMzAuNjA0MiA1Ny4yMjkyIDMwLjgxMjUgNTcuMDYyNUMzMS4wMjA4IDU2Ljg1NDIgMzEuMTY2NyA1Ni41ODMzIDMxLjI1IDU2LjI1QzMxLjU0MTcgNTYuMTI1IDMxLjc1IDU1LjkzNzUgMzEuODc1IDU1LjY4NzVDMzIgNTUuNDM3NSAzMi4yMjkyIDU1LjI3MDggMzIuNTYyNSA1NS4xODc1QzMyLjQzNzUgNTUuMDIwOCAzMi40Mzc1IDU0Ljg5NTggMzIuNTYyNSA1NC44MTI1QzMyLjcyOTIgNTQuNzI5MiAzMi44MzMzIDU0LjY0NTggMzIuODc1IDU0LjU2MjVDMzMuMDgzMyA1NC4zMTI1IDMzLjE4NzUgNTQuMTI1IDMzLjE4NzUgNTRDMzMuMTg3NSA1My44NzUgMzMuMjI5MiA1My43NzA4IDMzLjMxMjUgNTMuNjg3NUMzMy42NDU4IDUzLjQzNzUgMzMuODU0MiA1My4yMjkyIDMzLjkzNzUgNTMuMDYyNUMzNC4wMjA4IDUyLjg5NTggMzQuMTQ1OCA1Mi44NTQyIDM0LjMxMjUgNTIuOTM3NUMzNC40NzkyIDUyLjcyOTIgMzQuNTYyNSA1Mi41NjI1IDM0LjU2MjUgNTIuNDM3NUMzNC42MDQyIDUyLjI3MDggMzQuNjI1IDUyLjEyNSAzNC42MjUgNTJDMzQuODc1IDUxLjgzMzMgMzUuMDYyNSA1MS42MDQyIDM1LjE4NzUgNTEuMzEyNUMzNS4zNTQyIDUwLjk3OTIgMzUuNTQxNyA1MC42NjY3IDM1Ljc1IDUwLjM3NUMzNS44NzUgNTAuMjA4MyAzNS45NzkyIDUwLjA2MjUgMzYuMDYyNSA0OS45Mzc1QzM2LjE0NTggNDkuNzcwOCAzNi4yNzA4IDQ5LjU4MzMgMzYuNDM3NSA0OS4zNzVDMzYuNTIwOCA0OS4yNSAzNi42MDQyIDQ5LjEyNSAzNi42ODc1IDQ5QzM2Ljc3MDggNDguODc1IDM2Ljg1NDIgNDguNzA4MyAzNi45Mzc1IDQ4LjVDMzcuMTQ1OCA0Ny45NTgzIDM3LjMzMzMgNDcuNTQxNyAzNy41IDQ3LjI1QzM3LjY2NjcgNDYuOTE2NyAzNy43NzA4IDQ2LjU4MzMgMzcuODEyNSA0Ni4yNUMzNy44OTU4IDQ2LjA4MzMgMzggNDUuOTU4MyAzOC4xMjUgNDUuODc1QzM4LjI1IDQ1Ljc1IDM4LjM1NDIgNDUuNjI1IDM4LjQzNzUgNDUuNUMzOC40Mzc1IDQ0Ljc5MTcgMzguNjQ1OCA0NC4yNSAzOS4wNjI1IDQzLjg3NUMzOS4xMDQyIDQzLjcwODMgMzkuMDgzMyA0My41ODMzIDM5IDQzLjVDMzguOTE2NyA0My40MTY3IDM4Ljg3NSA0My4yOTE3IDM4Ljg3NSA0My4xMjVDMzkuMDQxNyA0Mi42NjY3IDM5LjEyNSA0Mi4zMzMzIDM5LjEyNSA0Mi4xMjVDMzkuMTY2NyA0MS44NzUgMzkuMTg3NSA0MS42NjY3IDM5LjE4NzUgNDEuNUMzOS4yMjkyIDQxLjI1IDM5LjI3MDggNDEuMDIwOCAzOS4zMTI1IDQwLjgxMjVDMzkuMzk1OCA0MC41NjI1IDM5LjQzNzUgNDAuMzMzMyAzOS40Mzc1IDQwLjEyNUMzOS40Mzc1IDQwIDM5LjQxNjcgMzkuODc1IDM5LjM3NSAzOS43NUMzOS4zMzMzIDM5LjU4MzMgMzkuMjkxNyAzOS4zOTU4IDM5LjI1IDM5LjE4NzVDMzkuMTY2NyAzOC44OTU4IDM5LjEyNSAzOC42NDU4IDM5LjEyNSAzOC40Mzc1QzM5LjEyNSAzOC4yMjkyIDM5LjA2MjUgMzggMzguOTM3NSAzNy43NUMzOC43NzA4IDM3LjQ1ODMgMzguNjQ1OCAzNy4xNjY3IDM4LjU2MjUgMzYuODc1QzM4LjQ3OTIgMzYuNTgzMyAzOC4zOTU4IDM2LjM1NDIgMzguMzEyNSAzNi4xODc1QzM3Ljk3OTIgMzUuODU0MiAzNy43NSAzNS42MjUgMzcuNjI1IDM1LjVDMzcuNSAzNS4zMzMzIDM3LjM3NSAzNS4yMjkyIDM3LjI1IDM1LjE4NzVDMzcuMjA4MyAzNS4wMjA4IDM3LjE0NTggMzQuODk1OCAzNy4wNjI1IDM0LjgxMjVDMzYuOTc5MiAzNC43MjkyIDM2LjkxNjcgMzQuNTgzMyAzNi44NzUgMzQuMzc1QzM2LjM3NSAzNC4yOTE3IDM1LjkzNzUgMzQuMTY2NyAzNS41NjI1IDM0QzM1LjE4NzUgMzMuNzkxNyAzNC44MzMzIDMzLjU2MjUgMzQuNSAzMy4zMTI1QzM0LjI5MTcgMzMuMzk1OCAzNC4xMDQyIDMzLjQxNjcgMzMuOTM3NSAzMy4zNzVDMzMuNzcwOCAzMy4yOTE3IDMzLjU2MjUgMzMuMjI5MiAzMy4zMTI1IDMzLjE4NzVDMzIuOTc5MiAzMy4xNDU4IDMyLjYyNSAzMy4xNDU4IDMyLjI1IDMzLjE4NzVDMzEuOTE2NyAzMy4xODc1IDMxLjU4MzMgMzMuMTg3NSAzMS4yNSAzMy4xODc1QzMwLjcwODMgMzMuMTQ1OCAzMC4yOTE3IDMzLjE4NzUgMzAgMzMuMzEyNUMyOS43NSAzMy4zOTU4IDI5LjUyMDggMzMuNSAyOS4zMTI1IDMzLjYyNUMyOS4xMDQyIDMzLjc1IDI4Ljc5MTcgMzMuODk1OCAyOC4zNzUgMzQuMDYyNUMyOCAzNC4xODc1IDI3LjY4NzUgMzQuMzMzMyAyNy40Mzc1IDM0LjVDMjcuMjI5MiAzNC43MDgzIDI3LjA2MjUgMzQuODMzMyAyNi45Mzc1IDM0Ljg3NUMyNi44NTQyIDM0Ljg3NSAyNi43OTE3IDM0LjkxNjcgMjYuNzUgMzVDMjYuNDE2NyAzNS4yMDgzIDI2LjA4MzMgMzUuNDc5MiAyNS43NSAzNS44MTI1QzI1LjQ1ODMgMzYuMTA0MiAyNS4xNDU4IDM2LjMzMzMgMjQuODEyNSAzNi41QzI0LjY4NzUgMzYuODMzMyAyNC41IDM3LjEwNDIgMjQuMjUgMzcuMzEyNUMyNCAzNy40NzkyIDIzLjgxMjUgMzcuNzI5MiAyMy42ODc1IDM4LjA2MjVDMjMuNTIwOCAzOC41MjA4IDIzLjM3NSAzOC45MTY3IDIzLjI1IDM5LjI1QzIzLjE2NjcgMzkuNTgzMyAyMy4wNjI1IDM5LjkxNjcgMjIuOTM3NSA0MC4yNUMyMi44NTQyIDQwLjgzMzMgMjIuNzkxNyA0MS4zOTU4IDIyLjc1IDQxLjkzNzVDMjIuNzA4MyA0Mi40NzkyIDIyLjc1IDQzIDIyLjg3NSA0My41QzIyLjkxNjcgNDMuNjY2NyAyMi45NzkyIDQzLjc5MTcgMjMuMDYyNSA0My44NzVDMjMuMTQ1OCA0My45NTgzIDIzLjIyOTIgNDQuMDgzMyAyMy4zMTI1IDQ0LjI1QzIzLjM5NTggNDQuMzMzMyAyMy40NTgzIDQ0LjQ1ODMgMjMuNSA0NC42MjVDMjMuNTgzMyA0NC43NSAyMy42NjY3IDQ0Ljg1NDIgMjMuNzUgNDQuOTM3NUMyMy44MzMzIDQ1LjE0NTggMjMuOTE2NyA0NS4zMzMzIDI0IDQ1LjVDMjQuMTI1IDQ1LjYyNSAyNC4yNSA0NS44MTI1IDI0LjM3NSA0Ni4wNjI1QzI0LjUgNDYuMzk1OCAyNC41IDQ2LjY2NjcgMjQuMzc1IDQ2Ljg3NUMyNC4yOTE3IDQ3LjA4MzMgMjQuMTg3NSA0Ny4yNzA4IDI0LjA2MjUgNDcuNDM3NUMyMy43MjkyIDQ3LjUyMDggMjMuMzk1OCA0Ny41NjI1IDIzLjA2MjUgNDcuNTYyNUMyMi43MjkyIDQ3LjU2MjUgMjIuMzMzMyA0Ny41ODMzIDIxLjg3NSA0Ny42MjVDMjEuMzc1IDQ3LjYyNSAyMC45NTgzIDQ3LjY2NjcgMjAuNjI1IDQ3Ljc1QzIwLjMzMzMgNDcuODMzMyAyMC4wNjI1IDQ3Ljg3NSAxOS44MTI1IDQ3Ljg3NUMxOS42MDQyIDQ3LjgzMzMgMTkuNDE2NyA0Ny43NzA4IDE5LjI1IDQ3LjY4NzVDMTkuMDgzMyA0Ny42MDQyIDE4Ljg5NTggNDcuNTQxNyAxOC42ODc1IDQ3LjVDMTguNDM3NSA0Ny40NTgzIDE4LjI3MDggNDcuNTQxNyAxOC4xODc1IDQ3Ljc1QzE4LjE0NTggNDcuOTE2NyAxOCA0OCAxNy43NSA0OEgxNi40Mzc1QzE2LjM1NDIgNDcuODMzMyAxNi4yNzA4IDQ3LjcwODMgMTYuMTg3NSA0Ny42MjVDMTYuMTQ1OCA0Ny41IDE2LjA4MzMgNDcuMzU0MiAxNiA0Ny4xODc1QzE2LjA4MzMgNDYuOTM3NSAxNi4wNDE3IDQ2LjgxMjUgMTUuODc1IDQ2LjgxMjVDMTUuNzA4MyA0Ni43NzA4IDE1LjYyNSA0Ni42NDU4IDE1LjYyNSA0Ni40Mzc1QzE1LjYyNSA0Ni4wMjA4IDE1LjcwODMgNDUuNzI5MiAxNS44NzUgNDUuNTYyNUMxNS44MzMzIDQ1LjE0NTggMTUuNzkxNyA0NC43OTE3IDE1Ljc1IDQ0LjVDMTUuNzUgNDQuMTY2NyAxNS43NzA4IDQzLjg1NDIgMTUuODEyNSA0My41NjI1QzE1LjgxMjUgNDMuMzU0MiAxNS44NzUgNDMuMjI5MiAxNiA0My4xODc1QzE2LjEyNSA0My4xMDQyIDE2LjIyOTIgNDMuMDIwOCAxNi4zMTI1IDQyLjkzNzVDMTYuMzEyNSA0Mi43NzA4IDE2LjI5MTcgNDIuNjQ1OCAxNi4yNSA0Mi41NjI1QzE2LjIwODMgNDIuNDM3NSAxNi4xNjY3IDQyLjMxMjUgMTYuMTI1IDQyLjE4NzVDMTYuMjUgNDEuOTc5MiAxNi4yOTE3IDQxLjgzMzMgMTYuMjUgNDEuNzVDMTYuMjA4MyA0MS42NjY3IDE2LjIwODMgNDEuNTgzMyAxNi4yNSA0MS41QzE2LjI5MTcgNDEuMzc1IDE2LjMxMjUgNDEuMjcwOCAxNi4zMTI1IDQxLjE4NzVDMTYuMzU0MiA0MS4wNjI1IDE2LjM5NTggNDAuOTM3NSAxNi40Mzc1IDQwLjgxMjVDMTYuNTIwOCA0MC42ODc1IDE2LjU4MzMgNDAuNTgzMyAxNi42MjUgNDAuNUMxNi43MDgzIDQwLjM3NSAxNi43NSA0MC4yNSAxNi43NSA0MC4xMjVDMTYuODMzMyAzOS45NTgzIDE2Ljg3NSAzOS43NzA4IDE2Ljg3NSAzOS41NjI1QzE2Ljg3NSAzOS4zNTQyIDE2Ljg3NSAzOS4xNDU4IDE2Ljg3NSAzOC45Mzc1QzE2Ljk1ODMgMzguNjA0MiAxNy4wMjA4IDM4LjI3MDggMTcuMDYyNSAzNy45Mzc1QzE3LjE0NTggMzcuNTYyNSAxNy4zMTI1IDM3LjIyOTIgMTcuNTYyNSAzNi45Mzc1VjM2LjA2MjVDMTcuNzcwOCAzNS44NTQyIDE3LjkzNzUgMzUuNjA0MiAxOC4wNjI1IDM1LjMxMjVDMTguMTg3NSAzNS4wMjA4IDE4LjI1IDM0LjY4NzUgMTguMjUgMzQuMzEyNUMxOC41IDM0LjEwNDIgMTguNjg3NSAzMy44MzMzIDE4LjgxMjUgMzMuNUMxOC45NzkyIDMzLjE2NjcgMTkuMTI1IDMyLjgxMjUgMTkuMjUgMzIuNDM3NUMxOS40NTgzIDMyLjMxMjUgMTkuNjQ1OCAzMi4xNDU4IDE5LjgxMjUgMzEuOTM3NUMxOS44OTU4IDMxLjg1NDIgMTkuOTU4MyAzMS43NzA4IDIwIDMxLjY4NzVDMjAuMDgzMyAzMS41NjI1IDIwLjIyOTIgMzEuNDc5MiAyMC40Mzc1IDMxLjQzNzVDMjAuNTYyNSAzMS4wMjA4IDIwLjY4NzUgMzAuNzI5MiAyMC44MTI1IDMwLjU2MjVDMjAuOTc5MiAzMC4zNTQyIDIxLjE2NjcgMzAuMTg3NSAyMS4zNzUgMzAuMDYyNUMyMS41ODMzIDI5Ljg1NDIgMjEuNzI5MiAyOS43NSAyMS44MTI1IDI5Ljc1QzIxLjg5NTggMjkuNzA4MyAyMS45NzkyIDI5LjY2NjcgMjIuMDYyNSAyOS42MjVDMjIuMTQ1OCAyOS41NDE3IDIyLjIyOTIgMjkuNDU4MyAyMi4zMTI1IDI5LjM3NUMyMi4zOTU4IDI5LjI5MTcgMjIuNDc5MiAyOS4yMDgzIDIyLjU2MjUgMjkuMTI1QzIyLjcyOTIgMjguNzkxNyAyMi45NTgzIDI4LjUyMDggMjMuMjUgMjguMzEyNUMyMy41ODMzIDI4LjA2MjUgMjMuODU0MiAyNy44NzUgMjQuMDYyNSAyNy43NUMyNC4yMjkyIDI3LjY2NjcgMjQuNDM3NSAyNy41NDE3IDI0LjY4NzUgMjcuMzc1QzI0Ljg1NDIgMjcuMjUgMjUgMjcuMTY2NyAyNS4xMjUgMjcuMTI1QzI1LjI1IDI3LjA0MTcgMjUuMzc1IDI2LjkzNzUgMjUuNSAyNi44MTI1QzI1LjgzMzMgMjYuNDM3NSAyNi4xMDQyIDI2LjE4NzUgMjYuMzEyNSAyNi4wNjI1QzI2LjUyMDggMjUuODk1OCAyNi42NjY3IDI1LjcwODMgMjYuNzUgMjUuNUMyNi45NTgzIDI1LjU0MTcgMjcuMTQ1OCAyNS41IDI3LjMxMjUgMjUuMzc1QzI3LjUyMDggMjUuMjUgMjcuNzI5MiAyNS4yNzA4IDI3LjkzNzUgMjUuNDM3NUMyOC4wNjI1IDI1LjM1NDIgMjguMjA4MyAyNS4yOTE3IDI4LjM3NSAyNS4yNUMyOC41NDE3IDI1LjIwODMgMjguNzI5MiAyNS4xNDU4IDI4LjkzNzUgMjUuMDYyNUMyOS4xMDQyIDI1LjAyMDggMjkuNDU4MyAyNSAzMCAyNUMzMC4yOTE3IDI0Ljk1ODMgMzAuNTYyNSAyNC45MTY3IDMwLjgxMjUgMjQuODc1QzMxLjEwNDIgMjQuNzkxNyAzMS4zOTU4IDI0Ljc1IDMxLjY4NzUgMjQuNzVDMzIuMDIwOCAyNC42NjY3IDMyLjMxMjUgMjQuNjY2NyAzMi41NjI1IDI0Ljc1QzMyLjg1NDIgMjQuODMzMyAzMy4xNDU4IDI0LjgzMzMgMzMuNDM3NSAyNC43NUMzMy44NTQyIDI0Ljg3NSAzNC4xNDU4IDI0LjkxNjcgMzQuMzEyNSAyNC44NzVDMzQuNDc5MiAyNC44MzMzIDM0LjY0NTggMjQuODEyNSAzNC44MTI1IDI0LjgxMjVDMzQuOTc5MiAyNC43NzA4IDM1LjE4NzUgMjQuNzkxNyAzNS40Mzc1IDI0Ljg3NUMzNS42ODc1IDI0Ljk1ODMgMzUuOTM3NSAyNS4wNDE3IDM2LjE4NzUgMjUuMTI1QzM2LjY4NzUgMjUuMjA4MyAzNy4wODMzIDI1LjI3MDggMzcuMzc1IDI1LjMxMjVDMzcuNzA4MyAyNS4zNTQyIDM4LjA0MTcgMjUuNDc5MiAzOC4zNzUgMjUuNjg3NUMzOC43NSAyNS44OTU4IDM4Ljk1ODMgMjYuMDQxNyAzOSAyNi4xMjVDMzkuMDgzMyAyNi4yMDgzIDM5LjE2NjcgMjYuMjcwOCAzOS4yNSAyNi4zMTI1QzM5LjMzMzMgMjYuMzk1OCAzOS40NTgzIDI2LjQ3OTIgMzkuNjI1IDI2LjU2MjVDMzkuNzkxNyAyNi42MDQyIDM5LjkxNjcgMjYuNjg3NSA0MCAyNi44MTI1SDQwLjc1QzQwLjg3NSAyNy4wMjA4IDQxLjA0MTcgMjcuMTY2NyA0MS4yNSAyNy4yNUM0MS40NTgzIDI3LjI5MTcgNDEuNjY2NyAyNy4zNzUgNDEuODc1IDI3LjVDNDIuMDgzMyAyNy42NjY3IDQyLjMzMzMgMjcuODMzMyA0Mi42MjUgMjhDNDIuOTU4MyAyOC4xNjY3IDQzLjIyOTIgMjguMzU0MiA0My40Mzc1IDI4LjU2MjVDNDMuNTYyNSAyOC44NTQyIDQzLjcwODMgMjkuMTI1IDQzLjg3NSAyOS4zNzVDNDQuMDQxNyAyOS42MjUgNDQuMTg3NSAyOS44OTU4IDQ0LjMxMjUgMzAuMTg3NUM0NC40Mzc1IDMwLjMxMjUgNDQuNTIwOCAzMC40NTgzIDQ0LjU2MjUgMzAuNjI1QzQ0LjY0NTggMzAuNzUgNDQuNzI5MiAzMC44NzUgNDQuODEyNSAzMUM0NC44OTU4IDMxLjA4MzMgNDUgMzEuMTY2NyA0NS4xMjUgMzEuMjVDNDUuMjUgMzEuMzMzMyA0NS4yNzA4IDMxLjQ3OTIgNDUuMTg3NSAzMS42ODc1QzQ1LjQzNzUgMzEuNzcwOCA0NS42MDQyIDMxLjg5NTggNDUuNjg3NSAzMi4wNjI1QzQ1Ljc3MDggMzIuMTg3NSA0NS44NTQyIDMyLjM3NSA0NS45Mzc1IDMyLjYyNUM0Ni4xNDU4IDMzLjA0MTcgNDYuMjUgMzMuNDM3NSA0Ni4yNSAzMy44MTI1QzQ2LjI1IDM0LjE4NzUgNDYuNDE2NyAzNC40MTY3IDQ2Ljc1IDM0LjVDNDYuNzkxNyAzNC43OTE3IDQ2Ljg1NDIgMzUuMDgzMyA0Ni45Mzc1IDM1LjM3NUM0Ny4wNjI1IDM1LjYyNSA0Ny4xNDU4IDM1Ljg5NTggNDcuMTg3NSAzNi4xODc1QzQ3LjE4NzUgMzYuMzU0MiA0Ny4xNjY3IDM2LjUyMDggNDcuMTI1IDM2LjY4NzVDNDcuMDgzMyAzNi44MTI1IDQ3LjA2MjUgMzYuOTU4MyA0Ny4wNjI1IDM3LjEyNUM0Ny4xMDQyIDM3LjU0MTcgNDcuMDgzMyAzNy44MzMzIDQ3IDM4QzQ2LjkxNjcgMzguMTY2NyA0Ni44NzUgMzguMjkxNyA0Ni44NzUgMzguMzc1QzQ2Ljc5MTcgMzguODMzMyA0Ni43NzA4IDM5LjI5MTcgNDYuODEyNSAzOS43NUM0Ni44OTU4IDQwLjIwODMgNDYuODk1OCA0MC42NjY3IDQ2LjgxMjUgNDEuMTI1QzQ2LjYwNDIgNDEuNzA4MyA0Ni41IDQyLjE2NjcgNDYuNSA0Mi41QzQ2LjUgNDIuNzkxNyA0Ni40NzkyIDQzLjA0MTcgNDYuNDM3NSA0My4yNUM0Ni4yMjkyIDQzLjc5MTcgNDYuMTI1IDQ0LjA0MTcgNDYuMTI1IDQ0QzQ2LjEyNSA0NC40MTY3IDQ2LjA0MTcgNDQuNzkxNyA0NS44NzUgNDUuMTI1QzQ1Ljc5MTcgNDUuMzMzMyA0NS43MDgzIDQ1LjU2MjUgNDUuNjI1IDQ1LjgxMjVDNDUuNTQxNyA0Ni4wNjI1IDQ1LjQ1ODMgNDYuMjkxNyA0NS4zNzUgNDYuNUM0NS4yNSA0Ni44NzUgNDUuMTA0MiA0Ny4xNDU4IDQ0LjkzNzUgNDcuMzEyNUM0NC44MTI1IDQ3LjQzNzUgNDQuNzA4MyA0Ny41NjI1IDQ0LjYyNSA0Ny42ODc1QzQ0LjU0MTcgNDcuODEyNSA0NC40NTgzIDQ3Ljk1ODMgNDQuMzc1IDQ4LjEyNUM0NC4yOTE3IDQ4LjI1IDQ0LjIwODMgNDguMzc1IDQ0LjEyNSA0OC41QzQzLjkxNjcgNDguNzUgNDMuNzkxNyA0OC45MTY3IDQzLjc1IDQ5QzQzLjcwODMgNDkuMDgzMyA0My42NjY3IDQ5LjE2NjcgNDMuNjI1IDQ5LjI1QzQzLjUgNDkuNDU4MyA0My4zOTU4IDQ5LjYyNSA0My4zMTI1IDQ5Ljc1QzQzLjIyOTIgNDkuODc1IDQzLjEyNSA1MC4wNDE3IDQzIDUwLjI1QzQyLjk1ODMgNTAuMzMzMyA0Mi45Mzc1IDUwLjQzNzUgNDIuOTM3NSA1MC41NjI1QzQyLjkzNzUgNTAuNjg3NSA0Mi44OTU4IDUwLjgxMjUgNDIuODEyNSA1MC45Mzc1QzQyLjcyOTIgNTEuMDIwOCA0Mi42NDU4IDUxLjEyNSA0Mi41NjI1IDUxLjI1QzQyLjUyMDggNTEuMzc1IDQyLjQ1ODMgNTEuNDc5MiA0Mi4zNzUgNTEuNTYyNUM0Mi4yMDgzIDUxLjY4NzUgNDIuMTA0MiA1MS44MTI1IDQyLjA2MjUgNTEuOTM3NUM0Mi4wNjI1IDUyLjAyMDggNDIuMDIwOCA1Mi4xMDQyIDQxLjkzNzUgNTIuMTg3NUM0MS44NTQyIDUyLjI3MDggNDEuNzcwOCA1Mi4zNzUgNDEuNjg3NSA1Mi41QzQxLjY0NTggNTIuNTgzMyA0MS41ODMzIDUyLjY4NzUgNDEuNSA1Mi44MTI1QzQxLjI5MTcgNTMuMTQ1OCA0MS4xNDU4IDUzLjMzMzMgNDEuMDYyNSA1My4zNzVDNDAuOTc5MiA1My40MTY3IDQwLjkzNzUgNTMuNDU4MyA0MC45Mzc1IDUzLjVDNDAuNzcwOCA1My44NzUgNDAuNTgzMyA1NC4yNzA4IDQwLjM3NSA1NC42ODc1QzQwLjE2NjcgNTUuMTA0MiAzOS44OTU4IDU1LjQ1ODMgMzkuNTYyNSA1NS43NUMzOS41NjI1IDU2LjA0MTcgMzkuNDc5MiA1Ni4zMTI1IDM5LjMxMjUgNTYuNTYyNUMzOS4xNDU4IDU2Ljc3MDggMzguOTc5MiA1Ni45NzkyIDM4LjgxMjUgNTcuMTg3NUMzOC42NDU4IDU3LjY0NTggMzguNDU4MyA1Ny45NTgzIDM4LjI1IDU4LjEyNUMzOC4wODMzIDU4LjI5MTcgMzcuOTc5MiA1OC41NDE3IDM3LjkzNzUgNTguODc1QzM3Ljc3MDggNTguOTU4MyAzNy42MjUgNTkuMDgzMyAzNy41IDU5LjI1QzM3LjQxNjcgNTkuMzc1IDM3LjMzMzMgNTkuNSAzNy4yNSA1OS42MjVDMzYuOTU4MyA1OS45MTY3IDM2Ljc1IDYwLjE0NTggMzYuNjI1IDYwLjMxMjVDMzYuMzMzMyA2MC42NDU4IDM2LjEwNDIgNjAuODc1IDM1LjkzNzUgNjFDMzUuODEyNSA2MS4xMjUgMzUuNzA4MyA2MS4yNzA4IDM1LjYyNSA2MS40Mzc1QzM1LjQ1ODMgNjEuNjg3NSAzNS4zMTI1IDYxLjg5NTggMzUuMTg3NSA2Mi4wNjI1QzM0Ljg5NTggNjIuNDM3NSAzNC43MDgzIDYyLjcyOTIgMzQuNjI1IDYyLjkzNzVDMzQuNTQxNyA2My4xNDU4IDM0LjQ1ODMgNjMuMzEyNSAzNC4zNzUgNjMuNDM3NUMzNC4xNjY3IDYzLjcyOTIgMzMuOTU4MyA2NCAzMy43NSA2NC4yNUMzMy41NDE3IDY0LjUgMzMuMzc1IDY0Ljc5MTcgMzMuMjUgNjUuMTI1QzMzLjU4MzMgNjUuMTI1IDMzLjkxNjcgNjUuMTQ1OCAzNC4yNSA2NS4xODc1QzM0LjYyNSA2NS4xODc1IDM0Ljk3OTIgNjUuMTQ1OCAzNS4zMTI1IDY1LjA2MjVDMzUuNjA0MiA2NC45Mzc1IDM1LjgxMjUgNjQuODc1IDM1LjkzNzUgNjQuODc1QzM2LjA2MjUgNjQuODMzMyAzNi4xNjY3IDY0Ljc5MTcgMzYuMjUgNjQuNzVDMzYuNTgzMyA2NC42NjY3IDM2Ljg3NSA2NC42MDQyIDM3LjEyNSA2NC41NjI1QzM3LjQxNjcgNjQuNTIwOCAzNy43OTE3IDY0LjQ1ODMgMzguMjUgNjQuMzc1QzM4LjUgNjQuMzMzMyAzOC43NSA2NC4yOTE3IDM5IDY0LjI1QzM5LjI5MTcgNjQuMTY2NyAzOS42MjUgNjQuMTQ1OCA0MCA2NC4xODc1QzQwLjIwODMgNjQuMzEyNSA0MC4zNTQyIDY0LjM3NSA0MC40Mzc1IDY0LjM3NUM0MC41NjI1IDY0LjMzMzMgNDAuNjQ1OCA2NC4zMTI1IDQwLjY4NzUgNjQuMzEyNUM0MC45NzkyIDY0LjM5NTggNDEuMjUgNjQuNDE2NyA0MS41IDY0LjM3NUM0MS43NSA2NC4zMzMzIDQxLjk3OTIgNjQuMjkxNyA0Mi4xODc1IDY0LjI1QzQyLjM5NTggNjQuMjA4MyA0Mi42MDQyIDY0LjIwODMgNDIuODEyNSA2NC4yNUM0My4wNjI1IDY0LjI1IDQzLjI5MTcgNjQuMjI5MiA0My41IDY0LjE4NzVDNDMuNzA4MyA2NC4xNDU4IDQzLjg5NTggNjQuMTA0MiA0NC4wNjI1IDY0LjA2MjVDNDQuMjcwOCA2My45NzkyIDQ0LjU0MTcgNjMuOTE2NyA0NC44NzUgNjMuODc1QzQ1LjEyNSA2My44NzUgNDUuMzU0MiA2My44NzUgNDUuNTYyNSA2My44NzVDNDUuODEyNSA2My44MzMzIDQ2LjA2MjUgNjMuODU0MiA0Ni4zMTI1IDYzLjkzNzVDNDYuNDM3NSA2NC42MDQyIDQ2LjYwNDIgNjUuMTY2NyA0Ni44MTI1IDY1LjYyNUM0Ny4wNjI1IDY2LjA4MzMgNDcuMTA0MiA2Ni41NDE3IDQ2LjkzNzUgNjdDNDcuMDIwOCA2Ny4yMDgzIDQ3LjA4MzMgNjcuMzk1OCA0Ny4xMjUgNjcuNTYyNUM0Ny4yMDgzIDY3LjcyOTIgNDcuMjUgNjcuOTE2NyA0Ny4yNSA2OC4xMjVaTTgzLjc1IDU5LjA2MjVDODMuNzUgNTkuMjcwOCA4My43MjkyIDU5LjQ1ODMgODMuNjg3NSA1OS42MjVDODMuNjQ1OCA1OS43OTE3IDgzLjYwNDIgNTkuOTc5MiA4My41NjI1IDYwLjE4NzVDODMuNDc5MiA2MC42NDU4IDgzLjQzNzUgNjEuMTA0MiA4My40Mzc1IDYxLjU2MjVDODMuNDM3NSA2MS45NzkyIDgzLjM5NTggNjIuMzEyNSA4My4zMTI1IDYyLjU2MjVDODMuMjcwOCA2Mi43MjkyIDgzLjIwODMgNjIuODc1IDgzLjEyNSA2M0M4My4wNDE3IDYzLjEyNSA4Mi45NTgzIDYzLjI5MTcgODIuODc1IDYzLjVDODIuNzUgNjMuODc1IDgyLjY0NTggNjQuMjUgODIuNTYyNSA2NC42MjVDODIuNDc5MiA2NC45NTgzIDgyLjI3MDggNjUuMjI5MiA4MS45Mzc1IDY1LjQzNzVDODEuODEyNSA2NS44NTQyIDgxLjcyOTIgNjYuMTY2NyA4MS42ODc1IDY2LjM3NUM4MS42ODc1IDY2LjU0MTcgODEuNjY2NyA2Ni42NjY3IDgxLjYyNSA2Ni43NUM4MS4zNzUgNjcuMDgzMyA4MS4xODc1IDY3LjM1NDIgODEuMDYyNSA2Ny41NjI1QzgwLjk3OTIgNjcuNzcwOCA4MC44NzUgNjcuOTU4MyA4MC43NSA2OC4xMjVDODAuNjY2NyA2OC4yMDgzIDgwLjU4MzMgNjguMzEyNSA4MC41IDY4LjQzNzVDODAuNDU4MyA2OC41MjA4IDgwLjM5NTggNjguNjA0MiA4MC4zMTI1IDY4LjY4NzVDODAuMTA0MiA2OS4wNjI1IDc5LjkxNjcgNjkuMzc1IDc5Ljc1IDY5LjYyNUM3OS41ODMzIDY5LjgzMzMgNzkuMzk1OCA2OS45MTY3IDc5LjE4NzUgNjkuODc1Qzc5LjEwNDIgNzAuMjkxNyA3OC45MTY3IDcwLjUyMDggNzguNjI1IDcwLjU2MjVDNzguNjY2NyA3MC43NzA4IDc4LjYyNSA3MC45MTY3IDc4LjUgNzFDNzguNDE2NyA3MS4wNDE3IDc4LjM1NDIgNzEuMTQ1OCA3OC4zMTI1IDcxLjMxMjVDNzguMTA0MiA3MS4zNTQyIDc3Ljk1ODMgNzEuNDU4MyA3Ny44NzUgNzEuNjI1Qzc3Ljc5MTcgNzEuNzUgNzcuNjg3NSA3MS44NTQyIDc3LjU2MjUgNzEuOTM3NUM3Ny4zNTQyIDcxLjk3OTIgNzcuMTg3NSA3Mi4wNjI1IDc3LjA2MjUgNzIuMTg3NUM3Ni45NzkyIDcyLjI3MDggNzYuODk1OCA3Mi4zNTQyIDc2LjgxMjUgNzIuNDM3NUM3Ni4xNDU4IDcyLjc3MDggNzUuNzA4MyA3Mi45NzkyIDc1LjUgNzMuMDYyNUM3NS4yNSA3My4xNDU4IDc1LjAyMDggNzMuMjA4MyA3NC44MTI1IDczLjI1Qzc0LjYwNDIgNzMuMjkxNyA3NC40MTY3IDczLjQxNjcgNzQuMjUgNzMuNjI1Qzc0LjA0MTcgNzMuNTgzMyA3My44NzUgNzMuNTgzMyA3My43NSA3My42MjVDNzMuNjI1IDczLjY2NjcgNzMuNTIwOCA3My43MjkyIDczLjQzNzUgNzMuODEyNUM3My4wNjI1IDczLjg5NTggNzIuNzA4MyA3NCA3Mi4zNzUgNzQuMTI1QzcyLjA4MzMgNzQuMjUgNzEuNzcwOCA3NC4zNzUgNzEuNDM3NSA3NC41QzcxLjIyOTIgNzQuNTgzMyA3MS4wMjA4IDc0LjY0NTggNzAuODEyNSA3NC42ODc1QzcwLjYwNDIgNzQuNzcwOCA3MC4zOTU4IDc0LjgzMzMgNzAuMTg3NSA3NC44NzVDNzAuMDIwOCA3NC44NzUgNjkuODU0MiA3NC44NTQyIDY5LjY4NzUgNzQuODEyNUM2OS41NjI1IDc0LjgxMjUgNjkuNDE2NyA3NC44MTI1IDY5LjI1IDc0LjgxMjVDNjguODc1IDc0LjkzNzUgNjguNjA0MiA3NC45NzkyIDY4LjQzNzUgNzQuOTM3NUM2OC4zMTI1IDc0LjkzNzUgNjguMjA4MyA3NC45Mzc1IDY4LjEyNSA3NC45Mzc1QzY3Ljc1IDc0Ljk3OTIgNjcuNDc5MiA3NC45NTgzIDY3LjMxMjUgNzQuODc1QzY3LjE4NzUgNzQuODMzMyA2Ny4wNjI1IDc0LjgxMjUgNjYuOTM3NSA3NC44MTI1QzY2LjQ3OTIgNzQuNjg3NSA2NS45NTgzIDc0LjYwNDIgNjUuMzc1IDc0LjU2MjVDNjQuNzkxNyA3NC41NjI1IDY0LjM5NTggNzQuMzc1IDY0LjE4NzUgNzRDNjMuODU0MiA3NC4xMjUgNjMuNTQxNyA3NC4xMjUgNjMuMjUgNzRDNjMgNzMuODc1IDYyLjcwODMgNzMuNzI5MiA2Mi4zNzUgNzMuNTYyNUM2Mi4wNDE3IDczLjQzNzUgNjEuODEyNSA3My4zMzMzIDYxLjY4NzUgNzMuMjVDNjEuNjA0MiA3My4xNjY3IDYxLjUyMDggNzMuMTA0MiA2MS40Mzc1IDczLjA2MjVDNjEuMjcwOCA3Mi45NzkyIDYxLjEyNSA3Mi44OTU4IDYxIDcyLjgxMjVDNjAuODc1IDcyLjY4NzUgNjAuNzA4MyA3Mi41ODMzIDYwLjUgNzIuNUM2MC4yNSA3Mi4zMzMzIDYwLjAyMDggNzIuMjA4MyA1OS44MTI1IDcyLjEyNUM1OS42NDU4IDcyLjA0MTcgNTkuNDM3NSA3MS45MTY3IDU5LjE4NzUgNzEuNzVDNTguODU0MiA3MS41NDE3IDU4LjYyNSA3MS4zNTQyIDU4LjUgNzEuMTg3NUM1OC40MTY3IDcwLjk3OTIgNTguMzEyNSA3MC44MTI1IDU4LjE4NzUgNzAuNjg3NUM1OC4wNjI1IDcwLjU2MjUgNTcuOTE2NyA3MC40NzkyIDU3Ljc1IDcwLjQzNzVDNTcuNjI1IDcwLjM5NTggNTcuNSA3MC4zMTI1IDU3LjM3NSA3MC4xODc1QzU3LjA0MTcgNjkuNjg3NSA1Ni42NjY3IDY5LjI1IDU2LjI1IDY4Ljg3NUM1NS44NzUgNjguNSA1NS41ODMzIDY4LjAyMDggNTUuMzc1IDY3LjQzNzVDNTUuMDQxNyA2Ny4xMDQyIDU0LjgzMzMgNjYuODk1OCA1NC43NSA2Ni44MTI1QzU0LjcwODMgNjYuNjg3NSA1NC42NDU4IDY2LjU4MzMgNTQuNTYyNSA2Ni41QzU0LjMxMjUgNjYuMjkxNyA1NC4xNjY3IDY2LjEwNDIgNTQuMTI1IDY1LjkzNzVDNTQuMDgzMyA2NS43MjkyIDUzLjk1ODMgNjUuNjA0MiA1My43NSA2NS41NjI1QzUzLjgzMzMgNjUuMzU0MiA1My44MTI1IDY1LjE4NzUgNTMuNjg3NSA2NS4wNjI1QzUzLjU2MjUgNjQuOTM3NSA1My40NzkyIDY0LjgzMzMgNTMuNDM3NSA2NC43NUM1My4zNTQyIDY0LjQxNjcgNTMuMjcwOCA2NC4xNjY3IDUzLjE4NzUgNjRDNTMuMTQ1OCA2My44MzMzIDUzLjA4MzMgNjMuNjg3NSA1MyA2My41NjI1VjYyLjg3NUM1Mi45NTgzIDYyLjY2NjcgNTIuODk1OCA2Mi41MjA4IDUyLjgxMjUgNjIuNDM3NUM1Mi43MjkyIDYyLjM1NDIgNTIuNjY2NyA2Mi4yNSA1Mi42MjUgNjIuMTI1QzUyLjU0MTcgNjEuNzkxNyA1Mi41IDYxLjQzNzUgNTIuNSA2MS4wNjI1QzUyLjUgNjAuNjg3NSA1Mi40NTgzIDYwLjMxMjUgNTIuMzc1IDU5LjkzNzVDNTIuMjkxNyA1OS43MjkyIDUyLjIwODMgNTkuNTQxNyA1Mi4xMjUgNTkuMzc1QzUyLjA0MTcgNTkuMTY2NyA1Mi4wMjA4IDU4Ljk1ODMgNTIuMDYyNSA1OC43NUM1Mi4xMDQyIDU4LjUgNTIuMTg3NSA1OC4yOTE3IDUyLjMxMjUgNTguMTI1QzUyLjQzNzUgNTcuOTU4MyA1Mi42MDQyIDU3Ljc3MDggNTIuODEyNSA1Ny41NjI1QzUzLjAyMDggNTcuNTIwOCA1My4xNDU4IDU3LjU0MTcgNTMuMTg3NSA1Ny42MjVDNTMuMjcwOCA1Ny43MDgzIDUzLjQxNjcgNTcuNzcwOCA1My42MjUgNTcuODEyNUM1My45MTY3IDU3LjY4NzUgNTQuMjkxNyA1Ny42MjUgNTQuNzUgNTcuNjI1QzU0Ljg3NSA1Ny42NjY3IDU1LjAyMDggNTcuNjY2NyA1NS4xODc1IDU3LjYyNUM1NS4zOTU4IDU3LjU4MzMgNTUuNTYyNSA1Ny41NjI1IDU1LjY4NzUgNTcuNTYyNUM1Ni4wMjA4IDU3LjY0NTggNTYuMzMzMyA1Ny42NjY3IDU2LjYyNSA1Ny42MjVDNTYuOTU4MyA1Ny41NDE3IDU3LjIyOTIgNTcuNSA1Ny40Mzc1IDU3LjVDNTcuNjQ1OCA1Ny40NTgzIDU3LjgzMzMgNTcuNDU4MyA1OCA1Ny41QzU4LjIwODMgNTcuNTQxNyA1OC40Mzc1IDU3LjU0MTcgNTguNjg3NSA1Ny41QzU4Ljg1NDIgNTcuNDU4MyA1OS4wMjA4IDU3LjQxNjcgNTkuMTg3NSA1Ny4zNzVDNTkuMzU0MiA1Ny4yOTE3IDU5LjU0MTcgNTcuMjcwOCA1OS43NSA1Ny4zMTI1QzU5Ljk1ODMgNTcuMzU0MiA2MC4xNjY3IDU3LjQ1ODMgNjAuMzc1IDU3LjYyNUM2MC41ODMzIDU3Ljc1IDYwLjcyOTIgNTcuODk1OCA2MC44MTI1IDU4LjA2MjVDNjAuODEyNSA1OC41MjA4IDYwLjc3MDggNTguOTE2NyA2MC42ODc1IDU5LjI1QzYwLjYwNDIgNTkuNTgzMyA2MC42MDQyIDU5Ljk3OTIgNjAuNjg3NSA2MC40Mzc1QzYwLjcyOTIgNjAuNTYyNSA2MC43NSA2MC43MDgzIDYwLjc1IDYwLjg3NUM2MC43NSA2MSA2MC43NSA2MS4xMjUgNjAuNzUgNjEuMjVDNjAuNzkxNyA2MS4zMzMzIDYwLjgzMzMgNjEuNDE2NyA2MC44NzUgNjEuNUM2MC45NTgzIDYxLjU4MzMgNjEuMDIwOCA2MS43MDgzIDYxLjA2MjUgNjEuODc1QzYxLjEwNDIgNjIuMDQxNyA2MS4xMDQyIDYyLjIwODMgNjEuMDYyNSA2Mi4zNzVDNjEuMDYyNSA2Mi41IDYxLjA4MzMgNjIuNjI1IDYxLjEyNSA2Mi43NUM2MS4zMzMzIDYzLjE2NjcgNjEuNDc5MiA2My41NDE3IDYxLjU2MjUgNjMuODc1QzYxLjY4NzUgNjQuMTY2NyA2MS44MzMzIDY0LjQxNjcgNjIgNjQuNjI1QzYyLjEyNSA2NC43OTE3IDYyLjMxMjUgNjUgNjIuNTYyNSA2NS4yNUM2Mi42NDU4IDY1LjMzMzMgNjIuNzI5MiA2NS40Mzc1IDYyLjgxMjUgNjUuNTYyNUM2Mi44OTU4IDY1LjY0NTggNjIuOTc5MiA2NS43MDgzIDYzLjA2MjUgNjUuNzVDNjMuMTg3NSA2NS44MzMzIDYzLjMzMzMgNjUuODc1IDYzLjUgNjUuODc1QzYzLjY2NjcgNjUuODc1IDYzLjg1NDIgNjUuOTE2NyA2NC4wNjI1IDY2QzY0LjUyMDggNjYuMTY2NyA2NC44NzUgNjYuMjkxNyA2NS4xMjUgNjYuMzc1QzY1LjM3NSA2Ni40NTgzIDY1LjY0NTggNjYuNTQxNyA2NS45Mzc1IDY2LjYyNUM2Ni4zMTI1IDY2Ljc1IDY2LjU4MzMgNjYuODMzMyA2Ni43NSA2Ni44NzVDNjYuOTU4MyA2Ni45MTY3IDY3LjMxMjUgNjYuOTE2NyA2Ny44MTI1IDY2Ljg3NUM2Ny45NzkyIDY2LjgzMzMgNjguMTQ1OCA2Ni44MzMzIDY4LjMxMjUgNjYuODc1QzY4LjUyMDggNjYuODc1IDY4LjcyOTIgNjYuODMzMyA2OC45Mzc1IDY2Ljc1QzY5LjE0NTggNjYuNzA4MyA2OS4zNTQyIDY2LjY2NjcgNjkuNTYyNSA2Ni42MjVDNjkuNzcwOCA2Ni41NDE3IDY5Ljk3OTIgNjYuNDU4MyA3MC4xODc1IDY2LjM3NUM3MC40NzkyIDY2LjI5MTcgNzAuNzUgNjYuMjUgNzEgNjYuMjVDNzEuMjUgNjYuMjA4MyA3MS40NzkyIDY2LjE0NTggNzEuNjg3NSA2Ni4wNjI1QzcxLjg1NDIgNjUuOTc5MiA3MiA2NS44OTU4IDcyLjEyNSA2NS44MTI1QzcyLjI5MTcgNjUuNjg3NSA3Mi40NTgzIDY1LjU2MjUgNzIuNjI1IDY1LjQzNzVDNzIuODMzMyA2NS4zMTI1IDczLjA4MzMgNjUuMTY2NyA3My4zNzUgNjVDNzMuNjY2NyA2NC43OTE3IDczLjg3NSA2NC42MDQyIDc0IDY0LjQzNzVDNzQuMjkxNyA2NC4xNDU4IDc0LjUyMDggNjMuODMzMyA3NC42ODc1IDYzLjVDNzQuODU0MiA2My4xNjY3IDc1LjA0MTcgNjIuODc1IDc1LjI1IDYyLjYyNUM3NS4yOTE3IDYyLjM3NSA3NS4zNTQyIDYyLjA0MTcgNzUuNDM3NSA2MS42MjVDNzUuNTIwOCA2MS4yMDgzIDc1LjYyNSA2MC45MTY3IDc1Ljc1IDYwLjc1Qzc1LjU0MTcgNjAuNTQxNyA3NS40NTgzIDYwLjMzMzMgNzUuNSA2MC4xMjVDNzUuNTgzMyA1OS45MTY3IDc1LjYyNSA1OS42MDQyIDc1LjYyNSA1OS4xODc1Qzc1LjU4MzMgNTguNDc5MiA3NS41ODMzIDU3LjkxNjcgNzUuNjI1IDU3LjVDNzUuNzA4MyA1Ny4wNDE3IDc1LjY2NjcgNTYuNjQ1OCA3NS41IDU2LjMxMjVDNzUuMzc1IDU2LjEwNDIgNzUuMjI5MiA1NS44OTU4IDc1LjA2MjUgNTUuNjg3NUM3NC45Mzc1IDU1LjQ3OTIgNzQuODU0MiA1NS4yMjkyIDc0LjgxMjUgNTQuOTM3NUM3NC42MDQyIDU0LjcyOTIgNzQuNDM3NSA1NC40NTgzIDc0LjMxMjUgNTQuMTI1Qzc0LjIyOTIgNTMuNzkxNyA3NC4xMDQyIDUzLjQ3OTIgNzMuOTM3NSA1My4xODc1QzczLjY4NzUgNTMuMTg3NSA3My40NTgzIDUzLjEyNSA3My4yNSA1M0M3My4wODMzIDUyLjgzMzMgNzIuNzkxNyA1Mi43NSA3Mi4zNzUgNTIuNzVDNzIuMjUgNTIuNjI1IDcyLjE0NTggNTIuNSA3Mi4wNjI1IDUyLjM3NUM3MS45NzkyIDUyLjIwODMgNzEuODU0MiA1Mi4wODMzIDcxLjY4NzUgNTJDNzEuNDc5MiA1MS45MTY3IDcxLjI3MDggNTEuODU0MiA3MS4wNjI1IDUxLjgxMjVDNzAuODk1OCA1MS43MjkyIDcwLjcwODMgNTEuNjQ1OCA3MC41IDUxLjU2MjVDNzAuMjkxNyA1MS40NzkyIDcwLjA4MzMgNTEuMzk1OCA2OS44NzUgNTEuMzEyNUM2OS42NjY3IDUxLjE4NzUgNjkuNDU4MyA1MS4xMDQyIDY5LjI1IDUxLjA2MjVDNjguOTE2NyA1MS4wMjA4IDY4LjU4MzMgNTEuMDIwOCA2OC4yNSA1MS4wNjI1QzY3LjkxNjcgNTEuMTA0MiA2Ny41ODMzIDUxLjE2NjcgNjcuMjUgNTEuMjVDNjYuOTU4MyA1MS4zMzMzIDY2LjY2NjcgNTEuNDE2NyA2Ni4zNzUgNTEuNUM2Ni4xMjUgNTEuNTgzMyA2NS44NTQyIDUxLjY0NTggNjUuNTYyNSA1MS42ODc1QzY1LjMxMjUgNTEuNzcwOCA2NS4xMDQyIDUxLjg3NSA2NC45Mzc1IDUyQzY0LjgxMjUgNTIuMTI1IDY0LjYyNSA1Mi4xNjY3IDY0LjM3NSA1Mi4xMjVDNjQuMDgzMyA1Mi4xMjUgNjMuODc1IDUyLjA0MTcgNjMuNzUgNTEuODc1QzYzLjYyNSA1MS42NjY3IDYzLjQ1ODMgNTEuNDU4MyA2My4yNSA1MS4yNUM2My4zMzMzIDUwLjYyNSA2My4zOTU4IDQ5Ljk1ODMgNjMuNDM3NSA0OS4yNUM2My41MjA4IDQ4LjU0MTcgNjMuNjA0MiA0Ny44NzUgNjMuNjg3NSA0Ny4yNUM2My42ODc1IDQ3LjEyNSA2My42MjUgNDcuMDIwOCA2My41IDQ2LjkzNzVDNjMuMzc1IDQ2LjgxMjUgNjMuMjkxNyA0Ni42ODc1IDYzLjI1IDQ2LjU2MjVDNjMuMTY2NyA0Ni4xODc1IDYzLjA4MzMgNDUuOTE2NyA2MyA0NS43NUM2Mi45MTY3IDQ1LjU4MzMgNjIuODc1IDQ1LjM5NTggNjIuODc1IDQ1LjE4NzVDNjIuOTE2NyA0NC44OTU4IDYzIDQ0LjY2NjcgNjMuMTI1IDQ0LjVDNjMuMjUgNDQuMjkxNyA2My40MTY3IDQ0LjA4MzMgNjMuNjI1IDQzLjg3NUM2NC4yOTE3IDQzLjg3NSA2NC44NzUgNDQuMDIwOCA2NS4zNzUgNDQuMzEyNUM2Ni4xMjUgNDQuMjI5MiA2NyA0NC4xNDU4IDY4IDQ0LjA2MjVDNjkgNDMuOTc5MiA2OS45MTY3IDQzLjg3NSA3MC43NSA0My43NUM3MC45MTY3IDQzLjcwODMgNzEuMDYyNSA0My42NjY3IDcxLjE4NzUgNDMuNjI1QzcxLjM1NDIgNDMuNTgzMyA3MS41MjA4IDQzLjU4MzMgNzEuNjg3NSA0My42MjVDNzIuMDIwOCA0My4zMzMzIDcyLjM5NTggNDMuMTI1IDcyLjgxMjUgNDNDNzMuMjI5MiA0Mi44NzUgNzMuNTIwOCA0Mi42MjUgNzMuNjg3NSA0Mi4yNUM3My45Mzc1IDQyLjE2NjcgNzQuMTA0MiA0Mi4wMjA4IDc0LjE4NzUgNDEuODEyNUM3NC4yNzA4IDQxLjYwNDIgNzQuNDE2NyA0MS40Mzc1IDc0LjYyNSA0MS4zMTI1Qzc0LjcwODMgNDAuOTM3NSA3NC43MjkyIDQwLjU4MzMgNzQuNjg3NSA0MC4yNUM3NC42ODc1IDM5LjkxNjcgNzQuNzA4MyAzOS41ODMzIDc0Ljc1IDM5LjI1Qzc0LjgzMzMgMzguOTU4MyA3NC44OTU4IDM4LjcyOTIgNzQuOTM3NSAzOC41NjI1Qzc0Ljk3OTIgMzguMzk1OCA3NC45NTgzIDM4LjE0NTggNzQuODc1IDM3LjgxMjVDNzQuODc1IDM3LjY0NTggNzQuODU0MiAzNy40NzkyIDc0LjgxMjUgMzcuMzEyNUM3NC43NzA4IDM3LjEwNDIgNzQuNzA4MyAzNi44OTU4IDc0LjYyNSAzNi42ODc1Qzc0LjQxNjcgMzYuMTQ1OCA3NC4xNjY3IDM1LjY0NTggNzMuODc1IDM1LjE4NzVDNzMuNzA4MyAzNS4wMjA4IDczLjU0MTcgMzQuODc1IDczLjM3NSAzNC43NUM3My4yMDgzIDM0LjU4MzMgNzMuMDQxNyAzNC40MTY3IDcyLjg3NSAzNC4yNUM3Mi42NjY3IDM0LjA4MzMgNzIuNDc5MiAzMy45Mzc1IDcyLjMxMjUgMzMuODEyNUM3Mi4xNDU4IDMzLjY0NTggNzEuOTc5MiAzMy40NzkyIDcxLjgxMjUgMzMuMzEyNUM3MS42ODc1IDMzLjM5NTggNzEuNTYyNSAzMy40MTY3IDcxLjQzNzUgMzMuMzc1QzcxLjM1NDIgMzMuMjkxNyA3MS4yNSAzMy4yMjkyIDcxLjEyNSAzMy4xODc1QzcwLjU4MzMgMzMuMjI5MiA3MC4xODc1IDMzLjIwODMgNjkuOTM3NSAzMy4xMjVDNjkuNzI5MiAzMy4wNDE3IDY5LjUyMDggMzIuOTc5MiA2OS4zMTI1IDMyLjkzNzVDNjkuMTA0MiAzMi45Mzc1IDY4Ljg3NSAzMi45NTgzIDY4LjYyNSAzM0M2OC40MTY3IDMzIDY4LjIwODMgMzMuMDIwOCA2OCAzMy4wNjI1QzY3LjU4MzMgMzMuMTA0MiA2Ny4xMjUgMzMuMjI5MiA2Ni42MjUgMzMuNDM3NUM2Ni41NDE3IDMzLjQ3OTIgNjYuNDE2NyAzMy41IDY2LjI1IDMzLjVDNjYuMTI1IDMzLjQ1ODMgNjYuMDIwOCAzMy40NTgzIDY1LjkzNzUgMzMuNUM2NS4yMjkyIDMzLjgzMzMgNjQuNjg3NSAzNC4xMjUgNjQuMzEyNSAzNC4zNzVDNjMuOTc5MiAzNC42MjUgNjMuNjQ1OCAzNC44MTI1IDYzLjMxMjUgMzQuOTM3NUM2My4zOTU4IDM1LjM5NTggNjMuMjcwOCAzNS43OTE3IDYyLjkzNzUgMzYuMTI1QzYyLjY0NTggMzYuNDU4MyA2Mi40NTgzIDM2Ljg5NTggNjIuMzc1IDM3LjQzNzVDNjIuMzMzMyAzNy42MDQyIDYyLjMxMjUgMzcuNzkxNyA2Mi4zMTI1IDM4QzYyLjM1NDIgMzguMTY2NyA2Mi4zNTQyIDM4LjM1NDIgNjIuMzEyNSAzOC41NjI1QzYyLjMxMjUgMzguNzcwOCA2Mi4yOTE3IDM4Ljk1ODMgNjIuMjUgMzkuMTI1QzYyLjIwODMgMzkuMjkxNyA2Mi4xODc1IDM5LjQzNzUgNjIuMTg3NSAzOS41NjI1QzYyLjIyOTIgMzkuODU0MiA2Mi4yNzA4IDQwLjA4MzMgNjIuMzEyNSA0MC4yNUM2Mi4zOTU4IDQwLjQxNjcgNjIuMzk1OCA0MC42NDU4IDYyLjMxMjUgNDAuOTM3NUM2Mi4yMjkyIDQxLjA2MjUgNjIuMTI1IDQxLjIyOTIgNjIgNDEuNDM3NUM2MS44NzUgNDEuNjA0MiA2MS43NSA0MS43MDgzIDYxLjYyNSA0MS43NUM2MS4yOTE3IDQxLjgzMzMgNjEuMDQxNyA0MS44MTI1IDYwLjg3NSA0MS42ODc1QzYwLjcwODMgNDEuNTIwOCA2MC40NzkyIDQxLjM5NTggNjAuMTg3NSA0MS4zMTI1QzYwLjAyMDggNDEuMzEyNSA1OS44NTQyIDQxLjMzMzMgNTkuNjg3NSA0MS4zNzVDNTkuNTIwOCA0MS40MTY3IDU5LjMzMzMgNDEuNDE2NyA1OS4xMjUgNDEuMzc1QzU4Ljc5MTcgNDEuMzc1IDU4LjQ3OTIgNDEuMzMzMyA1OC4xODc1IDQxLjI1QzU3Ljg5NTggNDEuMTY2NyA1Ny42MDQyIDQxLjEwNDIgNTcuMzEyNSA0MS4wNjI1QzU3LjE4NzUgNDEuMDYyNSA1Ny4wNDE3IDQxLjA4MzMgNTYuODc1IDQxLjEyNUM1Ni43MDgzIDQxLjEyNSA1Ni41NjI1IDQxLjEyNSA1Ni40Mzc1IDQxLjEyNUM1Ni4wNjI1IDQxLjEyNSA1NS43MDgzIDQxLjEwNDIgNTUuMzc1IDQxLjA2MjVDNTUuMDgzMyA0MC45NzkyIDU0Ljc3MDggNDAuODk1OCA1NC40Mzc1IDQwLjgxMjVDNTQuMTQ1OCA0MC4zOTU4IDUzLjg3NSA0MC4xODc1IDUzLjYyNSA0MC4xODc1QzUzLjQxNjcgNDAuMTg3NSA1My4yOTE3IDQwLjEyNSA1My4yNSA0MEM1My4wNDE3IDM5LjU0MTcgNTMgMzguOTM3NSA1My4xMjUgMzguMTg3NUM1My4xNjY3IDM4LjAyMDggNTMuMjA4MyAzNy44OTU4IDUzLjI1IDM3LjgxMjVDNTMuMjkxNyAzNy42ODc1IDUzLjMxMjUgMzcuNTYyNSA1My4zMTI1IDM3LjQzNzVDNTMuMzU0MiAzNy4yNzA4IDUzLjM1NDIgMzcuMTI1IDUzLjMxMjUgMzdDNTMuMzEyNSAzNi44MzMzIDUzLjMzMzMgMzYuNjY2NyA1My4zNzUgMzYuNUM1My41IDM2LjEyNSA1My41NDE3IDM1Ljg1NDIgNTMuNSAzNS42ODc1QzUzLjUgMzUuNTIwOCA1My41MjA4IDM1LjM3NSA1My41NjI1IDM1LjI1QzUzLjcyOTIgMzUgNTMuODEyNSAzNC43NzA4IDUzLjgxMjUgMzQuNTYyNUM1My44NTQyIDM0LjM1NDIgNTMuOTc5MiAzNC4yMDgzIDU0LjE4NzUgMzQuMTI1QzU0LjI3MDggMzMuOTE2NyA1NC4yNzA4IDMzLjcyOTIgNTQuMTg3NSAzMy41NjI1QzU0LjEwNDIgMzMuMzU0MiA1NC4xNDU4IDMzLjE0NTggNTQuMzEyNSAzMi45Mzc1QzU0LjUyMDggMzIuNTIwOCA1NC42NDU4IDMyLjI3MDggNTQuNjg3NSAzMi4xODc1QzU0LjcyOTIgMzIuMDYyNSA1NC43NzA4IDMxLjk1ODMgNTQuODEyNSAzMS44NzVDNTQuOTM3NSAzMS42NjY3IDU1IDMxLjUgNTUgMzEuMzc1QzU1LjA0MTcgMzEuMjUgNTUuMTY2NyAzMS4wODMzIDU1LjM3NSAzMC44NzVDNTUuNDU4MyAzMC43NSA1NS41MjA4IDMwLjY2NjcgNTUuNTYyNSAzMC42MjVDNTUuNjQ1OCAzMC41NDE3IDU1LjcwODMgMzAuNDU4MyA1NS43NSAzMC4zNzVDNTUuNzkxNyAzMC4yOTE3IDU1LjgzMzMgMzAuMjI5MiA1NS44NzUgMzAuMTg3NUM1Ni4wODMzIDI5Ljk3OTIgNTYuMjI5MiAyOS44NzUgNTYuMzEyNSAyOS44NzVDNTYuMzk1OCAyOS44MzMzIDU2LjQ1ODMgMjkuNzkxNyA1Ni41IDI5Ljc1QzU2Ljg3NSAyOS40MTY3IDU3LjE4NzUgMjkuMTQ1OCA1Ny40Mzc1IDI4LjkzNzVDNTcuNjg3NSAyOC42ODc1IDU3LjkzNzUgMjguNDU4MyA1OC4xODc1IDI4LjI1QzU4LjM1NDIgMjguMTI1IDU4LjUgMjguMDIwOCA1OC42MjUgMjcuOTM3NUM1OC43OTE3IDI3LjgxMjUgNTguOTc5MiAyNy42ODc1IDU5LjE4NzUgMjcuNTYyNUM1OS43NzA4IDI3LjIyOTIgNjAuMTI1IDI2Ljk3OTIgNjAuMjUgMjYuODEyNUM2MC40MTY3IDI2LjYwNDIgNjAuNjA0MiAyNi40Mzc1IDYwLjgxMjUgMjYuMzEyNUM2MS4wMjA4IDI2LjIyOTIgNjEuMjcwOCAyNi4xNDU4IDYxLjU2MjUgMjYuMDYyNUM2MS44OTU4IDI1LjkzNzUgNjIuMjA4MyAyNS44MzMzIDYyLjUgMjUuNzVDNjMuMDQxNyAyNS42NjY3IDYzLjQ3OTIgMjUuNTgzMyA2My44MTI1IDI1LjVDNjQuMTg3NSAyNS40MTY3IDY0LjU0MTcgMjUuMzMzMyA2NC44NzUgMjUuMjVDNjUuMjA4MyAyNS4zNzUgNjUuNTQxNyAyNS40NTgzIDY1Ljg3NSAyNS41QzY2LjI1IDI1LjUgNjYuNjA0MiAyNS41MjA4IDY2LjkzNzUgMjUuNTYyNUM2Ny4yNzA4IDI1LjYwNDIgNjcuNzUgMjUuNjQ1OCA2OC4zNzUgMjUuNjg3NUM2OSAyNS42ODc1IDY5LjYwNDIgMjUuNjY2NyA3MC4xODc1IDI1LjYyNUM3MC40Mzc1IDI1LjYyNSA3MC43MDgzIDI1LjYyNSA3MSAyNS42MjVDNzEuMzMzMyAyNS42MjUgNzEuNjY2NyAyNS42NjY3IDcyIDI1Ljc1QzcyLjMzMzMgMjYgNzIuNjA0MiAyNi4xNjY3IDcyLjgxMjUgMjYuMjVDNzMuMDIwOCAyNi4zMzMzIDczLjIyOTIgMjYuNDE2NyA3My40Mzc1IDI2LjVDNzMuNjA0MiAyNi42MjUgNzMuODc1IDI2LjgxMjUgNzQuMjUgMjcuMDYyNUM3NC41ODMzIDI3LjI3MDggNzQuODEyNSAyNy40Mzc1IDc0LjkzNzUgMjcuNTYyNUM3NS4xMDQyIDI3LjY0NTggNzUuMjkxNyAyNy43MjkyIDc1LjUgMjcuODEyNUM3NS44MzMzIDI4LjAyMDggNzYuMDYyNSAyOC4yMDgzIDc2LjE4NzUgMjguMzc1Qzc2LjMxMjUgMjguNTQxNyA3Ni40Mzc1IDI4LjY2NjcgNzYuNTYyNSAyOC43NUM3Ny4wMjA4IDI5LjA4MzMgNzcuMzU0MiAyOS4zOTU4IDc3LjU2MjUgMjkuNjg3NUM3Ny44MTI1IDI5Ljk3OTIgNzguMTA0MiAzMC4xNjY3IDc4LjQzNzUgMzAuMjVDNzguNTIwOCAzMC40NTgzIDc4LjYyNSAzMC42NDU4IDc4Ljc1IDMwLjgxMjVDNzguOTE2NyAzMC45Mzc1IDc5LjA0MTcgMzEuMTA0MiA3OS4xMjUgMzEuMzEyNUM3OS4yOTE3IDMxLjM5NTggNzkuMzk1OCAzMS41NjI1IDc5LjQzNzUgMzEuODEyNUM3OS40NzkyIDMyLjAyMDggNzkuNjA0MiAzMi4xNjY3IDc5LjgxMjUgMzIuMjVDNzkuODk1OCAzMi42NjY3IDc5Ljk1ODMgMzMuMDgzMyA4MCAzMy41QzgwLjA4MzMgMzMuODc1IDgwLjE4NzUgMzQuMjcwOCA4MC4zMTI1IDM0LjY4NzVDODAuMzk1OCAzNC44MTI1IDgwLjQ1ODMgMzQuOTU4MyA4MC41IDM1LjEyNUM4MC41ODMzIDM1LjI1IDgwLjY2NjcgMzUuNDE2NyA4MC43NSAzNS42MjVDODAuODMzMyAzNS43MDgzIDgwLjg3NSAzNS44MTI1IDgwLjg3NSAzNS45Mzc1QzgwLjg3NSAzNi4wMjA4IDgwLjg5NTggMzYuMTY2NyA4MC45Mzc1IDM2LjM3NUM4MS4wNjI1IDM2Ljc5MTcgODEuMTA0MiAzNy4xMDQyIDgxLjA2MjUgMzcuMzEyNUM4MS4wMjA4IDM3LjUyMDggODEuMDIwOCAzNy43MjkyIDgxLjA2MjUgMzcuOTM3NUM4MS4wNjI1IDM4LjE0NTggODEuMDgzMyAzOC4zNTQyIDgxLjEyNSAzOC41NjI1QzgxLjE2NjcgMzguNzI5MiA4MS4xODc1IDM4LjkxNjcgODEuMTg3NSAzOS4xMjVDODEuMzEyNSAzOS42MjUgODEuMzMzMyA0MC4zMzMzIDgxLjI1IDQxLjI1QzgxLjI1IDQxLjc5MTcgODEuMjUgNDIuMTg3NSA4MS4yNSA0Mi40Mzc1QzgxLjI1IDQyLjY0NTggODEuMTQ1OCA0Mi44MzMzIDgwLjkzNzUgNDNDODAuOTM3NSA0My40NTgzIDgwLjkzNzUgNDMuNzcwOCA4MC45Mzc1IDQzLjkzNzVDODAuOTc5MiA0NC4wNjI1IDgxIDQ0LjE2NjcgODEgNDQuMjVDODEgNDQuMzMzMyA4MC45Mzc1IDQ0LjQzNzUgODAuODEyNSA0NC41NjI1QzgwLjcyOTIgNDQuNjg3NSA4MC42NjY3IDQ0LjgxMjUgODAuNjI1IDQ0LjkzNzVDODAuNTgzMyA0NS4wNjI1IDgwLjU2MjUgNDUuMjA4MyA4MC41NjI1IDQ1LjM3NUM4MC41NjI1IDQ1LjUgODAuNTQxNyA0NS42MjUgODAuNSA0NS43NUM4MC40NTgzIDQ1LjkxNjcgODAuMzk1OCA0Ni4wNjI1IDgwLjMxMjUgNDYuMTg3NUM4MC4yNzA4IDQ2LjI3MDggODAuMjI5MiA0Ni4zNzUgODAuMTg3NSA0Ni41QzgwLjAyMDggNDcgNzkuODEyNSA0Ny4zOTU4IDc5LjU2MjUgNDcuNjg3NUM3OS40NzkyIDQ3LjgxMjUgNzkuMzU0MiA0Ny45NTgzIDc5LjE4NzUgNDguMTI1Qzc5LjAyMDggNDguMjUgNzguODc1IDQ4LjM3NSA3OC43NSA0OC41Qzc4Ljg3NSA0OC44NzUgNzkuMDgzMyA0OS4xNjY3IDc5LjM3NSA0OS4zNzVDNzkuNjY2NyA0OS41NDE3IDc5Ljg3NSA0OS43OTE3IDgwIDUwLjEyNUM4MC4wODMzIDUwLjI1IDgwLjIwODMgNTAuMzU0MiA4MC4zNzUgNTAuNDM3NUM4MC41NDE3IDUwLjUyMDggODAuNzA4MyA1MC42MjUgODAuODc1IDUwLjc1QzgwLjg3NSA1MC45NTgzIDgwLjkzNzUgNTEuMTA0MiA4MS4wNjI1IDUxLjE4NzVDODEuMjI5MiA1MS4yNzA4IDgxLjM5NTggNTEuMzc1IDgxLjU2MjUgNTEuNUM4MS42MDQyIDUxLjc5MTcgODEuNzA4MyA1MiA4MS44NzUgNTIuMTI1QzgyLjA0MTcgNTIuMjUgODIuMTg3NSA1Mi40MTY3IDgyLjMxMjUgNTIuNjI1QzgyLjM5NTggNTIuOTU4MyA4Mi40Mzc1IDUzLjIyOTIgODIuNDM3NSA1My40Mzc1QzgyLjk3OTIgNTQuMDIwOCA4My4yNzA4IDU0LjQ1ODMgODMuMzEyNSA1NC43NUM4My4zNTQyIDU1IDgzLjM3NSA1NS4zNTQyIDgzLjM3NSA1NS44MTI1QzgzLjM3NSA1Ni4yMjkyIDgzLjM3NSA1Ni42MDQyIDgzLjM3NSA1Ni45Mzc1QzgzLjI5MTcgNTcuMTQ1OCA4My4yNzA4IDU3LjI5MTcgODMuMzEyNSA1Ny4zNzVDODMuMzU0MiA1Ny40NTgzIDgzLjQxNjcgNTcuNTQxNyA4My41IDU3LjYyNUM4My42NjY3IDU4LjA0MTcgODMuNzUgNTguNTIwOCA4My43NSA1OS4wNjI1WiIgZmlsbD0iIzE0N0EwMCIvPgo8L3N2Zz4K"; + class MJPUPrimeU { + getInfo() { + return { + id: "MJPUPrimeU", + name: "Prim Utilities", + color1: "#31acbd", + color2: "#37c1d4", + color3: "#40e0f5", + menuIconURI, + blocks: [ + { + opcode: "isPrime", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.BOOLEAN, + text: "is [NUM] prime?", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 1 } + } + }, + { + opcode: "FirstPrimeBetween", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "first prime between [NUM] and [NUM2]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 1 }, + NUM2: { type: Scratch.ArgumentType.NUMBER, defaultValue: 10 } + } + }, + { + opcode: "RandomPrimeBetween", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "random prime between [NUM] and [NUM2]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 1 }, + NUM2: { type: Scratch.ArgumentType.NUMBER, defaultValue: 10 } + } + }, + { + opcode: "AllPrimeBetween", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "all primes between [NUM] and [NUM2]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 1 }, + NUM2: { type: Scratch.ArgumentType.NUMBER, defaultValue: 10 } + } + }, + { + opcode: "PrimeAmountBetween", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "number of primes between [NUM] and [NUM2]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 1 }, + NUM2: { type: Scratch.ArgumentType.NUMBER, defaultValue: 10 }, + } + }, + { + opcode: "SPrimeHigherT", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "smallest prime higher than [NUM]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 2 }, + } + }, + { + opcode: "HPrimeSmallerT", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "highest prime smaller than [NUM]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 10 }, + } + }, + { blockType: Scratch.BlockType.LABEL, text: "Number decomposition" }, + { + opcode: "DivisorSet", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "divisor set of [NUM]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 10 }, + } + }, + { + opcode: "PFZ", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "Prime factor decomposition of [NUM]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 10 }, + } + }, + { blockType: Scratch.BlockType.LABEL, text: "Special Prime Functions" }, + { + opcode: "GoldbackPairs", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "Goldbach pairs for [NUM]", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 10 }, + } + }, + { + opcode: "PrimeTwins", + extensions: ["colours_operators"], + blockType: Scratch.BlockType.REPORTER, + text: "prime twins between [NUM] and [NUM2] ", + arguments: { + NUM: { type: Scratch.ArgumentType.NUMBER, defaultValue: 2 }, + NUM2: { type: Scratch.ArgumentType.NUMBER, defaultValue: 15 }, + } + } + ], + + }; + } + + isPrime(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + return Prime(num) + } + FirstPrimeBetween(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + const num2 = Math.abs(Scratch.Cast.toNumber(args.NUM2)); + const start = Math.min(num, num2); + const end = Math.max(num, num2); + for (let i = start; i <= end; i++) { + if (Prime(i)) { + return i; + } + } + return 2; + } + RandomPrimeBetween(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + const num2 = Math.abs(Scratch.Cast.toNumber(args.NUM2)); + const start = Math.min(num, num2); + const end = Math.max(num, num2); + const primes = []; + for (let i = start; i <= end; i++) { + if (Prime(i)) { + primes.push(i); + } + } + if (primes.length === 0) { + return 2; + } + const randomIndex = Math.floor(Math.random() * primes.length); + return primes[randomIndex]; + } + AllPrimeBetween(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + const num2 = Math.abs(Scratch.Cast.toNumber(args.NUM2)); + const start = Math.min(num, num2); + const end = Math.max(num, num2); + const primes = []; + for (let i = start; i <= end; i++) { + if (Prime(i)) { + primes.push(i); + } + } + if (primes.length === 0) { + return 2; + } + return primes.join(', '); + } + PFZ(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + const factors = []; + let n = num; + if (n <= 1) return ''; + while (n % 2 === 0) { + factors.push(2); + n /= 2; + } + for (let i = 3; i <= Math.sqrt(n); i += 2) { + while (n % i === 0) { + factors.push(i); + n /= i; + } + } + if (n > 2) { + factors.push(n); + } + return factors.join(', '); + } + SPrimeHigherT(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + let i = num + 1; + while (true) { + if (Prime(i)) { + return i; + } + i++; + } + } + HPrimeSmallerT(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + for (let i = num; i >= 2; i--) { + if (Prime(i)) { + return i; + } + } + return 2; + } + PrimeAmountBetween(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + const num2 = Math.abs(Scratch.Cast.toNumber(args.NUM2)); + const start = Math.min(num, num2); + const end = Math.max(num, num2); + let primeCount = 0; + for (let i = start; i <= end; i++) { + if (Prime(i)) { + primeCount++; + } + } + return primeCount; + } + DivisorSet(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + const divisors = []; + + for (let i = 1; i <= num; i++) { + if (num % i === 0) { + divisors.push(i); + } + } + + return divisors.join(", "); + } + GoldbackPairs(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + const primes = []; + const pairs = []; + + for (let i = 2; i <= num; i++) { + let isPrime = true; + for (let j = 2; j * j <= i; j++) { + if (i % j === 0) { + isPrime = false; + break; + } + } + if (isPrime) { + primes.push(i); + } + } + + for (let i = 0; i < primes.length; i++) { + for (let j = i; j < primes.length; j++) { + if (primes[i] + primes[j] === num) { + pairs.push(`(${primes[i]}, ${primes[j]})`); + } + } + } + + return pairs.join(", "); + } + PrimeTwins(args) { + const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); + const num2 = Math.abs(Scratch.Cast.toNumber(args.NUM2)); + const twins = []; + + for (let i = Math.min(num, num2); i <= Math.max(num, num2); i++) { + if (Prime(i) && Prime(i + 2)) { + twins.push(`(${i}, ${i + 2})`); + } + } + + return twins.join(", "); + } + } + Scratch.extensions.register(new MJPUPrimeU()); +})(Scratch); From 933beb460d7a89bf706b00c38ad1f1cc7baa1d62 Mon Sep 17 00:00:00 2001 From: Mister <131907731+M0v0@users.noreply.github.com> Date: Thu, 5 Dec 2024 21:32:06 +0100 Subject: [PATCH 2/2] Update PrimUtilities.js --- static/extensions/Mister/PrimUtilities.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/extensions/Mister/PrimUtilities.js b/static/extensions/Mister/PrimUtilities.js index d8dc8d0e..f20a2e4f 100644 --- a/static/extensions/Mister/PrimUtilities.js +++ b/static/extensions/Mister/PrimUtilities.js @@ -3,7 +3,7 @@ // Description: Powerful blocks for working with prime numbers // By: Mister -// Version V.0.0.5 +// Version V.0.0.6 //MIT licensed function Prime(num) { @@ -261,7 +261,7 @@ function Prime(num) { DivisorSet(args) { const num = Math.abs(Scratch.Cast.toNumber(args.NUM)); const divisors = []; - + for (let i = 1; i <= num; i++) { if (num % i === 0) { divisors.push(i);