diff --git a/.github/workflows/javadoc.yml b/.github/workflows/javadoc.yml index eb211a6..4101de2 100644 --- a/.github/workflows/javadoc.yml +++ b/.github/workflows/javadoc.yml @@ -23,6 +23,9 @@ jobs: - name: Generate JavaDoc run: ./gradlew javadoc + + - name: Build TeaVM (JavaScript compilation) + run: ./teavm.sh - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v4 diff --git a/.gitignore b/.gitignore index d825c36..2ab5edd 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,7 @@ NumberGuessingGame-macos/ NumberGuessingGame-linux/ NumberGuessingGame-windows.zip NumberGuessingGame-macos.zip -NumberGuessingGame-linux.tar.gz \ No newline at end of file +NumberGuessingGame-linux.tar.gz + +# TeaVM generated JavaScript (build artifact) +teavm/classes.js diff --git a/README.md b/README.md index 7c4f9f8..eb50ee9 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,12 @@ A simple number guessing game where you try to guess a randomly generated number. The game features both a user-friendly graphical interface (GUI) and a classic console mode. The GUI provides visual feedback with color-coded hints and tracks your progress in real-time. **Features:** -- 🎮 Modern Swing-based GUI (default) -- 💻 Classic console mode (use `--console` flag) -- 🎯 Visual feedback with color coding -- 📊 Real-time guess counter -- ⌨️ Keyboard shortcuts for quick navigation -- 🌍 Cross-platform compatible (Windows, macOS, Linux) +- Swing-based GUI (default) +- Console mode (use `--console` flag) +- Web browser version (available on GitHub Pages) +- High score tracking with usernames +- Persistent score storage +- Cross-platform ## Installation & Running @@ -62,7 +62,7 @@ Download the `archive.zip` from the [latest release](https://github.com/project5 #### Requirements -- Java 8 or higher (may require Java 17+ in future versions) +- Java 11 or higher #### How to Run @@ -86,10 +86,13 @@ The game now features both a graphical user interface (GUI) and a console mode. - Orange text indicates your guess was too high - Green text indicates you guessed correctly! 5. The number of guesses is displayed and updated in real-time -6. When you guess correctly, click "New Game" to play again -7. Use the menu bar for additional options: +6. When you guess correctly, you'll be prompted to enter your username +7. After entering your username, your score will be saved and the top high scores will be displayed +8. Click "New Game" to play again +9. Use the menu bar for additional options: - File → New Game (Ctrl+N): Start a new game - File → Exit: Close the application + - View → High Scores: View the top high scores - Help → About: View game information #### Console Mode @@ -108,6 +111,18 @@ In console mode: 2. The game will tell you if your guess is too high or too low 3. Keep guessing until you find the correct number 4. The game will display how many guesses it took you +5. Enter your username when prompted to save your score +6. The top high scores will be displayed after saving your score + +### High Scores + +The game automatically tracks high scores (games won with the fewest guesses). High scores are stored persistently in your home directory at `~/.numberguessinggame/highscores.properties`. + +- The top 10 scores are kept +- Scores are sorted by the number of guesses (fewest is best) +- Each score includes the username and number of guesses +- High scores persist across game sessions +- View high scores from the GUI menu (View → High Scores) or after completing a game ## Development diff --git a/app/build.gradle b/app/build.gradle index 53f60ae..7b5aa1d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,9 @@ plugins { //Spotless id 'com.diffplug.spotless' version '8.0.0' + + // TeaVM plugin for JavaScript compilation + id 'io.github.zebalu.teavm-gradle-plugin' version '1.0.0' } repositories { @@ -14,6 +17,9 @@ repositories { dependencies { // This dependency is used by the application. implementation libs.guava + + // TeaVM JSO APIs for web development (needed at compile time for WebGUI) + compileOnly 'org.teavm:teavm-jso-apis:0.10.2' } testing { @@ -35,7 +41,10 @@ java { } tasks.withType(JavaCompile) { - options.release.set(8) + // Changed from 8 to 11 to support TeaVM for web deployment. + // TeaVM 0.10.2+ requires Java 11 as minimum target. + // This change affects the minimum JRE required to run the JAR. + options.release.set(11) } application { @@ -61,3 +70,9 @@ jar { ) } } + +// TeaVM configuration for compiling Java GUI to JavaScript +teavm { + // Main class to compile + mainClass = 'io.github.project516.NumberGuessingGame.WebGUI' +} diff --git a/app/src/main/java/io/github/project516/NumberGuessingGame/GUI.java b/app/src/main/java/io/github/project516/NumberGuessingGame/GUI.java index 38c991f..fc90d13 100644 --- a/app/src/main/java/io/github/project516/NumberGuessingGame/GUI.java +++ b/app/src/main/java/io/github/project516/NumberGuessingGame/GUI.java @@ -16,6 +16,7 @@ public class GUI extends JFrame { private RandomNumber randomGenerator; private CheckGuess guessChecker; private GameInfo gameInfo; + private HighScoreManager highScoreManager; // UI Components private JTextField guessField; @@ -38,6 +39,15 @@ public GUI() { guessChecker = new CheckGuess(); gameInfo = new GameInfo(); + // Initialize high score manager + try { + highScoreManager = new HighScoreManager(); + } catch (Exception e) { + System.err.println( + "Warning: Could not initialize high score system: " + e.getMessage()); + highScoreManager = null; + } + // Set up the frame setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500, 400); @@ -76,6 +86,14 @@ private void createMenuBar() { exitItem.addActionListener(e -> System.exit(0)); fileMenu.add(exitItem); + // View menu + JMenu viewMenu = new JMenu("View"); + viewMenu.setMnemonic(KeyEvent.VK_V); + + JMenuItem highScoresItem = new JMenuItem("High Scores", KeyEvent.VK_H); + highScoresItem.addActionListener(e -> showHighScores()); + viewMenu.add(highScoresItem); + // Help menu JMenu helpMenu = new JMenu("Help"); helpMenu.setMnemonic(KeyEvent.VK_H); @@ -85,6 +103,7 @@ private void createMenuBar() { helpMenu.add(aboutItem); menuBar.add(fileMenu); + menuBar.add(viewMenu); menuBar.add(helpMenu); setJMenuBar(menuBar); @@ -223,13 +242,8 @@ private void submitGuess() { newGameButton.setVisible(true); newGameButton.requestFocus(); - // Show congratulations dialog - String message = - String.format( - "You guessed the number in %d %s!", - numberOfGuesses, numberOfGuesses == 1 ? "guess" : "guesses"); - JOptionPane.showMessageDialog( - this, message, "Congratulations!", JOptionPane.INFORMATION_MESSAGE); + // Handle high score + handleHighScore(); } guessField.setText(""); @@ -270,6 +284,63 @@ private void showAboutDialog() { this, message, "About Number Guessing Game", JOptionPane.INFORMATION_MESSAGE); } + /** + * Handles high score submission after a successful game. Prompts the user for their username + * and saves the score if applicable. + */ + private void handleHighScore() { + if (highScoreManager == null) { + // Show basic congratulations dialog if high score system is unavailable + String message = + String.format( + "You guessed the number in %d %s!", + numberOfGuesses, numberOfGuesses == 1 ? "guess" : "guesses"); + JOptionPane.showMessageDialog( + this, message, "Congratulations!", JOptionPane.INFORMATION_MESSAGE); + return; + } + + // Prompt for username + String username = + JOptionPane.showInputDialog( + this, + String.format( + "You guessed the number in %d %s!\n\nEnter your username (1-20 characters):", + numberOfGuesses, numberOfGuesses == 1 ? "guess" : "guesses"), + "Congratulations!", + JOptionPane.QUESTION_MESSAGE); + + // Validate username + if (username != null && Username.isValid(username)) { + highScoreManager.addHighScore(username, numberOfGuesses); + showHighScores(); + } else if (username != null) { + JOptionPane.showMessageDialog( + this, "Invalid username. Score not saved.", "Error", JOptionPane.ERROR_MESSAGE); + } + } + + /** Displays the top high scores in a dialog. */ + private void showHighScores() { + if (highScoreManager == null) { + return; + } + + java.util.List topScores = highScoreManager.getTopHighScores(10); + if (topScores.isEmpty()) { + return; + } + + StringBuilder sb = new StringBuilder(); + sb.append("Top High Scores\n\n"); + for (int i = 0; i < topScores.size(); i++) { + sb.append(String.format("%d. %s\n", i + 1, topScores.get(i))); + } + + JOptionPane.showMessageDialog( + this, sb.toString(), "High Scores", JOptionPane.INFORMATION_MESSAGE); + } + /** * Gets the version of the application. * diff --git a/app/src/main/java/io/github/project516/NumberGuessingGame/GameLogic.java b/app/src/main/java/io/github/project516/NumberGuessingGame/GameLogic.java index 7f750e7..3ce8a77 100644 --- a/app/src/main/java/io/github/project516/NumberGuessingGame/GameLogic.java +++ b/app/src/main/java/io/github/project516/NumberGuessingGame/GameLogic.java @@ -1,10 +1,25 @@ package io.github.project516.NumberGuessingGame; +import java.util.List; + /** * Contains the main game logic for the Number Guessing Game. This class manages the game loop, user * input, and guess validation. */ public class GameLogic { + private HighScoreManager highScoreManager; + + /** Constructs a new GameLogic instance and initializes the high score manager. */ + public GameLogic() { + try { + highScoreManager = new HighScoreManager(); + } catch (Exception e) { + System.err.println( + "Warning: Could not initialize high score system: " + e.getMessage()); + highScoreManager = null; + } + } + /** * Runs the main game loop. Generates a random number and prompts the user to guess it. Provides * feedback on each guess and tracks the number of attempts. @@ -30,9 +45,36 @@ void game(ScannerHelper scan) { } else { numOfGuesses++; System.out.println("Took you " + numOfGuesses + " guesses!"); + + // Handle high score + if (highScoreManager != null) { + String username = Username.promptUsername(scan); + if (highScoreManager.addHighScore(username, numOfGuesses)) { + System.out.println("Score saved!"); + } + displayHighScores(); + } break; } numOfGuesses++; } } + + /** Displays the top high scores to the console. */ + private void displayHighScores() { + if (highScoreManager == null) { + return; + } + + List topScores = highScoreManager.getTopHighScores(5); + if (topScores.isEmpty()) { + return; + } + + System.out.println("\n=== Top High Scores ==="); + for (int i = 0; i < topScores.size(); i++) { + System.out.println((i + 1) + ". " + topScores.get(i)); + } + System.out.println("=======================\n"); + } } diff --git a/app/src/main/java/io/github/project516/NumberGuessingGame/HighScore.java b/app/src/main/java/io/github/project516/NumberGuessingGame/HighScore.java new file mode 100644 index 0000000..b5446f2 --- /dev/null +++ b/app/src/main/java/io/github/project516/NumberGuessingGame/HighScore.java @@ -0,0 +1,65 @@ +package io.github.project516.NumberGuessingGame; + +/** + * Represents a single high score entry in the Number Guessing Game. Each entry contains a username + * and the number of guesses it took to win the game. + */ +public class HighScore implements Comparable { + private final String username; + private final int numberOfGuesses; + + /** + * Constructs a new HighScore entry. + * + * @param username the username of the player + * @param numberOfGuesses the number of guesses it took to win + * @throws IllegalArgumentException if username is null or empty, or if numberOfGuesses is less + * than 1 + */ + public HighScore(String username, int numberOfGuesses) { + if (username == null || username.trim().isEmpty()) { + throw new IllegalArgumentException("Username cannot be null or empty"); + } + if (numberOfGuesses < 1) { + throw new IllegalArgumentException("Number of guesses must be at least 1"); + } + this.username = username.trim(); + this.numberOfGuesses = numberOfGuesses; + } + + /** + * Gets the username for this high score entry. + * + * @return the username + */ + public String getUsername() { + return username; + } + + /** + * Gets the number of guesses for this high score entry. + * + * @return the number of guesses + */ + public int getNumberOfGuesses() { + return numberOfGuesses; + } + + /** + * Compares this high score to another. High scores are ordered by number of guesses (ascending) + * so that lower scores (fewer guesses) come first. + * + * @param other the other high score to compare to + * @return a negative integer, zero, or a positive integer as this high score is less than, + * equal to, or greater than the specified high score + */ + @Override + public int compareTo(HighScore other) { + return Integer.compare(this.numberOfGuesses, other.numberOfGuesses); + } + + @Override + public String toString() { + return username + ": " + numberOfGuesses + " guess" + (numberOfGuesses == 1 ? "" : "es"); + } +} diff --git a/app/src/main/java/io/github/project516/NumberGuessingGame/HighScoreManager.java b/app/src/main/java/io/github/project516/NumberGuessingGame/HighScoreManager.java new file mode 100644 index 0000000..4121a35 --- /dev/null +++ b/app/src/main/java/io/github/project516/NumberGuessingGame/HighScoreManager.java @@ -0,0 +1,162 @@ +package io.github.project516.NumberGuessingGame; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Properties; + +/** + * Manages high scores for the Number Guessing Game. Handles loading, saving, and retrieving high + * scores from persistent storage. + */ +public class HighScoreManager { + private static final String CONFIG_DIR = ".numberguessinggame"; + private static final String HIGH_SCORE_FILE = "highscores.properties"; + private static final int MAX_HIGH_SCORES = 10; + + private final File highScoreFile; + private final List highScores; + + /** + * Constructs a new HighScoreManager and loads existing high scores from storage. + * + * @throws IOException if there is an error creating the storage directory + */ + public HighScoreManager() throws IOException { + this(CONFIG_DIR); + } + + /** + * Constructs a new HighScoreManager with a custom config directory. Used primarily for testing. + * + * @param configDirName the name of the config directory + * @throws IOException if there is an error creating the storage directory + */ + HighScoreManager(String configDirName) throws IOException { + File configDir = new File(System.getProperty("user.home"), configDirName); + if (!configDir.exists()) { + if (!configDir.mkdirs()) { + throw new IOException("Failed to create config directory: " + configDir); + } + } + + highScoreFile = new File(configDir, HIGH_SCORE_FILE); + highScores = new ArrayList<>(); + loadHighScores(); + } + + /** + * Loads high scores from the properties file. If the file doesn't exist or can't be read, an + * empty high score list is initialized. + */ + private void loadHighScores() { + if (!highScoreFile.exists()) { + return; + } + + Properties props = new Properties(); + try (FileInputStream fis = new FileInputStream(highScoreFile)) { + props.load(fis); + + for (String key : props.stringPropertyNames()) { + if (key.startsWith("score.")) { + try { + String[] parts = props.getProperty(key).split(":"); + if (parts.length == 2) { + String username = parts[0]; + int guesses = Integer.parseInt(parts[1]); + highScores.add(new HighScore(username, guesses)); + } + } catch (Exception e) { + // Skip invalid entries + } + } + } + Collections.sort(highScores); + } catch (IOException e) { + // If we can't read the file, just start with empty high scores + } + } + + /** + * Saves the current high scores to the properties file. + * + * @throws IOException if there is an error writing to the file + */ + private void saveHighScores() throws IOException { + Properties props = new Properties(); + + for (int i = 0; i < highScores.size(); i++) { + HighScore score = highScores.get(i); + props.setProperty("score." + i, score.getUsername() + ":" + score.getNumberOfGuesses()); + } + + try (FileOutputStream fos = new FileOutputStream(highScoreFile)) { + props.store(fos, "Number Guessing Game High Scores"); + } + } + + /** + * Adds a new high score. The score will only be saved if it is in the top scores. The list is + * automatically sorted and trimmed to the maximum number of high scores. + * + * @param username the username of the player + * @param numberOfGuesses the number of guesses it took to win + * @return true if the score was added to the high scores list, false otherwise + */ + public boolean addHighScore(String username, int numberOfGuesses) { + try { + HighScore newScore = new HighScore(username, numberOfGuesses); + highScores.add(newScore); + Collections.sort(highScores); + + // Keep only top scores + if (highScores.size() > MAX_HIGH_SCORES) { + highScores.subList(MAX_HIGH_SCORES, highScores.size()).clear(); + } + + saveHighScores(); + return true; + } catch (Exception e) { + return false; + } + } + + /** + * Gets the top high scores. + * + * @param limit the maximum number of high scores to return + * @return a list of the top high scores, limited by the specified amount + */ + public List getTopHighScores(int limit) { + int count = Math.min(limit, highScores.size()); + return new ArrayList<>(highScores.subList(0, count)); + } + + /** + * Gets all high scores. + * + * @return a list of all high scores + */ + public List getAllHighScores() { + return new ArrayList<>(highScores); + } + + /** + * Checks if a given number of guesses qualifies as a high score. + * + * @param numberOfGuesses the number of guesses to check + * @return true if this would be a high score, false otherwise + */ + public boolean isHighScore(int numberOfGuesses) { + if (highScores.size() < MAX_HIGH_SCORES) { + return true; + } + HighScore lowestHighScore = highScores.get(highScores.size() - 1); + return numberOfGuesses < lowestHighScore.getNumberOfGuesses(); + } +} diff --git a/app/src/main/java/io/github/project516/NumberGuessingGame/Username.java b/app/src/main/java/io/github/project516/NumberGuessingGame/Username.java index df078c3..f74c530 100644 --- a/app/src/main/java/io/github/project516/NumberGuessingGame/Username.java +++ b/app/src/main/java/io/github/project516/NumberGuessingGame/Username.java @@ -1,9 +1,51 @@ package io.github.project516.NumberGuessingGame; /** - * Placeholder class for username functionality. Will be used for a high score system in future - * versions. + * Utility class for prompting and validating usernames in the Number Guessing Game. Used for the + * high score system. */ public class Username { - // TODO - add usernames for a high score system + private static final int MAX_USERNAME_LENGTH = 20; + private static final int MIN_USERNAME_LENGTH = 1; + + /** + * Prompts the user for a username using the console. + * + * @param scan the ScannerHelper instance to use for user input + * @return the validated username + */ + public static String promptUsername(ScannerHelper scan) { + // Clear any remaining newline from previous nextInt() call + scan.scan.nextLine(); + + while (true) { + System.out.print("Enter your username: "); + String username = scan.scan.nextLine().trim(); + + if (isValid(username)) { + return username; + } + + System.out.println( + "Invalid username. Must be between " + + MIN_USERNAME_LENGTH + + " and " + + MAX_USERNAME_LENGTH + + " characters."); + } + } + + /** + * Validates a username. + * + * @param username the username to validate + * @return true if the username is valid, false otherwise + */ + public static boolean isValid(String username) { + if (username == null || username.trim().isEmpty()) { + return false; + } + int length = username.trim().length(); + return length >= MIN_USERNAME_LENGTH && length <= MAX_USERNAME_LENGTH; + } } diff --git a/app/src/main/java/io/github/project516/NumberGuessingGame/WebGUI.java b/app/src/main/java/io/github/project516/NumberGuessingGame/WebGUI.java new file mode 100644 index 0000000..8827697 --- /dev/null +++ b/app/src/main/java/io/github/project516/NumberGuessingGame/WebGUI.java @@ -0,0 +1,214 @@ +package io.github.project516.NumberGuessingGame; + +import org.teavm.jso.browser.Window; +import org.teavm.jso.dom.html.*; + +/** + * Web-based GUI for the Number Guessing Game using TeaVM. This class provides a browser-native + * interface that reuses the core game logic from the existing classes. Created specifically for + * TeaVM compilation to JavaScript for GitHub Pages deployment. + */ +public class WebGUI { + // Game state - reusing existing game logic classes + private int targetNumber; + private int numberOfGuesses; + private RandomNumber randomGenerator; + private CheckGuess guessChecker; + + // DOM elements + private HTMLDocument document; + private HTMLInputElement guessInput; + private HTMLButtonElement submitButton; + private HTMLButtonElement newGameButton; + private HTMLElement feedbackElement; + private HTMLElement guessCountElement; + + /** + * Main entry point for the web application. TeaVM will call this method when the page loads. + * + * @param args command line arguments (not used in web context) + */ + public static void main(String[] args) { + new WebGUI().initialize(); + } + + /** Initializes the web GUI and starts a new game. */ + public void initialize() { + // Initialize game objects - reusing existing classes + randomGenerator = new RandomNumber(); + guessChecker = new CheckGuess(); + + // Get the HTML document + document = Window.current().getDocument(); + + // Create the game UI + createGameUI(); + + // Start a new game + startNewGame(); + } + + /** Creates the game UI elements in the HTML document. */ + private void createGameUI() { + // Get or create the game container + HTMLElement gameContainer = (HTMLElement) document.getElementById("game-container"); + if (gameContainer == null) { + gameContainer = (HTMLElement) document.createElement("div"); + gameContainer.setId("game-container"); + document.getBody().appendChild(gameContainer); + } + + // Clear existing content + gameContainer.setInnerHTML(""); + + // Create title + HTMLElement title = (HTMLElement) document.createElement("h1"); + title.setInnerHTML("Number Guessing Game"); + gameContainer.appendChild(title); + + // Create instructions + HTMLElement instructions = (HTMLElement) document.createElement("p"); + instructions.setInnerHTML("Guess a number between 1 and 100!"); + gameContainer.appendChild(instructions); + + // Create guess count display + guessCountElement = (HTMLElement) document.createElement("p"); + guessCountElement.setId("guess-count"); + guessCountElement.setInnerHTML("Number of guesses: 0"); + gameContainer.appendChild(guessCountElement); + + // Create input field + guessInput = (HTMLInputElement) document.createElement("input"); + guessInput.setType("number"); + guessInput.setAttribute("min", "1"); + guessInput.setAttribute("max", "100"); + guessInput.setAttribute("placeholder", "Enter your guess"); + guessInput.setId("guess-input"); + gameContainer.appendChild(guessInput); + + // Create submit button + submitButton = (HTMLButtonElement) document.createElement("button"); + submitButton.setInnerHTML("Submit Guess"); + submitButton.setId("submit-button"); + submitButton.addEventListener("click", evt -> submitGuess()); + gameContainer.appendChild(submitButton); + + // Allow Enter key to submit + guessInput.addEventListener( + "keypress", + evt -> { + if ("Enter".equals(((HTMLKeyboardEvent) evt).getKey())) { + submitGuess(); + } + }); + + // Create feedback area + feedbackElement = (HTMLElement) document.createElement("p"); + feedbackElement.setId("feedback"); + feedbackElement.setInnerHTML(" "); + gameContainer.appendChild(feedbackElement); + + // Create new game button (initially hidden) + newGameButton = (HTMLButtonElement) document.createElement("button"); + newGameButton.setInnerHTML("New Game"); + newGameButton.setId("new-game-button"); + newGameButton.getStyle().setProperty("display", "none"); + newGameButton.addEventListener("click", evt -> startNewGame()); + gameContainer.appendChild(newGameButton); + } + + /** Starts a new game by resetting the game state. */ + private void startNewGame() { + // Generate new target number using existing RandomNumber class + targetNumber = randomGenerator.number(100); + numberOfGuesses = 0; + + // Reset UI + guessInput.setValue(""); + guessInput.setDisabled(false); + submitButton.setDisabled(false); + newGameButton.getStyle().setProperty("display", "none"); + feedbackElement.setInnerHTML(" "); + feedbackElement.setClassName(""); + updateGuessCount(); + + // Focus on input + guessInput.focus(); + } + + /** Processes the user's guess and updates the UI with feedback. */ + private void submitGuess() { + String input = guessInput.getValue().trim(); + + if (input.isEmpty()) { + showFeedback("Please enter a number!", "error"); + return; + } + + int guess; + try { + guess = Integer.parseInt(input); + } catch (NumberFormatException e) { + showFeedback("Invalid input! Please enter a valid number.", "error"); + guessInput.setValue(""); + return; + } + + // Validate guess using existing CheckGuess class + try { + guessChecker.check(guess); + } catch (IllegalArgumentException e) { + showFeedback(e.getMessage(), "error"); + guessInput.setValue(""); + return; + } + + numberOfGuesses++; + updateGuessCount(); + + // Check the guess + if (guess > targetNumber) { + showFeedback("Too high! Try a lower number.", "high"); + } else if (guess < targetNumber) { + showFeedback("Too low! Try a higher number.", "low"); + } else { + // Correct guess! + showFeedback( + String.format( + "🎉 Congratulations! You guessed it in %d %s!", + numberOfGuesses, numberOfGuesses == 1 ? "guess" : "guesses"), + "success"); + guessInput.setDisabled(true); + submitButton.setDisabled(true); + newGameButton.getStyle().setProperty("display", "block"); + newGameButton.focus(); + } + + guessInput.setValue(""); + guessInput.focus(); + } + + /** + * Updates the feedback message and applies the appropriate CSS class. + * + * @param message the feedback message to display + * @param cssClass the CSS class to apply (error, high, low, success) + */ + private void showFeedback(String message, String cssClass) { + feedbackElement.setInnerHTML(message); + feedbackElement.setClassName("feedback-" + cssClass); + } + + /** Updates the guess count display. */ + private void updateGuessCount() { + guessCountElement.setInnerHTML("Number of guesses: " + numberOfGuesses); + } + + /** Keyboard event interface for handling key presses. */ + private interface HTMLKeyboardEvent extends HTMLEvent { + String getKey(); + } + + /** Base HTML event interface. */ + private interface HTMLEvent extends org.teavm.jso.JSObject {} +} diff --git a/app/src/test/java/io/github/project516/NumberGuessingGame/HighScoreManagerTest.java b/app/src/test/java/io/github/project516/NumberGuessingGame/HighScoreManagerTest.java new file mode 100644 index 0000000..bdae0df --- /dev/null +++ b/app/src/test/java/io/github/project516/NumberGuessingGame/HighScoreManagerTest.java @@ -0,0 +1,128 @@ +package io.github.project516.NumberGuessingGame; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; + +/** Unit tests for the HighScoreManager class. */ +class HighScoreManagerTest { + private static final String TEST_CONFIG_DIR = ".numberguessinggame_test"; + + private void cleanup() { + // Clean up test files + File configDir = new File(System.getProperty("user.home"), TEST_CONFIG_DIR); + if (configDir.exists()) { + File[] files = configDir.listFiles(); + if (files != null) { + for (File file : files) { + file.delete(); + } + } + configDir.delete(); + } + } + + @AfterEach + void cleanupAfter() { + cleanup(); + } + + @Test + void testHighScoreManagerCreation() { + cleanup(); + assertDoesNotThrow( + () -> { + HighScoreManager manager = new HighScoreManager(TEST_CONFIG_DIR); + assertNotNull(manager); + }); + } + + @Test + void testAddHighScore() throws IOException { + cleanup(); + HighScoreManager manager = new HighScoreManager(TEST_CONFIG_DIR); + assertTrue(manager.addHighScore("Alice", 5)); + + List scores = manager.getAllHighScores(); + assertEquals(1, scores.size()); + assertEquals("Alice", scores.get(0).getUsername()); + assertEquals(5, scores.get(0).getNumberOfGuesses()); + } + + @Test + void testHighScoresAreSorted() throws IOException { + cleanup(); + HighScoreManager manager = new HighScoreManager(TEST_CONFIG_DIR); + manager.addHighScore("Charlie", 7); + manager.addHighScore("Alice", 3); + manager.addHighScore("Bob", 5); + + List scores = manager.getAllHighScores(); + assertEquals(3, scores.size()); + assertEquals("Alice", scores.get(0).getUsername()); + assertEquals("Bob", scores.get(1).getUsername()); + assertEquals("Charlie", scores.get(2).getUsername()); + } + + @Test + void testTopHighScoresLimit() throws IOException { + cleanup(); + HighScoreManager manager = new HighScoreManager(TEST_CONFIG_DIR); + + // Add 15 scores + for (int i = 1; i <= 15; i++) { + manager.addHighScore("Player" + i, i); + } + + // Should only keep top 10 + List allScores = manager.getAllHighScores(); + assertEquals(10, allScores.size()); + assertEquals("Player1", allScores.get(0).getUsername()); + assertEquals("Player10", allScores.get(9).getUsername()); + } + + @Test + void testGetTopHighScores() throws IOException { + cleanup(); + HighScoreManager manager = new HighScoreManager(TEST_CONFIG_DIR); + + for (int i = 1; i <= 10; i++) { + manager.addHighScore("Player" + i, i); + } + + List top5 = manager.getTopHighScores(5); + assertEquals(5, top5.size()); + assertEquals("Player1", top5.get(0).getUsername()); + assertEquals("Player5", top5.get(4).getUsername()); + } + + @Test + void testIsHighScore() throws IOException { + cleanup(); + HighScoreManager manager = new HighScoreManager(TEST_CONFIG_DIR); + + // Empty list - everything is a high score + assertTrue(manager.isHighScore(100)); + + // Add 10 scores + for (int i = 1; i <= 10; i++) { + manager.addHighScore("Player" + i, i * 10); + } + + // 5 is better than all existing scores + assertTrue(manager.isHighScore(5)); + + // 50 is better than some existing scores + assertTrue(manager.isHighScore(50)); + + // 100 is equal to worst score - not better + assertFalse(manager.isHighScore(100)); + + // 150 is worse than all existing scores + assertFalse(manager.isHighScore(150)); + } +} diff --git a/app/src/test/java/io/github/project516/NumberGuessingGame/HighScoreTest.java b/app/src/test/java/io/github/project516/NumberGuessingGame/HighScoreTest.java new file mode 100644 index 0000000..726d6c3 --- /dev/null +++ b/app/src/test/java/io/github/project516/NumberGuessingGame/HighScoreTest.java @@ -0,0 +1,83 @@ +package io.github.project516.NumberGuessingGame; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +/** Unit tests for the HighScore class. */ +class HighScoreTest { + @Test + void testHighScoreCreation() { + HighScore score = new HighScore("Alice", 5); + assertEquals("Alice", score.getUsername()); + assertEquals(5, score.getNumberOfGuesses()); + } + + @Test + void testHighScoreWithWhitespace() { + HighScore score = new HighScore(" Bob ", 3); + assertEquals("Bob", score.getUsername()); + assertEquals(3, score.getNumberOfGuesses()); + } + + @Test + void testHighScoreNullUsername() { + assertThrows( + IllegalArgumentException.class, + () -> { + new HighScore(null, 5); + }); + } + + @Test + void testHighScoreEmptyUsername() { + assertThrows( + IllegalArgumentException.class, + () -> { + new HighScore("", 5); + }); + } + + @Test + void testHighScoreWhitespaceOnlyUsername() { + assertThrows( + IllegalArgumentException.class, + () -> { + new HighScore(" ", 5); + }); + } + + @Test + void testHighScoreInvalidGuessCount() { + assertThrows( + IllegalArgumentException.class, + () -> { + new HighScore("Alice", 0); + }); + assertThrows( + IllegalArgumentException.class, + () -> { + new HighScore("Alice", -1); + }); + } + + @Test + void testHighScoreComparison() { + HighScore score1 = new HighScore("Alice", 5); + HighScore score2 = new HighScore("Bob", 3); + HighScore score3 = new HighScore("Charlie", 7); + + assertTrue(score2.compareTo(score1) < 0); // Bob's 3 < Alice's 5 + assertTrue(score1.compareTo(score3) < 0); // Alice's 5 < Charlie's 7 + assertTrue(score3.compareTo(score2) > 0); // Charlie's 7 > Bob's 3 + } + + @Test + void testHighScoreToString() { + HighScore score1 = new HighScore("Alice", 1); + HighScore score2 = new HighScore("Bob", 5); + + assertEquals("Alice: 1 guess", score1.toString()); + assertEquals("Bob: 5 guesses", score2.toString()); + } +} diff --git a/app/src/test/java/io/github/project516/NumberGuessingGame/UsernameTest.java b/app/src/test/java/io/github/project516/NumberGuessingGame/UsernameTest.java new file mode 100644 index 0000000..590d1e2 --- /dev/null +++ b/app/src/test/java/io/github/project516/NumberGuessingGame/UsernameTest.java @@ -0,0 +1,29 @@ +package io.github.project516.NumberGuessingGame; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +/** Unit tests for the Username class. */ +class UsernameTest { + @Test + void testValidUsername() { + assertTrue(Username.isValid("Alice")); + assertTrue(Username.isValid("Bob123")); + assertTrue(Username.isValid("a")); // 1 character + assertTrue(Username.isValid("12345678901234567890")); // 20 characters + } + + @Test + void testInvalidUsername() { + assertFalse(Username.isValid(null)); + assertFalse(Username.isValid("")); + assertFalse(Username.isValid(" ")); + assertFalse(Username.isValid("123456789012345678901")); // 21 characters - too long + } + + @Test + void testUsernameWithWhitespace() { + assertTrue(Username.isValid(" Alice ")); // Whitespace trimmed, valid + } +} diff --git a/cheerpj.sh b/cheerpj.sh new file mode 100755 index 0000000..aaadc4b --- /dev/null +++ b/cheerpj.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +./gradlew build +rm -f cheerpj/app.jar +cp app/build/libs/app.jar cheerpj +mkdir -p app/build/docs/javadoc/cheerpj +cp -f cheerpj/* app/build/docs/javadoc/cheerpj/ diff --git a/cheerpj/app.jar b/cheerpj/app.jar new file mode 100644 index 0000000..2e54ed4 Binary files /dev/null and b/cheerpj/app.jar differ diff --git a/cheerpj/index.html b/cheerpj/index.html new file mode 100644 index 0000000..18a650f --- /dev/null +++ b/cheerpj/index.html @@ -0,0 +1,17 @@ + + + + + CheerpJ test + + + + + + \ No newline at end of file diff --git a/teavm.sh b/teavm.sh new file mode 100755 index 0000000..05a3e3d --- /dev/null +++ b/teavm.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# Script to build TeaVM JavaScript output for GitHub Pages deployment +# This replaces the cheerpj.sh script + +echo "Building project..." +./gradlew build + +echo "Compiling Java to JavaScript with TeaVM..." +# Disable configuration cache due to TeaVM plugin compatibility +./gradlew teavmc --no-configuration-cache + +echo "Copying TeaVM output to javadoc directory..." +mkdir -p app/build/docs/javadoc/teavm +cp -f app/build/teavm/classes.js app/build/docs/javadoc/teavm/ +cp -f teavm/index.html app/build/docs/javadoc/teavm/ + +echo "TeaVM build completed successfully!" +echo "Output location: app/build/docs/javadoc/teavm/" diff --git a/teavm/README.md b/teavm/README.md new file mode 100644 index 0000000..aa43624 --- /dev/null +++ b/teavm/README.md @@ -0,0 +1,45 @@ +# TeaVM Web Version + +This directory contains the web browser version of the Number Guessing Game, compiled from Java to JavaScript using TeaVM. + +## What is TeaVM? + +TeaVM is an ahead-of-time compiler for Java bytecode that emits JavaScript. It allows running Java applications in web browsers without requiring a Java plugin or JVM. + +## Files + +- `index.html` - The main HTML page that loads and runs the game +- `classes.js` - The compiled JavaScript (generated during build, not committed to git) + +## Building + +To build the TeaVM version: + +```bash +./teavm.sh +``` + +This script will: +1. Build the project +2. Compile the WebGUI class to JavaScript using TeaVM +3. Copy the output to `app/build/docs/javadoc/teavm/` for deployment + +## Implementation + +The web version uses `WebGUI.java` which: +- Implements a browser-native UI using TeaVM's JSO (JavaScript Objects) API +- Reuses the core game logic classes (`RandomNumber`, `CheckGuess`, etc.) +- Creates DOM elements dynamically for the game interface +- Provides the same gameplay experience as the Swing GUI + +## Deployment + +The TeaVM version is automatically deployed to GitHub Pages via the `javadoc.yml` workflow whenever changes are pushed to the master branch. + +## Technical Details + +- **TeaVM Version**: 0.10.2 +- **Plugin**: io.github.zebalu.teavm-gradle-plugin v1.0.0 +- **Main Class**: `io.github.project516.NumberGuessingGame.WebGUI` +- **Target**: JavaScript +- **Java Version Required**: 11+ (for compilation) diff --git a/teavm/classes.js b/teavm/classes.js new file mode 100644 index 0000000..ace9f29 --- /dev/null +++ b/teavm/classes.js @@ -0,0 +1,817 @@ +"use strict"; +var main;(function(){ +var $rt_seed=2463534242;function $rt_nextId(){var x=$rt_seed;x^=x<<13;x^=x>>17;x^=x<<5;$rt_seed=x;return x;}function $rt_compare(a,b){return a>b?1:a0){var i=0;do {data[i]=null;i=i+1|0;}while(i=0;i=i -1|0){if(dimensions[i]===0){first=i;break;}}if(first>0){for(i=0;i=0?packages[prefixIndex]:"";packages[j] +=prefix+data[i++]+".";}$rt_packageData=packages;}function $rt_metadata(data){var packages=$rt_packageData;var i=0;while(i=0){m.name=packages[packageIndex]+m.name;}}m.binaryName="L"+m.name+";";var superclass=data[i++];m.superclass=superclass!==0?superclass:null;m.supertypes=data[i++];if(m.superclass){m.supertypes.push(m.superclass);cls.prototype +=Object.create(m.superclass.prototype);}else {cls.prototype={};}var flags=data[i++];m.enum=(flags&8)!==0;m.flags=flags;m.primitive=false;m.item=null;cls.prototype.constructor=cls;cls.classObject=null;m.accessLevel=data[i++];var clinit=data[i++];cls.$clinit=clinit!==0?clinit:function(){};var virtualMethods=data[i++];if(virtualMethods!==0){for(var j=0;j0){clsName+="[]";}return clsName;}function Long(lo,hi){this.lo=lo|0;this.hi=hi|0;}Long.prototype.__teavm_class__=function(){return "long";};Long.prototype.toString +=function(){var result=[];var n=this;var positive=Long_isPositive(n);if(!positive){n=Long_neg(n);}var radix=new Long(10,0);do {var divRem=Long_divRem(n,radix);result.push(String.fromCharCode(48+divRem[1].lo));n=divRem[0];}while(n.lo!==0||n.hi!==0);result=(result.reverse()).join('');return positive?result:"-"+result;};Long.prototype.valueOf=function(){return Long_toNumber(this);};var Long_ZERO=new Long(0,0);var Long_MAX_NORMAL=1<<18;function Long_fromInt(val){return val>=0?new Long(val,0):new Long(val, -1);}function Long_fromNumber(val) +{if(val>=0){return new Long(val|0,val/0x100000000|0);}else {return Long_neg(new Long( -val|0, -val/0x100000000|0));}}function Long_toNumber(val){var lo=val.lo;var hi=val.hi;if(lo<0){lo+=0x100000000;}return 0x100000000*hi+lo;}var $rt_imul=Math.imul||function(a,b){var ah=a>>>16&0xFFFF;var al=a&0xFFFF;var bh=b>>>16&0xFFFF;var bl=b&0xFFFF;return al*bl+(ah*bl+al*bh<<16>>>0)|0;};var $rt_udiv=function(a,b){if(a<0){a+=0x100000000;}if(b<0){b+=0x100000000;}return a/b|0;};var $rt_umod=function(a,b){if(a<0){a+=0x100000000;}if +(b<0){b+=0x100000000;}return a%b|0;};function $rt_setCloneMethod(target, f){target.cz=f;} +function $rt_cls(cls){return D$(cls);} +function $rt_str(str) {if (str === null) {return null;}var characters = $rt_createCharArray(str.length);var charsBuffer = characters.data;for (var i = 0; i < str.length; i = (i + 1) | 0) {charsBuffer[i] = str.charCodeAt(i) & 0xFFFF;}return Dm(characters);} +function $rt_ustr(str) {if (str === null) {return null;}var data = str.e.data;var result = "";for (var i = 0; i < data.length; i = (i + 1) | 0) {result += String.fromCharCode(data[i]);}return result;} +function $rt_objcls() { return C; } +function $rt_nullCheck(val) {if (val === null) {$rt_throw(CN());}return val;} +function $rt_intern(str) {return str;}function $rt_getThread(){return null;} +function $rt_setThread(t){} +function $rt_createException(message){return JG(message);} +function $rt_createStackElement(className,methodName,fileName,lineNumber){return null;} +function $rt_setStack(e,stack){} +var A=Object.create(null); +var E=$rt_throw;var I7=$rt_compare;var JH=$rt_nullCheck;var H=$rt_cls;var U=$rt_createArray;var Gn=$rt_isInstance;var JI=$rt_nativeThread;var JJ=$rt_suspending;var JK=$rt_resuming;var JL=$rt_invalidPointer;var B=$rt_s;var Ba=$rt_eraseClinit;var B3=$rt_imul;var C2=$rt_wrapException; +function C(){this.$id$=0;} +function JM(){var a=new C();G(a);return a;} +function G(a){return;} +function Bc(a){return D$(a.constructor);} +function HX(a){return F().a(Bc(a).dy()).a(B(0)).a(C6(Dp(a))).d();} +function Dp(a){var b,c;b=a;if(!b.$id$){c=$rt_nextId();b.$id$=c;}return a.$id$;} +function Fo(a){var b,c,d;if(!Gn(a,Be)){b=a;if(b.constructor.$meta.item===null)E(I9());}c=F4(a);b=c;d=$rt_nextId();b.$id$=d;return c;} +function BB(){var a=this;C.call(a);a.bR=null;a.er=null;a.bF=0;a.bS=0;} +function JN(){var a=new BB();D9(a);return a;} +function JO(a){var b=new BB();CS(b,a);return b;} +function JP(a,b){var c=new BB();Fm(c,a,b);return c;} +function D9(a){a.bF=1;a.bS=1;a.bv();} +function CS(a,b){a.bF=1;a.bS=1;a.bv();a.bR=b;} +function Fm(a,b,c){a.bF=1;a.bS=1;a.bv();a.bR=b;a.er=c;} +function Gk(a){return a;} +function IR(a){return a.bR;} +function X(){BB.call(this);} +function JQ(){var a=new X();Cb(a);return a;} +function JR(a){var b=new X();Dv(b,a);return b;} +function Cb(a){D9(a);} +function Dv(a,b){CS(a,b);} +function Q(){X.call(this);} +function JS(){var a=new Q();Bn(a);return a;} +function JG(a){var b=new Q();CG(b,a);return b;} +function Bn(a){Cb(a);} +function CG(a,b){Dv(a,b);} +function Cc(){Q.call(this);} +function B5(){var a=new Cc();E9(a);return a;} +function E9(a){Bn(a);} +function Es(){C.call(this);} +function Ed(b,c){var d,e,f,g;d=b.data;e=$rt_createCharArray(c);f=Cx(c,d.length);g=0;while(g=0&&e>=0&&f>=0&&(c+f|0)<=E5(b)){g=e+f|0;if(g<=E5(d)){a:{b:{if(b!==d){h=Bc(b).bn();i=Bc(d).bn();if(h!==null&&i!==null){if(h===i)break b;if(!h.bl()&&!i.bl()){j=b;k=0;g=c;while(k=2&&c<=36))c=10;return Jm(20).b9(b,c).d();} +function C6(b){Bf();return BW(b,4);} +function CM(b){Bf();return Fu(b,10);} +function Ep(b,c){var d,e,f,g,h;Bf();if(c>=2&&c<=36){if(b!==null&&!b.J()){a:{d=0;e=0;switch(b.h(0)){case 43:e=1;break a;case 45:d=1;e=1;break a;default:}}f=0;if(e==b.c())E(JA());while(e=c)E(BU(F().a(B(3)).n(c).a(B(4)).a(b).d()));f=B3(c,f)+h|0;if(f<0){if(g==b.c()&&f==(-2147483648)&&d)return (-2147483648);E(BU(F().a(B(5)).a(b).d()));}e=g;}if(d)f= -f;return f;}E(BU(B(6)));}E(BU(F().a(B(7)).n(c).d()));} +function FA(b){Bf();return Ep(b,10);} +function Em(b){Bf();if(b>=(-128)&&b<=127){Ej();return JW.data[b+128|0];}return Gw(b);} +function Ej(){var b;Bf();a:{if(JW===null){JW=U(Bg,256);b=0;while(true){if(b>=JW.data.length)break a;JW.data[b]=Gw(b-128|0);b=b+1|0;}}}} +function G0(a){return a.D;} +function Hu(a){return CM(a.D);} +function FR(a){return a.D>>>4^a.D<<28^a.D<<8^a.D>>>24;} +function Eh(b){var c,d,e;Bf();if(!b)return 32;c=0;d=b>>>16;if(d)c=16;else d=b;e=d>>>8;if(!e)e=d;else c=c|8;d=e>>>4;if(!d)d=e;else c=c|4;e=d>>>2;if(!e)e=d;else c=c|2;if(e>>>1)c=c|1;return (32-c|0)-1|0;} +function Ev(b){var c,d,e;Bf();if(!b)return 32;c=0;d=b<<16;if(d)c=16;else d=b;e=d<<8;if(!e)e=d;else c=c|8;d=e<<4;if(!d)d=e;else c=c|4;e=d<<2;if(!e)e=d;else c=c|2;if(e<<1)c=c|1;return (32-c|0)-1|0;} +function F2(){JV=H($rt_intcls());} +function Cj(){X.call(this);} +function I9(){var a=new Cj();HP(a);return a;} +function HP(a){Cb(a);} +function Bk(){C.call(this);} +var JX=null;var JY=null;var JZ=null;var J0=null;function R(){R=Ba(Bk);GE();} +function Ft(b){R();return b>=0&&b<=1114111?1:0;} +function Ec(b){R();return (b&64512)!=55296?0:1;} +function D2(b){R();return (b&64512)!=56320?0:1;} +function Ee(b,c){R();return ((b&1023)<<10|c&1023)+65536|0;} +function BQ(b){var c;R();c=b-65536|0;return (55296|c>>10&1023)&65535;} +function BJ(b){R();return (56320|b&1023)&65535;} +function DB(b){R();return C$(b)&65535;} +function C$(b){R();return FG(b).toUpperCase().charCodeAt(0);} +function Dc(b){R();return Fg(b);} +function Fg(b){var c,d,e,f,g,h,i,j;R();c=Dx();d=c.data;e=0;f=(d.length/2|0)-1|0;while(f>=e){g=(e+f|0)/2|0;h=g*2|0;i=d[h];j=I7(b,i);if(j>0)e=g+1|0;else{if(j>=0)return d[h+1|0];f=g-1|0;}}return (-1);} +function Bd(b,c){R();if(c>=2&&c<=36&&b%5B%9F%=J%AN%Eo%Is%Mw%Q{%U!\'Y&\'^*\'b.\'f2\'j6\'n:\'r>\'vB\'zF\'!#J\'&#N\'*#R\'.#V\'2#Z\'6#_\':#c\'>#g\'B#k\'F#o\'J#s\'N#w\'R#6)I:)M>)QB)UF)YJ)^N)bR)fV)jZ)n_)rc)vg)zk)!#o)&#s)*#w).#{)2#!+6#&+:#*+>#.+B#2+F#6+J#:+N#>+R#{R# !T#%&T#)*T#-.T#12T#56T#9:T#=>T#ABT#E6a# :a#%>a#)Ba#-Fa#1Ja#5Na#9Ra#=Va#AZa#E:s# >s#%Bs#)Fs#-Js#1Ns#5Rs#9Vs#=Zs#A_s#EZ:% _:%%c:%)g:%-k:%1o:%5s:%9w:%={:%A!<%E2F% 6F%%:F%)>F%-BF%1FF%5JF%9NF%=RF%AVF%EgP% kP%%oP%)sP%-wP%1{P%5!R%9&R%=*R%A.R%E>]% B]%%F]%)J]%-N]%1R]%5V]%9Z]%=_]%Ac]%Esg% wg%%{g%)!i%-&" ++"i%1*i%5.i%92i%=6i%A:i%EJs% Ns%%Rs%)Vs%-Zs%1_s%5cs%9gs%=ks%Aos%E!!\' &!\'%*!\').!\'-2!\'16!\'5:!\'9>!\'=B!\'AF!\'EV,\' Z,\'%_,\')c,\'-g,\'1k,\'5o,\'9s,\'=w,\'A{,\'E.8\' 28\'%68\'):8\'->8\'1B8\'5F8\'9J8\'=N8\'AR8\'EcB\' gB\'%kB\')oB\'-sB\'1wB\'5{B\'9!D\'=&D\'A*D\'E>L\' BL\'%FL\')JL\'-NL\'1RL\'5VL\'9ZL\'=_L\'AcL\'EsV\' wV\'%{V\')!X\'-&X\'1*X\'5.X\'92X\'=6X\'A:X\'EB_\' F_\'%J_\')N_\'-R_\'1V_\'5Z_\'9__\'=c_\'Ag_\'Esw\' ww\'%{w\')!y\'-&y\'1*y\'5.y\'92y\'=6y\'A:y\'EB!) F!)%J!))N!)-R!)1V!)5Z!)9_!)=c!)Ag!)Egi+ ki+%oi+)si+-wi+1{i+5!k+9&k+=*k+A.k+Eom+ sm+%wm+){m+-!o+1&o+5*o+9.o+=2o+A6o+E>,- B,-%F" ++",-)J,--N,-1R,-5V,-9Z,-=_,-Ac,-E>8- B8-%F8-)J8--N8-1R8-5V8-9Z8-=_8-Ac8-E{F- !H-%&H-)*H--.H-12H-56H-9:H-=>H-ABH-E_H- cH-%gH-)kH--oH-1sH-5wH-9{H-=!J-A&J-E!Z- &Z-%*Z-).Z--2Z-16Z-5:Z-9>Z-=BZ-AFZ-E2c- 6c-%:c-)>c--Bc-1Fc-5Jc-9Nc-=Rc-AVc-EJo- No-%Ro-)Vo--Zo-1_o-5co-9go-=ko-Aoo-E.q- 2q-%6q-):q-->q-1Bq-5Fq-9Jq-=Nq-ARq-E&4r *4r%.4r)24r-64r1:4r5>4r9B4r=F4rAJ4rE{or !qr%&qr)*qr-.qr12qr56qr9:qr=>qrABqrE&ur *ur%.ur)2ur-6ur1:ur5>ur9Bur=FurAJurE**t .*t%2*t)6*t-:*t1>*t5B*t9F*t=J*tAN*tEN,t R,t%V,t)Z,t-_,t1c,t5g,t9k,t=o,tAs,tE_" ++"4t c4t%g4t)k4t-o4t1s4t5w4t9{4t=!6tA&6tEgXt kXt%oXt)sXt-wXt1{Xt5!Zt9&Zt=*ZtA.ZtE{c@# !e@#%&e@#)*e@#-.e@#12e@#56e@#9:e@#=>e@#ABe@#Ece@#Ige@#Mke@#Qoe@#Use@#Ywe@#^{e@#b!g@#f&g@#j*g@#n.g@#r2g@#v6g@#z:g@#!#>g@#&#Bg@#*#Fg@#.#Jg@#2#Ng@#6#Rg@#:#Vg@#>#Zg@#B#_g@#F#cg@#J#gg@#N#kg@#R#*i@#I.i@#M2i@#Q6i@#U:i@#Y>i@#^Bi@#bFi@#fJi@#jNi@#nRi@#rVi@#vZi@#z_i@#!#ci@#&#gi@#*#ki@#.#oi@#2#si@#6#wi@#:#{i@#>#!k@#B#&k@#F#*k@#J#.k@#N#2k@#R#s&D# w&D#%{&D#)!(D#-&(D#1*(D#5.(D#92(D#=6(D#A:(D#E2.H# 6.H#%:.H#)>.H#-B.H#1F.H#5J.H#9N.H#=R.H#AV." ++"H#EwuH# {uH#%!wH#)&wH#-*wH#1.wH#52wH#96wH#=:wH#A>wH#Ew$J# {$J#%!&J#)&&J#-*&J#1.&J#52&J#96&J#=:&J#A>&J#E{*J# !,J#%&,J#)*,J#-.,J#12,J#56,J#9:,J#=>,J#AB,J#E_8J# c8J#%g8J#)k8J#-o8J#1s8J#5w8J#9{8J#=!:J#A&:J#E2RJ# 6RJ#%:RJ#)>RJ#-BRJ#1FRJ#5JRJ#9NRJ#=RRJ#AVRJ#ENqJ# RqJ#%VqJ#)ZqJ#-_qJ#1cqJ#5gqJ#9kqJ#=oqJ#AsqJ#E&}J# *}J#%.}J#)2}J#-6}J#1:}J#5>}J#9B}J#=F}J#AJ}J#Eg@L# k@L#%o@L#)s@L#-w@L#1{@L#5!BL#9&BL#=*BL#A.BL#EZJL# _JL#%cJL#)gJL#-kJL#1oJL#5sJL#9wJL#={JL#A!LL#ENTL# RTL#%VTL#)ZTL#-_TL#1cTL#5gTL#9kTL#=oTL#AsTL#E:{L# >{L#" ++"%B{L#)F{L#-J{L#1N{L#5R{L#9V{L#=Z{L#A_{L#ERkN# VkN#%ZkN#)_kN#-ckN#1gkN#5kkN#9okN#=skN#AwkN#E_$P# c$P#%g$P#)k$P#-o$P#1s$P#5w$P#9{$P#=!&P#A&&P#E.,P# 2,P#%6,P#):,P#->,P#1B,P#5F,P#9J,P#=N,P#AR,P#EFau# Jau#%Nau#)Rau#-Vau#1Zau#5_au#9cau#=gau#Akau#Eouu# suu#%wuu#){uu#-!wu#1&wu#5*wu#9.wu#=2wu#A6wu#EF0N% J0N%%N0N%)R0N%-V0N%1Z0N%5_0N%9c0N%=g0N%Ak0N%Eo0N% s0N%%w0N%){0N%-!2N%1&2N%5*2N%9.2N%=22N%A62N%E:2N% >2N%%B2N%)F2N%-J2N%1N2N%5R2N%9V2N%=Z2N%A_2N%Ec2N% g2N%%k2N%)o2N%-s2N%1w2N%5{2N%9!4N%=&4N%A*4N%E.4N% 24N%%64N%):4N%->" ++"4N%1B4N%5F4N%9J4N%=N4N%AR4N%ERJR% VJR%%ZJR%)_JR%-cJR%1gJR%5kJR%9oJR%=sJR%AwJR%E>qR% BqR%%FqR%)JqR%-NqR%1RqR%5VqR%9ZqR%=_qR%AcqR%E:FV% >FV%%BFV%)FFV%-JFV%1NFV%5RFV%9VFV%=ZFV%A_FV%E"};} +function BO(){Y.call(this);} +var J1=null;function F9(){F9=Ba(BO);G6();} +function D6(b){F9();return F().dR(b).d();} +function D_(b){var c,d,e;F9();if(Long_eq(b,Long_ZERO))return 64;c=0;d=Long_shru(b,32);if(Long_ne(d,Long_ZERO))c=32;else d=b;e=Long_shru(d,16);if(Long_eq(e,Long_ZERO))e=d;else c=c|16;d=Long_shru(e,8);if(Long_eq(d,Long_ZERO))d=e;else c=c|8;e=Long_shru(d,4);if(Long_eq(e,Long_ZERO))e=d;else c=c|4;d=Long_shru(e,2);if(Long_eq(d,Long_ZERO))d=e;else c=c|2;if(Long_ne(Long_shru(d,1),Long_ZERO))c=c|1;return (64-c|0)-1|0;} +function G6(){J1=H($rt_longcls());} +function Cn(){} +function Bo(){Q.call(this);} +function HU(){var a=new Bo();ER(a);return a;} +function O(a){var b=new Bo();C_(b,a);return b;} +function ER(a){Bn(a);} +function C_(a,b){CG(a,b);} +function M(){Bo.call(this);} +function J2(a){var b=new M();Z(b,a);return b;} +function Z(a,b){C_(a,b);} +function Df(){M.call(this);this.ej=null;} +function IW(a){var b=new Df();FJ(b,a);return b;} +function FJ(a,b){Z(a,F().a(B(8)).a(b).d());a.ej=b;} +function Bx(){C.call(this);} +var J3=null;var J4=null;var J5=null;var J6=null;function Fb(b,c){if(!c.J())b=F().a(b).a(B(9)).a(c).d();return b;} +function G_(b){var c;c=HQ();if(c.hasOwnProperty($rt_ustr(b)))b=(c[$rt_ustr(b)].value!==null?$rt_str(c[$rt_ustr(b)].value):null);return b;} +function IU(b,c){var d,e;if(c.J()){d=G_(b);e=d.d7(95);c=e<=0?B(10):d.bk(e+1|0);}return c;} +function HQ(){if(J3===null)J3=IQ();return J3;} +function Hv(){if(J4===null)J4=GU();return J4;} +function HN(b,c){return Gf(Hy(),b,c);} +function Hy(){if(J5===null)J5=GC();return J5;} +function Gf(b,c,d){var e,f,g;e=Fb(c,d);if(b.hasOwnProperty($rt_ustr(e)))f=b[$rt_ustr(e)];else if(b.hasOwnProperty($rt_ustr(c)))f=b[$rt_ustr(c)];else{g=b.root;f=g;}return (f.value!==null?$rt_str(f.value):null);} +function H$(b,c){var d,e,f;d=Hq();e=Fb(b,c);if(d.hasOwnProperty($rt_ustr(e)))f=d[$rt_ustr(e)];else if(d.hasOwnProperty($rt_ustr(b)))f=d[$rt_ustr(b)];else{f=d.root;f=f;}return f;} +function Hq(){if(J6===null)J6=Iz();return J6;} +function IQ(){return {"ksh":{"value":"ksh-Latn-DE"},"ksj":{"value":"ksj-Latn-ZZ"},"cch":{"value":"cch-Latn-NG"},"und-Khar":{"value":"pra-Khar-PK"},"gkn":{"value":"gkn-Latn-ZZ"},"ksr":{"value":"ksr-Latn-ZZ"},"und-Mani":{"value":"xmn-Mani-CN"},"gkp":{"value":"gkp-Latn-ZZ"},"xmf":{"value":"xmf-Geor-GE"},"ccp":{"value":"ccp-Cakm-BD"},"ted":{"value":"ted-Latn-ZZ"},"und-Mand":{"value":"myz-Mand-IR"},"ktb":{"value":"ktb-Ethi-ZZ"},"xmn":{"value":"xmn-Mani-CN"},"sd-Sind":{"value":"sd-Sind-IN"},"xmr":{"value":"xmr-Merc-SD"} +,"tem":{"value":"tem-Latn-SL"},"und-Mroo":{"value":"mro-Mroo-BD"},"teo":{"value":"teo-Latn-UG"},"tet":{"value":"tet-Latn-TL"},"ktm":{"value":"ktm-Latn-ZZ"},"glk":{"value":"glk-Arab-IR"},"kto":{"value":"kto-Latn-ZZ"},"und-Soyo":{"value":"cmg-Soyo-MN"},"xna":{"value":"xna-Narb-SA"},"tfi":{"value":"tfi-Latn-ZZ"},"kub":{"value":"kub-Latn-ZZ"},"kue":{"value":"kue-Latn-ZZ"},"kud":{"value":"kud-Latn-ZZ"},"xnr":{"value":"xnr-Deva-IN"},"ceb":{"value":"ceb-Latn-PH"},"kuj":{"value":"kuj-Latn-ZZ"},"kum":{"value":"kum-Cyrl-RU"} +,"kun":{"value":"kun-Latn-ZZ"},"gmm":{"value":"gmm-Latn-ZZ"},"kup":{"value":"kup-Latn-ZZ"},"kus":{"value":"kus-Latn-ZZ"},"gmv":{"value":"gmv-Ethi-ZZ"},"tgc":{"value":"tgc-Latn-ZZ"},"xog":{"value":"xog-Latn-UG"},"und-Arab-YT":{"value":"swb-Arab-YT"},"und-Latn-ET":{"value":"en-Latn-ET"},"xon":{"value":"xon-Latn-ZZ"},"ha-CM":{"value":"ha-Arab-CM"},"gnd":{"value":"gnd-Latn-ZZ"},"kvg":{"value":"kvg-Latn-ZZ"},"tgo":{"value":"tgo-Latn-ZZ"},"cfa":{"value":"cfa-Latn-ZZ"},"gng":{"value":"gng-Latn-ZZ"},"tgu":{"value": +"tgu-Latn-ZZ"},"und-Latn-GE":{"value":"ku-Latn-GE"},"kvr":{"value":"kvr-Latn-ID"},"kvx":{"value":"kvx-Arab-PK"},"und-Gujr":{"value":"gu-Gujr-IN"},"thl":{"value":"thl-Deva-NP"},"xpr":{"value":"xpr-Prti-IR"},"thq":{"value":"thq-Deva-NP"},"god":{"value":"god-Latn-ZZ"},"gof":{"value":"gof-Ethi-ZZ"},"kwj":{"value":"kwj-Latn-ZZ"},"ky-Arab":{"value":"ky-Arab-CN"},"thr":{"value":"thr-Deva-NP"},"goi":{"value":"goi-Latn-ZZ"},"cgg":{"value":"cgg-Latn-UG"},"kwo":{"value":"kwo-Latn-ZZ"},"gom":{"value":"gom-Deva-IN"},"gon": +{"value":"gon-Telu-IN"},"gos":{"value":"gos-Latn-NL"},"gor":{"value":"gor-Latn-ID"},"und-Latn-CY":{"value":"tr-Latn-CY"},"got":{"value":"got-Goth-UA"},"tif":{"value":"tif-Latn-ZZ"},"tig":{"value":"tig-Ethi-ER"},"kxa":{"value":"kxa-Latn-ZZ"},"kxc":{"value":"kxc-Ethi-ZZ"},"pag":{"value":"pag-Latn-PH"},"tik":{"value":"tik-Latn-ZZ"},"tim":{"value":"tim-Latn-ZZ"},"pal":{"value":"pal-Phli-IR"},"tio":{"value":"tio-Latn-ZZ"},"pam":{"value":"pam-Latn-PH"},"und-Marc":{"value":"bo-Marc-CN"},"pap":{"value":"pap-Latn-AW"} +,"und-Latn-CN":{"value":"za-Latn-CN"},"tiv":{"value":"tiv-Latn-NG"},"kxm":{"value":"kxm-Thai-TH"},"kxp":{"value":"kxp-Arab-PK"},"pau":{"value":"pau-Latn-PW"},"chk":{"value":"chk-Latn-FM"},"chm":{"value":"chm-Cyrl-RU"},"xrb":{"value":"xrb-Latn-ZZ"},"chp":{"value":"chp-Latn-CA"},"cho":{"value":"cho-Latn-US"},"kxw":{"value":"kxw-Latn-ZZ"},"und-Latn-DZ":{"value":"fr-Latn-DZ"},"chr":{"value":"chr-Cher-US"},"kxz":{"value":"kxz-Latn-ZZ"},"und-Batk":{"value":"bbc-Batk-ID"},"und-Bass":{"value":"bsq-Bass-LR"},"kye":{"value" +:"kye-Latn-ZZ"},"pbi":{"value":"pbi-Latn-ZZ"},"und-Deva-MU":{"value":"bho-Deva-MU"},"und-Sgnw":{"value":"ase-Sgnw-US"},"xsa":{"value":"xsa-Sarb-YE"},"kyx":{"value":"kyx-Latn-ZZ"},"xsi":{"value":"xsi-Latn-ZZ"},"pcd":{"value":"pcd-Latn-FR"},"und-Latn-AM":{"value":"ku-Latn-AM"},"xsm":{"value":"xsm-Latn-ZZ"},"tkl":{"value":"tkl-Latn-TK"},"und-Thai-CN":{"value":"lcp-Thai-CN"},"grb":{"value":"grb-Latn-ZZ"},"xsr":{"value":"xsr-Deva-NP"},"und-Latn-AF":{"value":"tk-Latn-AF"},"grc":{"value":"grc-Cprt-CY"},"tkr":{"value" +:"tkr-Latn-AZ"},"cja":{"value":"cja-Arab-KH"},"pcm":{"value":"pcm-Latn-NG"},"tkt":{"value":"tkt-Deva-NP"},"und-Olck":{"value":"sat-Olck-IN"},"kzr":{"value":"kzr-Latn-ZZ"},"cjm":{"value":"cjm-Cham-VN"},"grt":{"value":"grt-Beng-IN"},"und-Arab-TJ":{"value":"fa-Arab-TJ"},"und-Arab-TG":{"value":"apd-Arab-TG"},"und-Arab-TH":{"value":"mfa-Arab-TH"},"und-Deva-PK":{"value":"btv-Deva-PK"},"grw":{"value":"grw-Latn-ZZ"},"cjv":{"value":"cjv-Latn-ZZ"},"pdc":{"value":"pdc-Latn-US"},"tlf":{"value":"tlf-Latn-ZZ"},"und-Arab-TR": +{"value":"az-Arab-TR"},"ckb":{"value":"ckb-Arab-IQ"},"tly":{"value":"tly-Latn-AZ"},"pdt":{"value":"pdt-Latn-CA"},"tlx":{"value":"tlx-Latn-ZZ"},"ckl":{"value":"ckl-Latn-ZZ"},"cko":{"value":"cko-Latn-ZZ"},"gsw":{"value":"gsw-Latn-CH"},"ped":{"value":"ped-Latn-ZZ"},"tmh":{"value":"tmh-Latn-NE"},"cky":{"value":"cky-Latn-ZZ"},"kk-Arab":{"value":"kk-Arab-CN"},"und-Runr":{"value":"non-Runr-SE"},"cla":{"value":"cla-Latn-ZZ"},"peo":{"value":"peo-Xpeo-IR"},"tmy":{"value":"tmy-Latn-ZZ"},"pex":{"value":"pex-Latn-ZZ"},"ky-TR": +{"value":"ky-Latn-TR"},"tnh":{"value":"tnh-Latn-ZZ"},"guc":{"value":"guc-Latn-CO"},"gub":{"value":"gub-Latn-BR"},"gud":{"value":"gud-Latn-ZZ"},"pfl":{"value":"pfl-Latn-DE"},"cme":{"value":"cme-Latn-ZZ"},"cmg":{"value":"cmg-Soyo-MN"},"gur":{"value":"gur-Latn-GH"},"xwe":{"value":"xwe-Latn-ZZ"},"guw":{"value":"guw-Latn-ZZ"},"tof":{"value":"tof-Latn-ZZ"},"gux":{"value":"gux-Latn-ZZ"},"guz":{"value":"guz-Latn-KE"},"tog":{"value":"tog-Latn-MW"},"gvf":{"value":"gvf-Latn-ZZ"},"toq":{"value":"toq-Latn-ZZ"},"gvr":{"value" +:"gvr-Deva-NP"},"und-Guru":{"value":"pa-Guru-IN"},"gvs":{"value":"gvs-Latn-ZZ"},"tpi":{"value":"tpi-Latn-PG"},"tpm":{"value":"tpm-Latn-ZZ"},"und-Tfng":{"value":"zgh-Tfng-MA"},"gwc":{"value":"gwc-Arab-ZZ"},"und-Arab-PK":{"value":"ur-Arab-PK"},"phl":{"value":"phl-Arab-ZZ"},"und-Aghb":{"value":"lez-Aghb-RU"},"phn":{"value":"phn-Phnx-LB"},"gwi":{"value":"gwi-Latn-CA"},"tpz":{"value":"tpz-Latn-ZZ"},"cop":{"value":"cop-Copt-EG"},"gwt":{"value":"gwt-Arab-ZZ"},"lab":{"value":"lab-Lina-GR"},"lad":{"value":"lad-Hebr-IL"} +,"lah":{"value":"lah-Arab-PK"},"pil":{"value":"pil-Latn-ZZ"},"lag":{"value":"lag-Latn-TZ"},"tqo":{"value":"tqo-Latn-ZZ"},"laj":{"value":"laj-Latn-UG"},"pip":{"value":"pip-Latn-ZZ"},"und-Khmr":{"value":"km-Khmr-KH"},"las":{"value":"las-Latn-ZZ"},"sd-Deva":{"value":"sd-Deva-IN"},"und-Khoj":{"value":"sd-Khoj-IN"},"cps":{"value":"cps-Latn-PH"},"kk-AF":{"value":"kk-Arab-AF"},"und-Arab-MU":{"value":"ur-Arab-MU"},"lbe":{"value":"lbe-Cyrl-RU"},"und-Arab-NG":{"value":"ha-Arab-NG"},"gyi":{"value":"gyi-Latn-ZZ"},"tru": +{"value":"tru-Latn-TR"},"trw":{"value":"trw-Arab-ZZ"},"trv":{"value":"trv-Latn-TW"},"lbu":{"value":"lbu-Latn-ZZ"},"lbw":{"value":"lbw-Latn-ID"},"tsd":{"value":"tsd-Grek-GR"},"tsf":{"value":"tsf-Deva-NP"},"pka":{"value":"pka-Brah-IN"},"tsg":{"value":"tsg-Latn-PH"},"tsj":{"value":"tsj-Tibt-BT"},"und-Deva-FJ":{"value":"hif-Deva-FJ"},"pko":{"value":"pko-Latn-KE"},"lcm":{"value":"lcm-Latn-ZZ"},"crh":{"value":"crh-Cyrl-UA"},"lcp":{"value":"lcp-Thai-CN"},"tsw":{"value":"tsw-Latn-ZZ"},"crj":{"value":"crj-Cans-CA"}, +"crl":{"value":"crl-Cans-CA"},"und-Arab-MN":{"value":"kk-Arab-MN"},"crk":{"value":"crk-Cans-CA"},"crm":{"value":"crm-Cans-CA"},"und-Arab-MM":{"value":"rhg-Arab-MM"},"pla":{"value":"pla-Latn-ZZ"},"tte":{"value":"tte-Latn-ZZ"},"crs":{"value":"crs-Latn-SC"},"ttd":{"value":"ttd-Latn-ZZ"},"ldb":{"value":"ldb-Latn-ZZ"},"ttj":{"value":"ttj-Latn-UG"},"kk-CN":{"value":"kk-Arab-CN"},"und-Yiii":{"value":"ii-Yiii-CN"},"tts":{"value":"tts-Thai-TH"},"csb":{"value":"csb-Latn-PL"},"ttr":{"value":"ttr-Latn-ZZ"},"ttt":{"value" +:"ttt-Latn-AZ"},"csw":{"value":"csw-Cans-CA"},"tuh":{"value":"tuh-Latn-ZZ"},"led":{"value":"led-Latn-ZZ"},"tul":{"value":"tul-Latn-ZZ"},"lee":{"value":"lee-Latn-ZZ"},"tum":{"value":"tum-Latn-MW"},"und-Arab-KH":{"value":"cja-Arab-KH"},"tuq":{"value":"tuq-Latn-ZZ"},"ctd":{"value":"ctd-Pauc-MM"},"lem":{"value":"lem-Latn-ZZ"},"lep":{"value":"lep-Lepc-IN"},"pms":{"value":"pms-Latn-IT"},"leq":{"value":"leq-Latn-ZZ"},"und-Pauc":{"value":"ctd-Pauc-MM"},"und-Sogo":{"value":"sog-Sogo-UZ"},"leu":{"value":"leu-Latn-ZZ"} +,"lez":{"value":"lez-Cyrl-RU"},"tvd":{"value":"tvd-Latn-ZZ"},"mn-CN":{"value":"mn-Mong-CN"},"sr-TR":{"value":"sr-Latn-TR"},"png":{"value":"png-Latn-ZZ"},"tvl":{"value":"tvl-Latn-TV"},"und-Brah":{"value":"pka-Brah-IN"},"und-Brai":{"value":"fr-Brai-FR"},"pnn":{"value":"pnn-Latn-ZZ"},"tvu":{"value":"tvu-Latn-ZZ"},"pnt":{"value":"pnt-Grek-GR"},"uz-CN":{"value":"uz-Cyrl-CN"},"ha-SD":{"value":"ha-Arab-SD"},"twh":{"value":"twh-Latn-ZZ"},"und-Takr":{"value":"doi-Takr-IN"},"lgg":{"value":"lgg-Latn-ZZ"},"pon":{"value" +:"pon-Latn-FM"},"twq":{"value":"twq-Latn-NE"},"und-Arab-ID":{"value":"ms-Arab-ID"},"und-Arab-IN":{"value":"ur-Arab-IN"},"txg":{"value":"txg-Tang-CN"},"yam":{"value":"yam-Latn-ZZ"},"und-Talu":{"value":"khb-Talu-CN"},"yao":{"value":"yao-Latn-MZ"},"yap":{"value":"yap-Latn-FM"},"yas":{"value":"yas-Latn-ZZ"},"yat":{"value":"yat-Latn-ZZ"},"ppo":{"value":"ppo-Latn-ZZ"},"yav":{"value":"yav-Latn-CM"},"yay":{"value":"yay-Latn-ZZ"},"yaz":{"value":"yaz-Latn-ZZ"},"und-Tale":{"value":"tdd-Tale-CN"},"ybb":{"value":"ybb-Latn-CM"} +,"yba":{"value":"yba-Latn-ZZ"},"tya":{"value":"tya-Latn-ZZ"},"lia":{"value":"lia-Latn-ZZ"},"lid":{"value":"lid-Latn-ZZ"},"und-Latn-TW":{"value":"trv-Latn-TW"},"lif":{"value":"lif-Deva-NP"},"lih":{"value":"lih-Latn-ZZ"},"lig":{"value":"lig-Latn-ZZ"},"lij":{"value":"lij-Latn-IT"},"hag":{"value":"hag-Latn-ZZ"},"und-Latn-TN":{"value":"fr-Latn-TN"},"tyv":{"value":"tyv-Cyrl-RU"},"yby":{"value":"yby-Latn-ZZ"},"und-Arab-GB":{"value":"ks-Arab-GB"},"hak":{"value":"hak-Hans-CN"},"und-Taml":{"value":"ta-Taml-IN"},"ham": +{"value":"ham-Latn-ZZ"},"lis":{"value":"lis-Lisu-CN"},"und-Latn-SY":{"value":"fr-Latn-SY"},"ky-Latn":{"value":"ky-Latn-TR"},"pra":{"value":"pra-Khar-PK"},"haw":{"value":"haw-Latn-US"},"haz":{"value":"haz-Arab-AF"},"ku-LB":{"value":"ku-Arab-LB"},"prd":{"value":"prd-Arab-IR"},"prg":{"value":"prg-Latn-001"},"tzm":{"value":"tzm-Latn-MA"},"hbb":{"value":"hbb-Latn-ZZ"},"und-Latn-UA":{"value":"pl-Latn-UA"},"ljp":{"value":"ljp-Latn-ID"},"und-Tang":{"value":"txg-Tang-CN"},"yue-Hans":{"value":"yue-Hans-CN"},"und-Latn-RU": +{"value":"krl-Latn-RU"},"lki":{"value":"lki-Arab-IR"},"pss":{"value":"pss-Latn-ZZ"},"lkt":{"value":"lkt-Latn-US"},"sr-RO":{"value":"sr-Latn-RO"},"und-Arab-CN":{"value":"ug-Arab-CN"},"lle":{"value":"lle-Latn-ZZ"},"und-Cyrl":{"value":"ru-Cyrl-RU"},"uz-AF":{"value":"uz-Arab-AF"},"yer":{"value":"yer-Latn-ZZ"},"und-Beng":{"value":"bn-Beng-BD"},"ptp":{"value":"ptp-Latn-ZZ"},"lln":{"value":"lln-Latn-ZZ"},"sr-RU":{"value":"sr-Latn-RU"},"hdy":{"value":"hdy-Ethi-ZZ"},"unr-NP":{"value":"unr-Deva-NP"},"und-Mend":{"value" +:"men-Mend-SL"},"lmn":{"value":"lmn-Telu-IN"},"lmp":{"value":"lmp-Latn-ZZ"},"lmo":{"value":"lmo-Latn-IT"},"puu":{"value":"puu-Latn-GA"},"und-Arab-CC":{"value":"ms-Arab-CC"},"pal-Phlp":{"value":"pal-Phlp-CN"},"ygr":{"value":"ygr-Latn-ZZ"},"ygw":{"value":"ygw-Latn-ZZ"},"lns":{"value":"lns-Latn-ZZ"},"ky-CN":{"value":"ky-Arab-CN"},"lnu":{"value":"lnu-Latn-ZZ"},"pwa":{"value":"pwa-Latn-ZZ"},"und-Mahj":{"value":"hi-Mahj-IN"},"rif-NL":{"value":"rif-Latn-NL"},"loj":{"value":"loj-Latn-ZZ"},"lol":{"value":"lol-Latn-CD"} +,"lok":{"value":"lok-Latn-ZZ"},"lor":{"value":"lor-Latn-ZZ"},"und-Sora":{"value":"srb-Sora-IN"},"los":{"value":"los-Latn-ZZ"},"loz":{"value":"loz-Latn-ZM"},"und-202":{"value":"en-Latn-NG"},"und-Latn-MR":{"value":"fr-Latn-MR"},"hhy":{"value":"hhy-Latn-ZZ"},"hia":{"value":"hia-Latn-ZZ"},"hif":{"value":"hif-Latn-FJ"},"dad":{"value":"dad-Latn-ZZ"},"hih":{"value":"hih-Latn-ZZ"},"hig":{"value":"hig-Latn-ZZ"},"daf":{"value":"daf-Latn-ZZ"},"ubu":{"value":"ubu-Latn-ZZ"},"dah":{"value":"dah-Latn-ZZ"},"hil":{"value":"hil-Latn-PH"} +,"dag":{"value":"dag-Latn-ZZ"},"und-Mero":{"value":"xmr-Mero-SD"},"dak":{"value":"dak-Latn-US"},"und-Merc":{"value":"xmr-Merc-SD"},"dar":{"value":"dar-Cyrl-RU"},"dav":{"value":"dav-Latn-KE"},"lrc":{"value":"lrc-Arab-IR"},"yko":{"value":"yko-Latn-ZZ"},"und-Latn-MK":{"value":"sq-Latn-MK"},"und-Latn-MM":{"value":"kac-Latn-MM"},"dbd":{"value":"dbd-Latn-ZZ"},"und-Latn-MO":{"value":"pt-Latn-MO"},"und-Latn-MA":{"value":"fr-Latn-MA"},"und-Bali":{"value":"ban-Bali-ID"},"und-Tavt":{"value":"blt-Tavt-VN"},"dbq":{"value" +:"dbq-Latn-ZZ"},"yle":{"value":"yle-Latn-ZZ"},"ylg":{"value":"ylg-Latn-ZZ"},"und-Maka":{"value":"mak-Maka-ID"},"yll":{"value":"yll-Latn-ZZ"},"udm":{"value":"udm-Cyrl-RU"},"dcc":{"value":"dcc-Arab-IN"},"yml":{"value":"yml-Latn-ZZ"},"hla":{"value":"hla-Latn-ZZ"},"und-Latn-IR":{"value":"tk-Latn-IR"},"ltg":{"value":"ltg-Latn-LV"},"und-Latn-KM":{"value":"fr-Latn-KM"},"ddn":{"value":"ddn-Latn-ZZ"},"hlu":{"value":"hlu-Hluw-TR"},"lua":{"value":"lua-Latn-CD"},"und-Bamu":{"value":"bax-Bamu-CM"},"hmd":{"value":"hmd-Plrd-CN"} +,"ded":{"value":"ded-Latn-ZZ"},"luo":{"value":"luo-Latn-KE"},"und-142":{"value":"zh-Hans-CN"},"und-143":{"value":"uz-Latn-UZ"},"den":{"value":"den-Latn-CA"},"und-Gran":{"value":"sa-Gran-IN"},"hmt":{"value":"hmt-Latn-ZZ"},"uga":{"value":"uga-Ugar-SY"},"luz":{"value":"luz-Arab-IR"},"luy":{"value":"luy-Latn-KE"},"und-145":{"value":"ar-Arab-SA"},"und-Cakm":{"value":"ccp-Cakm-BD"},"und-Dupl":{"value":"fr-Dupl-FR"},"yon":{"value":"yon-Latn-ZZ"},"ug-MN":{"value":"ug-Cyrl-MN"},"hne":{"value":"hne-Deva-IN"},"hnd":{"value" +:"hnd-Arab-PK"},"hnj":{"value":"hnj-Hmng-LA"},"hno":{"value":"hno-Arab-PK"},"hnn":{"value":"hnn-Latn-PH"},"ug-KZ":{"value":"ug-Cyrl-KZ"},"und-154":{"value":"en-Latn-GB"},"und-155":{"value":"de-Latn-DE"},"und-150":{"value":"ru-Cyrl-RU"},"und-151":{"value":"ru-Cyrl-RU"},"und-Sylo":{"value":"syl-Sylo-BD"},"hoc":{"value":"hoc-Deva-IN"},"dga":{"value":"dga-Latn-ZZ"},"lwl":{"value":"lwl-Thai-TH"},"und-Ital":{"value":"ett-Ital-IT"},"hoj":{"value":"hoj-Deva-IN"},"dgh":{"value":"dgh-Latn-ZZ"},"dgi":{"value":"dgi-Latn-ZZ"} +,"dgl":{"value":"dgl-Arab-ZZ"},"hot":{"value":"hot-Latn-ZZ"},"dgr":{"value":"dgr-Latn-CA"},"dgz":{"value":"dgz-Latn-ZZ"},"yrb":{"value":"yrb-Latn-ZZ"},"yre":{"value":"yre-Latn-ZZ"},"und-Lyci":{"value":"xlc-Lyci-TR"},"und-Cans":{"value":"cr-Cans-CA"},"und-Hluw":{"value":"hlu-Hluw-TR"},"und-Nand":{"value":"sa-Nand-IN"},"yrl":{"value":"yrl-Latn-BR"},"dia":{"value":"dia-Latn-ZZ"},"und-Grek":{"value":"el-Grek-GR"},"und-Mong":{"value":"mn-Mong-CN"},"und-Lydi":{"value":"xld-Lydi-TR"},"yss":{"value":"yss-Latn-ZZ"}, +"und-Newa":{"value":"new-Newa-NP"},"lzh":{"value":"lzh-Hans-CN"},"dje":{"value":"dje-Latn-NE"},"lzz":{"value":"lzz-Latn-TR"},"uli":{"value":"uli-Latn-FM"},"hsb":{"value":"hsb-Latn-DE"},"und-Xsux":{"value":"akk-Xsux-IQ"},"hsn":{"value":"hsn-Hans-CN"},"und-Cari":{"value":"xcr-Cari-TR"},"und-Syrc":{"value":"syr-Syrc-IQ"},"yua":{"value":"yua-Latn-MX"},"yue":{"value":"yue-Hant-HK"},"umb":{"value":"umb-Latn-AO"},"yuj":{"value":"yuj-Latn-ZZ"},"yut":{"value":"yut-Latn-ZZ"},"yuw":{"value":"yuw-Latn-ZZ"},"und-Bopo":{"value" +:"zh-Bopo-TW"},"und":{"value":"en-Latn-US"},"und-Egyp":{"value":"egy-Egyp-EG"},"und-Tglg":{"value":"fil-Tglg-PH"},"unr":{"value":"unr-Beng-IN"},"hui":{"value":"hui-Latn-ZZ"},"und-Elba":{"value":"sq-Elba-AL"},"unx":{"value":"unx-Beng-IN"},"und-Narb":{"value":"xna-Narb-SA"},"pa-PK":{"value":"pa-Arab-PK"},"und-Hebr-CA":{"value":"yi-Hebr-CA"},"und-Geor":{"value":"ka-Geor-GE"},"und-Shrd":{"value":"sa-Shrd-IN"},"dnj":{"value":"dnj-Latn-CI"},"dob":{"value":"dob-Latn-ZZ"},"und-Mymr-TH":{"value":"mnw-Mymr-TH"},"doi": +{"value":"doi-Arab-IN"},"dop":{"value":"dop-Latn-ZZ"},"und-Sund":{"value":"su-Sund-ID"},"dow":{"value":"dow-Latn-ZZ"},"sr-ME":{"value":"sr-Latn-ME"},"und-Hung":{"value":"hu-Hung-HU"},"mad":{"value":"mad-Latn-ID"},"mag":{"value":"mag-Deva-IN"},"maf":{"value":"maf-Latn-CM"},"mai":{"value":"mai-Deva-IN"},"mak":{"value":"mak-Latn-ID"},"man":{"value":"man-Latn-GM"},"mas":{"value":"mas-Latn-KE"},"maw":{"value":"maw-Latn-ZZ"},"maz":{"value":"maz-Latn-MX"},"uri":{"value":"uri-Latn-ZZ"},"mbh":{"value":"mbh-Latn-ZZ"} +,"urt":{"value":"urt-Latn-ZZ"},"mbo":{"value":"mbo-Latn-ZZ"},"urw":{"value":"urw-Latn-ZZ"},"mbq":{"value":"mbq-Latn-ZZ"},"mbu":{"value":"mbu-Latn-ZZ"},"und-Hebr-GB":{"value":"yi-Hebr-GB"},"usa":{"value":"usa-Latn-ZZ"},"mbw":{"value":"mbw-Latn-ZZ"},"mci":{"value":"mci-Latn-ZZ"},"dri":{"value":"dri-Latn-ZZ"},"mcq":{"value":"mcq-Latn-ZZ"},"mcp":{"value":"mcp-Latn-ZZ"},"mcr":{"value":"mcr-Latn-ZZ"},"mcu":{"value":"mcu-Latn-ZZ"},"drs":{"value":"drs-Ethi-ZZ"},"mda":{"value":"mda-Latn-ZZ"},"mdf":{"value":"mdf-Cyrl-RU"} +,"mde":{"value":"mde-Arab-ZZ"},"mdh":{"value":"mdh-Latn-PH"},"dsb":{"value":"dsb-Latn-DE"},"mdj":{"value":"mdj-Latn-ZZ"},"utr":{"value":"utr-Latn-ZZ"},"mdr":{"value":"mdr-Latn-ID"},"mdx":{"value":"mdx-Ethi-ZZ"},"mee":{"value":"mee-Latn-ZZ"},"med":{"value":"med-Latn-ZZ"},"mek":{"value":"mek-Latn-ZZ"},"men":{"value":"men-Latn-SL"},"az-RU":{"value":"az-Cyrl-RU"},"mis-Medf":{"value":"mis-Medf-NG"},"mer":{"value":"mer-Latn-KE"},"dtm":{"value":"dtm-Latn-ML"},"meu":{"value":"meu-Latn-ZZ"},"met":{"value":"met-Latn-ZZ"} +,"dtp":{"value":"dtp-Latn-MY"},"dts":{"value":"dts-Latn-ZZ"},"uvh":{"value":"uvh-Latn-ZZ"},"dty":{"value":"dty-Deva-NP"},"mfa":{"value":"mfa-Arab-TH"},"uvl":{"value":"uvl-Latn-ZZ"},"mfe":{"value":"mfe-Latn-MU"},"dua":{"value":"dua-Latn-CM"},"dud":{"value":"dud-Latn-ZZ"},"duc":{"value":"duc-Latn-ZZ"},"mfn":{"value":"mfn-Latn-ZZ"},"dug":{"value":"dug-Latn-ZZ"},"mfo":{"value":"mfo-Latn-ZZ"},"mfq":{"value":"mfq-Latn-ZZ"},"und-Phag":{"value":"lzh-Phag-CN"},"dva":{"value":"dva-Latn-ZZ"},"mgh":{"value":"mgh-Latn-MZ"} +,"mgl":{"value":"mgl-Latn-ZZ"},"mgo":{"value":"mgo-Latn-CM"},"mgp":{"value":"mgp-Deva-NP"},"mgy":{"value":"mgy-Latn-TZ"},"zag":{"value":"zag-Latn-SD"},"mhi":{"value":"mhi-Latn-ZZ"},"mhl":{"value":"mhl-Latn-ZZ"},"dww":{"value":"dww-Latn-ZZ"},"mif":{"value":"mif-Latn-ZZ"},"und-Mymr-IN":{"value":"kht-Mymr-IN"},"min":{"value":"min-Latn-ID"},"mis":{"value":"mis-Hatr-IQ"},"ian":{"value":"ian-Latn-ZZ"},"miw":{"value":"miw-Latn-ZZ"},"iar":{"value":"iar-Latn-ZZ"},"uz-Arab":{"value":"uz-Arab-AF"},"ibb":{"value":"ibb-Latn-NG"} +,"iba":{"value":"iba-Latn-MY"},"dyo":{"value":"dyo-Latn-SN"},"dyu":{"value":"dyu-Latn-BF"},"iby":{"value":"iby-Latn-ZZ"},"zdj":{"value":"zdj-Arab-KM"},"ica":{"value":"ica-Latn-ZZ"},"mki":{"value":"mki-Arab-ZZ"},"und-Wcho":{"value":"nnp-Wcho-IN"},"ich":{"value":"ich-Latn-ZZ"},"mkl":{"value":"mkl-Latn-ZZ"},"dzg":{"value":"dzg-Latn-ZZ"},"mkp":{"value":"mkp-Latn-ZZ"},"zea":{"value":"zea-Latn-NL"},"mkw":{"value":"mkw-Latn-ZZ"},"mle":{"value":"mle-Latn-ZZ"},"idd":{"value":"idd-Latn-ZZ"},"idi":{"value":"idi-Latn-ZZ"} +,"lif-Limb":{"value":"lif-Limb-IN"},"mlp":{"value":"mlp-Latn-ZZ"},"mls":{"value":"mls-Latn-SD"},"idu":{"value":"idu-Latn-ZZ"},"quc":{"value":"quc-Latn-GT"},"qug":{"value":"qug-Latn-EC"},"und-Jamo":{"value":"ko-Jamo-KR"},"mmo":{"value":"mmo-Latn-ZZ"},"mmu":{"value":"mmu-Latn-ZZ"},"mmx":{"value":"mmx-Latn-ZZ"},"zgh":{"value":"zgh-Tfng-MA"},"mna":{"value":"mna-Latn-ZZ"},"mnf":{"value":"mnf-Latn-ZZ"},"ife":{"value":"ife-Latn-TG"},"mni":{"value":"mni-Beng-IN"},"mnw":{"value":"mnw-Mymr-MM"},"moa":{"value":"moa-Latn-ZZ"} +,"moe":{"value":"moe-Latn-CA"},"igb":{"value":"igb-Latn-ZZ"},"ige":{"value":"ige-Latn-ZZ"},"moh":{"value":"moh-Latn-CA"},"und-Hebr-SE":{"value":"yi-Hebr-SE"},"zhx":{"value":"zhx-Nshu-CN"},"mos":{"value":"mos-Latn-BF"},"und-Shaw":{"value":"en-Shaw-GB"},"zia":{"value":"zia-Latn-ZZ"},"mox":{"value":"mox-Latn-ZZ"},"vag":{"value":"vag-Latn-ZZ"},"vai":{"value":"vai-Vaii-LR"},"van":{"value":"van-Latn-ZZ"},"mpp":{"value":"mpp-Latn-ZZ"},"mpt":{"value":"mpt-Latn-ZZ"},"mps":{"value":"mps-Latn-ZZ"},"mpx":{"value":"mpx-Latn-ZZ"} +,"und-Hebr-US":{"value":"yi-Hebr-US"},"mql":{"value":"mql-Latn-ZZ"},"und-Hebr-UA":{"value":"yi-Hebr-UA"},"mrd":{"value":"mrd-Deva-NP"},"mrj":{"value":"mrj-Cyrl-RU"},"ijj":{"value":"ijj-Latn-ZZ"},"mro":{"value":"mro-Mroo-BD"},"und-Modi":{"value":"mr-Modi-IN"},"ebu":{"value":"ebu-Latn-KE"},"zlm":{"value":"zlm-Latn-TG"},"arc-Palm":{"value":"arc-Palm-SY"},"ikk":{"value":"ikk-Latn-ZZ"},"ikt":{"value":"ikt-Latn-CA"},"ikw":{"value":"ikw-Latn-ZZ"},"vec":{"value":"vec-Latn-IT"},"ikx":{"value":"ikx-Latn-ZZ"},"zmi":{"value" +:"zmi-Latn-MY"},"mtc":{"value":"mtc-Latn-ZZ"},"mtf":{"value":"mtf-Latn-ZZ"},"vep":{"value":"vep-Latn-RU"},"zh-Bopo":{"value":"zh-Bopo-TW"},"mti":{"value":"mti-Latn-ZZ"},"und-Ethi":{"value":"am-Ethi-ET"},"mtr":{"value":"mtr-Deva-IN"},"und-Thai-LA":{"value":"kdt-Thai-LA"},"ilo":{"value":"ilo-Latn-PH"},"zne":{"value":"zne-Latn-ZZ"},"mua":{"value":"mua-Latn-CM"},"und-Thai-KH":{"value":"kdt-Thai-KH"},"imo":{"value":"imo-Latn-ZZ"},"mus":{"value":"mus-Latn-US"},"mur":{"value":"mur-Latn-ZZ"},"mva":{"value":"mva-Latn-ZZ"} +,"inh":{"value":"inh-Cyrl-RU"},"mvn":{"value":"mvn-Latn-ZZ"},"efi":{"value":"efi-Latn-NG"},"mvy":{"value":"mvy-Arab-PK"},"und-Java":{"value":"jv-Java-ID"},"mwk":{"value":"mwk-Latn-ML"},"mwr":{"value":"mwr-Deva-IN"},"und-021":{"value":"en-Latn-US"},"egl":{"value":"egl-Latn-IT"},"mww":{"value":"mww-Hmnp-US"},"mwv":{"value":"mwv-Latn-ID"},"iou":{"value":"iou-Latn-ZZ"},"und-029":{"value":"es-Latn-CU"},"vic":{"value":"vic-Latn-SX"},"egy":{"value":"egy-Egyp-EG"},"und-Ugar":{"value":"uga-Ugar-SY"},"mxc":{"value":"mxc-Latn-ZW"} +,"raj":{"value":"raj-Deva-IN"},"rai":{"value":"rai-Latn-ZZ"},"rao":{"value":"rao-Latn-ZZ"},"viv":{"value":"viv-Latn-ZZ"},"mxm":{"value":"mxm-Latn-ZZ"},"und-034":{"value":"hi-Deva-IN"},"und-030":{"value":"zh-Hans-CN"},"und-039":{"value":"it-Latn-IT"},"und-035":{"value":"id-Latn-ID"},"ug-Cyrl":{"value":"ug-Cyrl-KZ"},"myk":{"value":"myk-Latn-ZZ"},"mym":{"value":"mym-Ethi-ZZ"},"aai":{"value":"aai-Latn-ZZ"},"aak":{"value":"aak-Latn-ZZ"},"myw":{"value":"myw-Latn-ZZ"},"myv":{"value":"myv-Cyrl-RU"},"myx":{"value":"myx-Latn-UG"} +,"myz":{"value":"myz-Mand-IR"},"und-Sinh":{"value":"si-Sinh-LK"},"und-Sind":{"value":"sd-Sind-IN"},"aau":{"value":"aau-Latn-ZZ"},"rcf":{"value":"rcf-Latn-RE"},"und-Orkh":{"value":"otk-Orkh-MN"},"mzk":{"value":"mzk-Latn-ZZ"},"mzn":{"value":"mzn-Arab-IR"},"iri":{"value":"iri-Latn-ZZ"},"mzm":{"value":"mzm-Latn-ZZ"},"mzp":{"value":"mzp-Latn-ZZ"},"und-053":{"value":"en-Latn-AU"},"abi":{"value":"abi-Latn-ZZ"},"und-054":{"value":"en-Latn-PG"},"mzw":{"value":"mzw-Latn-ZZ"},"mzz":{"value":"mzz-Latn-ZZ"},"abr":{"value" +:"abr-Latn-GH"},"abq":{"value":"abq-Cyrl-ZZ"},"abt":{"value":"abt-Latn-ZZ"},"und-057":{"value":"en-Latn-GU"},"aby":{"value":"aby-Latn-ZZ"},"eka":{"value":"eka-Latn-ZZ"},"vls":{"value":"vls-Latn-BE"},"ace":{"value":"ace-Latn-ID"},"acd":{"value":"acd-Latn-ZZ"},"ach":{"value":"ach-Latn-UG"},"vmf":{"value":"vmf-Latn-DE"},"eky":{"value":"eky-Kali-MM"},"rej":{"value":"rej-Latn-ID"},"rel":{"value":"rel-Latn-ZZ"},"ada":{"value":"ada-Latn-GH"},"res":{"value":"res-Latn-ZZ"},"vmw":{"value":"vmw-Latn-MZ"},"ade":{"value" +:"ade-Latn-ZZ"},"adj":{"value":"adj-Latn-ZZ"},"und-Hira":{"value":"ja-Hira-JP"},"adz":{"value":"adz-Latn-ZZ"},"ady":{"value":"ady-Cyrl-RU"},"ema":{"value":"ema-Latn-ZZ"},"und-Deva":{"value":"hi-Deva-IN"},"aeb":{"value":"aeb-Arab-TN"},"emi":{"value":"emi-Latn-ZZ"},"und-009":{"value":"en-Latn-AU"},"aey":{"value":"aey-Latn-ZZ"},"und-002":{"value":"en-Latn-NG"},"und-003":{"value":"en-Latn-US"},"und-005":{"value":"pt-Latn-BR"},"rgn":{"value":"rgn-Latn-IT"},"vot":{"value":"vot-Latn-RU"},"enn":{"value":"enn-Latn-ZZ"} +,"enq":{"value":"enq-Latn-ZZ"},"und-011":{"value":"en-Latn-NG"},"rhg":{"value":"rhg-Arab-MM"},"und-017":{"value":"sw-Latn-CD"},"und-018":{"value":"en-Latn-ZA"},"und-019":{"value":"en-Latn-US"},"und-013":{"value":"es-Latn-MX"},"und-014":{"value":"sw-Latn-TZ"},"und-015":{"value":"ar-Arab-EG"},"agc":{"value":"agc-Latn-ZZ"},"und-Zanb":{"value":"cmg-Zanb-MN"},"iwm":{"value":"iwm-Latn-ZZ"},"agd":{"value":"agd-Latn-ZZ"},"agg":{"value":"agg-Latn-ZZ"},"iws":{"value":"iws-Latn-ZZ"},"agm":{"value":"agm-Latn-ZZ"},"ago": +{"value":"ago-Latn-ZZ"},"agq":{"value":"agq-Latn-CM"},"ria":{"value":"ria-Latn-IN"},"rif":{"value":"rif-Tfng-MA"},"nac":{"value":"nac-Latn-ZZ"},"naf":{"value":"naf-Latn-ZZ"},"nak":{"value":"nak-Latn-ZZ"},"nan":{"value":"nan-Hans-CN"},"aha":{"value":"aha-Latn-ZZ"},"nap":{"value":"nap-Latn-IT"},"naq":{"value":"naq-Latn-NA"},"zza":{"value":"zza-Latn-TR"},"nas":{"value":"nas-Latn-ZZ"},"ahl":{"value":"ahl-Latn-ZZ"},"en-Shaw":{"value":"en-Shaw-GB"},"und-Copt":{"value":"cop-Copt-EG"},"aho":{"value":"aho-Ahom-IN"}, +"vro":{"value":"vro-Latn-EE"},"rjs":{"value":"rjs-Deva-NP"},"nca":{"value":"nca-Latn-ZZ"},"ncf":{"value":"ncf-Latn-ZZ"},"nce":{"value":"nce-Latn-ZZ"},"nch":{"value":"nch-Latn-MX"},"izh":{"value":"izh-Latn-RU"},"izi":{"value":"izi-Latn-ZZ"},"rkt":{"value":"rkt-Beng-BD"},"nco":{"value":"nco-Latn-ZZ"},"eri":{"value":"eri-Latn-ZZ"},"ajg":{"value":"ajg-Latn-ZZ"},"ncu":{"value":"ncu-Latn-ZZ"},"ndc":{"value":"ndc-Latn-MZ"},"esg":{"value":"esg-Gonm-IN"},"nds":{"value":"nds-Latn-DE"},"akk":{"value":"akk-Xsux-IQ"},"esu": +{"value":"esu-Latn-US"},"neb":{"value":"neb-Latn-ZZ"},"rmf":{"value":"rmf-Latn-FI"},"und-061":{"value":"sm-Latn-WS"},"und-Limb":{"value":"lif-Limb-IN"},"vun":{"value":"vun-Latn-TZ"},"ff-Adlm":{"value":"ff-Adlm-GN"},"vut":{"value":"vut-Latn-ZZ"},"rmo":{"value":"rmo-Latn-CH"},"ala":{"value":"ala-Latn-ZZ"},"rmt":{"value":"rmt-Arab-IR"},"rmu":{"value":"rmu-Latn-SE"},"ali":{"value":"ali-Latn-ZZ"},"nex":{"value":"nex-Latn-ZZ"},"new":{"value":"new-Deva-NP"},"aln":{"value":"aln-Latn-XK"},"etr":{"value":"etr-Latn-ZZ"} +,"und-Rohg":{"value":"rhg-Rohg-MM"},"ett":{"value":"ett-Ital-IT"},"rna":{"value":"rna-Latn-ZZ"},"etu":{"value":"etu-Latn-ZZ"},"alt":{"value":"alt-Cyrl-RU"},"etx":{"value":"etx-Latn-ZZ"},"rng":{"value":"rng-Latn-MZ"},"und-Linb":{"value":"grc-Linb-GR"},"und-Lina":{"value":"lab-Lina-GR"},"und-Jpan":{"value":"ja-Jpan-JP"},"man-GN":{"value":"man-Nkoo-GN"},"nfr":{"value":"nfr-Latn-ZZ"},"amm":{"value":"amm-Latn-ZZ"},"und-Arab":{"value":"ar-Arab-EG"},"amo":{"value":"amo-Latn-NG"},"amn":{"value":"amn-Latn-ZZ"},"rob": +{"value":"rob-Latn-ID"},"amp":{"value":"amp-Latn-ZZ"},"ngb":{"value":"ngb-Latn-ZZ"},"rof":{"value":"rof-Latn-TZ"},"nga":{"value":"nga-Latn-ZZ"},"ngl":{"value":"ngl-Latn-MZ"},"roo":{"value":"roo-Latn-ZZ"},"anc":{"value":"anc-Latn-ZZ"},"ank":{"value":"ank-Latn-ZZ"},"ann":{"value":"ann-Latn-ZZ"},"und-Bhks":{"value":"sa-Bhks-IN"},"nhb":{"value":"nhb-Latn-ZZ"},"nhe":{"value":"nhe-Latn-MX"},"any":{"value":"any-Latn-ZZ"},"und-Orya":{"value":"or-Orya-IN"},"ewo":{"value":"ewo-Latn-CM"},"nhw":{"value":"nhw-Latn-MX"}, +"aoj":{"value":"aoj-Latn-ZZ"},"aom":{"value":"aom-Latn-ZZ"},"zh-Hanb":{"value":"zh-Hanb-TW"},"jab":{"value":"jab-Latn-ZZ"},"nif":{"value":"nif-Latn-ZZ"},"aoz":{"value":"aoz-Latn-ID"},"nij":{"value":"nij-Latn-ID"},"nii":{"value":"nii-Latn-ZZ"},"zh-PH":{"value":"zh-Hant-PH"},"nin":{"value":"nin-Latn-ZZ"},"zh-Hant":{"value":"zh-Hant-TW"},"zh-PF":{"value":"zh-Hant-PF"},"und-Ahom":{"value":"aho-Ahom-IN"},"apd":{"value":"apd-Arab-TG"},"apc":{"value":"apc-Arab-ZZ"},"ape":{"value":"ape-Latn-ZZ"},"jam":{"value":"jam-Latn-JM"} +,"zh-PA":{"value":"zh-Hant-PA"},"niu":{"value":"niu-Latn-NU"},"niz":{"value":"niz-Latn-ZZ"},"niy":{"value":"niy-Latn-ZZ"},"ext":{"value":"ext-Latn-ES"},"apr":{"value":"apr-Latn-ZZ"},"aps":{"value":"aps-Latn-ZZ"},"apz":{"value":"apz-Latn-ZZ"},"rro":{"value":"rro-Latn-ZZ"},"njo":{"value":"njo-Latn-IN"},"jbo":{"value":"jbo-Latn-001"},"jbu":{"value":"jbu-Latn-ZZ"},"zh-MO":{"value":"zh-Hant-MO"},"nkg":{"value":"nkg-Latn-ZZ"},"zh-MY":{"value":"zh-Hant-MY"},"arc":{"value":"arc-Armi-IR"},"nko":{"value":"nko-Latn-ZZ"} +,"arh":{"value":"arh-Latn-ZZ"},"pa-Arab":{"value":"pa-Arab-PK"},"und-Mtei":{"value":"mni-Mtei-IN"},"arn":{"value":"arn-Latn-CL"},"aro":{"value":"aro-Latn-BO"},"und-Cyrl-RO":{"value":"bg-Cyrl-RO"},"arq":{"value":"arq-Arab-DZ"},"arz":{"value":"arz-Arab-EG"},"ary":{"value":"ary-Arab-MA"},"rtm":{"value":"rtm-Latn-FJ"},"asa":{"value":"asa-Latn-TZ"},"und-Grek-TR":{"value":"bgx-Grek-TR"},"ase":{"value":"ase-Sgnw-US"},"asg":{"value":"asg-Latn-ZZ"},"aso":{"value":"aso-Latn-ZZ"},"ast":{"value":"ast-Latn-ES"},"rue":{"value" +:"rue-Cyrl-UA"},"rug":{"value":"rug-Latn-SB"},"nmg":{"value":"nmg-Latn-CM"},"ata":{"value":"ata-Latn-ZZ"},"jen":{"value":"jen-Latn-ZZ"},"atg":{"value":"atg-Latn-ZZ"},"atj":{"value":"atj-Latn-CA"},"nmz":{"value":"nmz-Latn-ZZ"},"unr-Deva":{"value":"unr-Deva-NP"},"nnf":{"value":"nnf-Latn-ZZ"},"nnh":{"value":"nnh-Latn-CM"},"nnk":{"value":"nnk-Latn-ZZ"},"nnm":{"value":"nnm-Latn-ZZ"},"nnp":{"value":"nnp-Wcho-IN"},"az-IR":{"value":"az-Arab-IR"},"und-Adlm":{"value":"ff-Adlm-GN"},"az-IQ":{"value":"az-Arab-IQ"},"und-Nbat": +{"value":"arc-Nbat-JO"},"sd-Khoj":{"value":"sd-Khoj-IN"},"nod":{"value":"nod-Lana-TH"},"auy":{"value":"auy-Latn-ZZ"},"noe":{"value":"noe-Deva-IN"},"rwk":{"value":"rwk-Latn-TZ"},"und-Cyrl-MD":{"value":"uk-Cyrl-MD"},"rwo":{"value":"rwo-Latn-ZZ"},"non":{"value":"non-Runr-SE"},"nop":{"value":"nop-Latn-ZZ"},"jgk":{"value":"jgk-Latn-ZZ"},"jgo":{"value":"jgo-Latn-CM"},"und-Vaii":{"value":"vai-Vaii-LR"},"nou":{"value":"nou-Latn-ZZ"},"avl":{"value":"avl-Arab-ZZ"},"avn":{"value":"avn-Latn-ZZ"},"wae":{"value":"wae-Latn-CH"} +,"avt":{"value":"avt-Latn-ZZ"},"avu":{"value":"avu-Latn-ZZ"},"waj":{"value":"waj-Latn-ZZ"},"wal":{"value":"wal-Ethi-ET"},"wan":{"value":"wan-Latn-ZZ"},"zh-HK":{"value":"zh-Hant-HK"},"war":{"value":"war-Latn-PH"},"awa":{"value":"awa-Deva-IN"},"und-Plrd":{"value":"hmd-Plrd-CN"},"awb":{"value":"awb-Latn-ZZ"},"awo":{"value":"awo-Latn-ZZ"},"und-Knda":{"value":"kn-Knda-IN"},"zh-ID":{"value":"zh-Hant-ID"},"jib":{"value":"jib-Latn-ZZ"},"awx":{"value":"awx-Latn-ZZ"},"wbp":{"value":"wbp-Latn-AU"},"und-Sidd":{"value": +"sa-Sidd-IN"},"fab":{"value":"fab-Latn-ZZ"},"wbr":{"value":"wbr-Deva-IN"},"faa":{"value":"faa-Latn-ZZ"},"wbq":{"value":"wbq-Telu-IN"},"und-Kali":{"value":"eky-Kali-MM"},"fag":{"value":"fag-Latn-ZZ"},"nqo":{"value":"nqo-Nkoo-GN"},"fai":{"value":"fai-Latn-ZZ"},"ryu":{"value":"ryu-Kana-JP"},"fan":{"value":"fan-Latn-GQ"},"wci":{"value":"wci-Latn-ZZ"},"nrb":{"value":"nrb-Latn-ZZ"},"und-Phlp":{"value":"pal-Phlp-CN"},"ayb":{"value":"ayb-Latn-ZZ"},"und-Phli":{"value":"pal-Phli-IR"},"cu-Glag":{"value":"cu-Glag-BG"}, +"und-Cyrl-XK":{"value":"sr-Cyrl-XK"},"az-Arab":{"value":"az-Arab-IR"},"und-Thai":{"value":"th-Thai-TH"},"nsk":{"value":"nsk-Cans-CA"},"nsn":{"value":"nsn-Latn-ZZ"},"nso":{"value":"nso-Latn-ZA"},"und-Thaa":{"value":"dv-Thaa-MV"},"und-Nshu":{"value":"zhx-Nshu-CN"},"nss":{"value":"nss-Latn-ZZ"},"zh-VN":{"value":"zh-Hant-VN"},"und-Hmnp":{"value":"mww-Hmnp-US"},"und-Kana":{"value":"ja-Kana-JP"},"und-Hmng":{"value":"hnj-Hmng-LA"},"wer":{"value":"wer-Latn-ZZ"},"zh-TW":{"value":"zh-Hant-TW"},"ntm":{"value":"ntm-Latn-ZZ"} +,"ntr":{"value":"ntr-Latn-ZZ"},"zh-US":{"value":"zh-Hant-US"},"und-Xpeo":{"value":"peo-Xpeo-IR"},"jmc":{"value":"jmc-Latn-TZ"},"nui":{"value":"nui-Latn-ZZ"},"jml":{"value":"jml-Deva-NP"},"nup":{"value":"nup-Latn-ZZ"},"und-Cyrl-SK":{"value":"uk-Cyrl-SK"},"nus":{"value":"nus-Latn-SS"},"nuv":{"value":"nuv-Latn-ZZ"},"nux":{"value":"nux-Latn-ZZ"},"zh-TH":{"value":"zh-Hant-TH"},"wgi":{"value":"wgi-Latn-ZZ"},"und-Phnx":{"value":"phn-Phnx-LB"},"und-Cyrl-TR":{"value":"kbd-Cyrl-TR"},"ffi":{"value":"ffi-Latn-ZZ"},"und-Elym": +{"value":"arc-Elym-IR"},"ffm":{"value":"ffm-Latn-ML"},"und-Rjng":{"value":"rej-Rjng-ID"},"whg":{"value":"whg-Latn-ZZ"},"nwb":{"value":"nwb-Latn-ZZ"},"zh-SR":{"value":"zh-Hant-SR"},"wib":{"value":"wib-Latn-ZZ"},"und-Hebr":{"value":"he-Hebr-IL"},"saf":{"value":"saf-Latn-GH"},"sah":{"value":"sah-Cyrl-RU"},"saq":{"value":"saq-Latn-KE"},"wiu":{"value":"wiu-Latn-ZZ"},"sas":{"value":"sas-Latn-ID"},"wiv":{"value":"wiv-Latn-ZZ"},"nxq":{"value":"nxq-Latn-CN"},"sat":{"value":"sat-Latn-IN"},"nxr":{"value":"nxr-Latn-ZZ"} +,"sav":{"value":"sav-Latn-SN"},"saz":{"value":"saz-Saur-IN"},"wja":{"value":"wja-Latn-ZZ"},"sba":{"value":"sba-Latn-ZZ"},"sbe":{"value":"sbe-Latn-ZZ"},"wji":{"value":"wji-Latn-ZZ"},"mn-Mong":{"value":"mn-Mong-CN"},"und-419":{"value":"es-Latn-419"},"fia":{"value":"fia-Arab-SD"},"sbp":{"value":"sbp-Latn-TZ"},"und-NO":{"value":"nb-Latn-NO"},"nyn":{"value":"nyn-Latn-UG"},"nym":{"value":"nym-Latn-TZ"},"und-NL":{"value":"nl-Latn-NL"},"und-NP":{"value":"ne-Deva-NP"},"fil":{"value":"fil-Latn-PH"},"bal":{"value":"bal-Arab-PK"} +,"ban":{"value":"ban-Latn-ID"},"bap":{"value":"bap-Deva-NP"},"fit":{"value":"fit-Latn-SE"},"bar":{"value":"bar-Latn-AT"},"bas":{"value":"bas-Latn-CM"},"bav":{"value":"bav-Latn-ZZ"},"bax":{"value":"bax-Bamu-CM"},"jra":{"value":"jra-Latn-ZZ"},"sck":{"value":"sck-Deva-IN"},"nzi":{"value":"nzi-Latn-GH"},"scl":{"value":"scl-Arab-ZZ"},"sco":{"value":"sco-Latn-GB"},"scn":{"value":"scn-Latn-IT"},"aa":{"value":"aa-Latn-ET"},"bba":{"value":"bba-Latn-ZZ"},"und-MN":{"value":"mn-Cyrl-MN"},"ab":{"value":"ab-Cyrl-GE"},"und-MM": +{"value":"my-Mymr-MM"},"und-Osma":{"value":"so-Osma-SO"},"bbc":{"value":"bbc-Latn-ID"},"scs":{"value":"scs-Latn-CA"},"und-ML":{"value":"bm-Latn-ML"},"bbb":{"value":"bbb-Latn-ZZ"},"und-MK":{"value":"mk-Cyrl-MK"},"ae":{"value":"ae-Avst-IR"},"und-MR":{"value":"ar-Arab-MR"},"af":{"value":"af-Latn-ZA"},"bbd":{"value":"bbd-Latn-ZZ"},"und-MQ":{"value":"fr-Latn-MQ"},"und-Wara":{"value":"hoc-Wara-IN"},"und-MO":{"value":"zh-Hant-MO"},"und-MV":{"value":"dv-Thaa-MV"},"und-MU":{"value":"mfe-Latn-MU"},"ak":{"value":"ak-Latn-GH"} +,"und-MT":{"value":"mt-Latn-MT"},"bbj":{"value":"bbj-Latn-CM"},"am":{"value":"am-Ethi-ET"},"und-MZ":{"value":"pt-Latn-MZ"},"und-MY":{"value":"ms-Latn-MY"},"und-MX":{"value":"es-Latn-MX"},"ar":{"value":"ar-Arab-EG"},"bbp":{"value":"bbp-Latn-ZZ"},"as":{"value":"as-Beng-IN"},"bbr":{"value":"bbr-Latn-ZZ"},"sdc":{"value":"sdc-Latn-IT"},"und-NC":{"value":"fr-Latn-NC"},"av":{"value":"av-Cyrl-RU"},"sdh":{"value":"sdh-Arab-IR"},"und-NA":{"value":"af-Latn-NA"},"ay":{"value":"ay-Latn-BO"},"az":{"value":"az-Latn-AZ"},"und-NE": +{"value":"ha-Latn-NE"},"und-NI":{"value":"es-Latn-NI"},"ba":{"value":"ba-Cyrl-RU"},"wls":{"value":"wls-Latn-WF"},"und-Kore":{"value":"ko-Kore-KR"},"und-LK":{"value":"si-Sinh-LK"},"be":{"value":"be-Cyrl-BY"},"bcf":{"value":"bcf-Latn-ZZ"},"bg":{"value":"bg-Cyrl-BG"},"bch":{"value":"bch-Latn-ZZ"},"bi":{"value":"bi-Latn-VU"},"und-LU":{"value":"fr-Latn-LU"},"bci":{"value":"bci-Latn-CI"},"und-LT":{"value":"lt-Latn-LT"},"und-LS":{"value":"st-Latn-LS"},"bm":{"value":"bm-Latn-ML"},"bcn":{"value":"bcn-Latn-ZZ"},"bn": +{"value":"bn-Beng-BD"},"und-LY":{"value":"ar-Arab-LY"},"bcm":{"value":"bcm-Latn-ZZ"},"bo":{"value":"bo-Tibt-CN"},"bco":{"value":"bco-Latn-ZZ"},"und-LV":{"value":"lv-Latn-LV"},"br":{"value":"br-Latn-FR"},"bcq":{"value":"bcq-Ethi-ZZ"},"bs":{"value":"bs-Latn-BA"},"bcu":{"value":"bcu-Latn-ZZ"},"sef":{"value":"sef-Latn-CI"},"und-MA":{"value":"ar-Arab-MA"},"sei":{"value":"sei-Latn-MX"},"seh":{"value":"seh-Latn-MZ"},"und-MF":{"value":"fr-Latn-MF"},"wmo":{"value":"wmo-Latn-ZZ"},"und-ME":{"value":"sr-Latn-ME"},"und-MD": +{"value":"ro-Latn-MD"},"und-MC":{"value":"fr-Latn-MC"},"ca":{"value":"ca-Latn-ES"},"und-MG":{"value":"mg-Latn-MG"},"ses":{"value":"ses-Latn-ML"},"ce":{"value":"ce-Cyrl-RU"},"und-Cyrl-BA":{"value":"sr-Cyrl-BA"},"bdd":{"value":"bdd-Latn-ZZ"},"und-KP":{"value":"ko-Kore-KP"},"ch":{"value":"ch-Latn-GU"},"und-KM":{"value":"ar-Arab-KM"},"und-KR":{"value":"ko-Kore-KR"},"co":{"value":"co-Latn-FR"},"flr":{"value":"flr-Latn-ZZ"},"und-KW":{"value":"ar-Arab-KW"},"wnc":{"value":"wnc-Latn-ZZ"},"und-Dogr":{"value":"doi-Dogr-IN"} +,"cr":{"value":"cr-Cans-CA"},"cs":{"value":"cs-Latn-CZ"},"cu":{"value":"cu-Cyrl-RU"},"und-KZ":{"value":"ru-Cyrl-KZ"},"cv":{"value":"cv-Cyrl-RU"},"wni":{"value":"wni-Arab-KM"},"und-LA":{"value":"lo-Laoo-LA"},"cy":{"value":"cy-Latn-GB"},"und-LB":{"value":"ar-Arab-LB"},"und-LI":{"value":"de-Latn-LI"},"da":{"value":"da-Latn-DK"},"und-Cyrl-AL":{"value":"mk-Cyrl-AL"},"wnu":{"value":"wnu-Latn-ZZ"},"de":{"value":"de-Latn-DE"},"bef":{"value":"bef-Latn-ZZ"},"beh":{"value":"beh-Latn-ZZ"},"und-JO":{"value":"ar-Arab-JO"} +,"bej":{"value":"bej-Arab-SD"},"fmp":{"value":"fmp-Latn-ZZ"},"jut":{"value":"jut-Latn-DK"},"bem":{"value":"bem-Latn-ZM"},"und-JP":{"value":"ja-Jpan-JP"},"wob":{"value":"wob-Latn-ZZ"},"sga":{"value":"sga-Ogam-IE"},"bet":{"value":"bet-Latn-ZZ"},"dv":{"value":"dv-Thaa-MV"},"bex":{"value":"bex-Latn-ZZ"},"bew":{"value":"bew-Latn-ID"},"bez":{"value":"bez-Latn-TZ"},"dz":{"value":"dz-Tibt-BT"},"ms-ID":{"value":"ms-Arab-ID"},"wos":{"value":"wos-Latn-ZZ"},"und-KH":{"value":"km-Khmr-KH"},"und-KG":{"value":"ky-Cyrl-KG"} +,"sgs":{"value":"sgs-Latn-LT"},"und-KE":{"value":"sw-Latn-KE"},"ee":{"value":"ee-Latn-GH"},"bfd":{"value":"bfd-Latn-CM"},"sgw":{"value":"sgw-Ethi-ZZ"},"und-IN":{"value":"hi-Deva-IN"},"und-IL":{"value":"he-Hebr-IL"},"el":{"value":"el-Grek-GR"},"sgz":{"value":"sgz-Latn-ZZ"},"und-IR":{"value":"fa-Arab-IR"},"en":{"value":"en-Latn-US"},"und-IQ":{"value":"ar-Arab-IQ"},"und-Perm":{"value":"kv-Perm-RU"},"eo":{"value":"eo-Latn-001"},"bfq":{"value":"bfq-Taml-IN"},"es":{"value":"es-Latn-ES"},"und-IT":{"value":"it-Latn-IT"} +,"et":{"value":"et-Latn-EE"},"und-IS":{"value":"is-Latn-IS"},"eu":{"value":"eu-Latn-ES"},"bft":{"value":"bft-Arab-PK"},"bfy":{"value":"bfy-Deva-IN"},"shi":{"value":"shi-Tfng-MA"},"shk":{"value":"shk-Latn-ZZ"},"shn":{"value":"shn-Mymr-MM"},"fod":{"value":"fod-Latn-ZZ"},"fa":{"value":"fa-Arab-IR"},"bgc":{"value":"bgc-Deva-IN"},"ff":{"value":"ff-Latn-SN"},"shu":{"value":"shu-Arab-ZZ"},"fi":{"value":"fi-Latn-FI"},"fj":{"value":"fj-Latn-FJ"},"fon":{"value":"fon-Latn-BJ"},"und-HM":{"value":"und-Latn-HM"},"und-HK": +{"value":"zh-Hant-HK"},"bgn":{"value":"bgn-Arab-PK"},"for":{"value":"for-Latn-ZZ"},"fo":{"value":"fo-Latn-FO"},"und-HN":{"value":"es-Latn-HN"},"fr":{"value":"fr-Latn-FR"},"und-HU":{"value":"hu-Latn-HU"},"und-HT":{"value":"ht-Latn-HT"},"ku-Arab":{"value":"ku-Arab-IQ"},"sid":{"value":"sid-Latn-ET"},"und-HR":{"value":"hr-Latn-HR"},"sig":{"value":"sig-Latn-ZZ"},"bgx":{"value":"bgx-Grek-TR"},"fy":{"value":"fy-Latn-NL"},"sim":{"value":"sim-Latn-ZZ"},"sil":{"value":"sil-Latn-ZZ"},"fpe":{"value":"fpe-Latn-ZZ"},"ga": +{"value":"ga-Latn-IE"},"bhb":{"value":"bhb-Deva-IN"},"gd":{"value":"gd-Latn-GB"},"und-ID":{"value":"id-Latn-ID"},"und-IC":{"value":"es-Latn-IC"},"bhg":{"value":"bhg-Latn-ZZ"},"und-GH":{"value":"ak-Latn-GH"},"bhi":{"value":"bhi-Deva-IN"},"und-GF":{"value":"fr-Latn-GF"},"und-GE":{"value":"ka-Geor-GE"},"bhk":{"value":"bhk-Latn-PH"},"und-GL":{"value":"kl-Latn-GL"},"gl":{"value":"gl-Latn-ES"},"bhl":{"value":"bhl-Latn-ZZ"},"gn":{"value":"gn-Latn-PY"},"bho":{"value":"bho-Deva-IN"},"und-GP":{"value":"fr-Latn-GP"},"und-GN": +{"value":"fr-Latn-GN"},"und-GT":{"value":"es-Latn-GT"},"und-GS":{"value":"und-Latn-GS"},"gu":{"value":"gu-Gujr-IN"},"und-GR":{"value":"el-Grek-GR"},"gv":{"value":"gv-Latn-IM"},"und-GQ":{"value":"es-Latn-GQ"},"und-Palm":{"value":"arc-Palm-SY"},"und-GW":{"value":"pt-Latn-GW"},"bhy":{"value":"bhy-Latn-ZZ"},"ha":{"value":"ha-Latn-NG"},"wrs":{"value":"wrs-Latn-ZZ"},"bib":{"value":"bib-Latn-ZZ"},"sjr":{"value":"sjr-Latn-ZZ"},"he":{"value":"he-Hebr-IL"},"big":{"value":"big-Latn-ZZ"},"hi":{"value":"hi-Deva-IN"},"und-Cyrl-GE": +{"value":"ab-Cyrl-GE"},"bik":{"value":"bik-Latn-PH"},"bin":{"value":"bin-Latn-NG"},"und-Cham":{"value":"cjm-Cham-VN"},"und-FI":{"value":"fi-Latn-FI"},"bim":{"value":"bim-Latn-ZZ"},"ho":{"value":"ho-Latn-PG"},"tg-PK":{"value":"tg-Arab-PK"},"und-FO":{"value":"fo-Latn-FO"},"bio":{"value":"bio-Latn-ZZ"},"fqs":{"value":"fqs-Latn-ZZ"},"hr":{"value":"hr-Latn-HR"},"skc":{"value":"skc-Latn-ZZ"},"wsg":{"value":"wsg-Gong-IN"},"biq":{"value":"biq-Latn-ZZ"},"ht":{"value":"ht-Latn-HT"},"hu":{"value":"hu-Latn-HU"},"und-FR": +{"value":"fr-Latn-FR"},"wsk":{"value":"wsk-Latn-ZZ"},"hy":{"value":"hy-Armn-AM"},"hz":{"value":"hz-Latn-NA"},"frc":{"value":"frc-Latn-US"},"ia":{"value":"ia-Latn-001"},"sks":{"value":"sks-Latn-ZZ"},"id":{"value":"id-Latn-ID"},"skr":{"value":"skr-Arab-PK"},"ig":{"value":"ig-Latn-NG"},"und-GA":{"value":"fr-Latn-GA"},"bji":{"value":"bji-Ethi-ZZ"},"ii":{"value":"ii-Yiii-CN"},"bjh":{"value":"bjh-Latn-ZZ"},"und-EE":{"value":"et-Latn-EE"},"ik":{"value":"ik-Latn-US"},"bjj":{"value":"bjj-Deva-IN"},"und-EC":{"value": +"es-Latn-EC"},"und-Cprt":{"value":"grc-Cprt-CY"},"frp":{"value":"frp-Latn-FR"},"in":{"value":"in-Latn-ID"},"bjo":{"value":"bjo-Latn-ZZ"},"frs":{"value":"frs-Latn-DE"},"io":{"value":"io-Latn-001"},"und-EH":{"value":"ar-Arab-EH"},"bjn":{"value":"bjn-Latn-ID"},"frr":{"value":"frr-Latn-DE"},"und-EG":{"value":"ar-Arab-EG"},"is":{"value":"is-Latn-IS"},"sld":{"value":"sld-Latn-ZZ"},"bjr":{"value":"bjr-Latn-ZZ"},"it":{"value":"it-Latn-IT"},"iu":{"value":"iu-Cans-CA"},"und-ER":{"value":"ti-Ethi-ER"},"bjt":{"value":"bjt-Latn-SN"} +,"iw":{"value":"iw-Hebr-IL"},"und-Tirh":{"value":"mai-Tirh-IN"},"sli":{"value":"sli-Latn-PL"},"und-EU":{"value":"en-Latn-GB"},"wtm":{"value":"wtm-Deva-IN"},"sll":{"value":"sll-Latn-ZZ"},"und-ET":{"value":"am-Ethi-ET"},"bjz":{"value":"bjz-Latn-ZZ"},"und-ES":{"value":"es-Latn-ES"},"und-EZ":{"value":"de-Latn-EZ"},"ja":{"value":"ja-Jpan-JP"},"zh-GF":{"value":"zh-Hant-GF"},"bkc":{"value":"bkc-Latn-ZZ"},"zh-GB":{"value":"zh-Hant-GB"},"und-Cyrl-GR":{"value":"mk-Cyrl-GR"},"ji":{"value":"ji-Hebr-UA"},"und-DE":{"value" +:"de-Latn-DE"},"sly":{"value":"sly-Latn-ID"},"bkm":{"value":"bkm-Latn-CM"},"sma":{"value":"sma-Latn-SE"},"bkq":{"value":"bkq-Latn-ZZ"},"und-DK":{"value":"da-Latn-DK"},"und-DJ":{"value":"aa-Latn-DJ"},"bkv":{"value":"bkv-Latn-ZZ"},"jv":{"value":"jv-Latn-ID"},"bku":{"value":"bku-Latn-PH"},"jw":{"value":"jw-Latn-ID"},"und-DO":{"value":"es-Latn-DO"},"smj":{"value":"smj-Latn-SE"},"smn":{"value":"smn-Latn-FI"},"ka":{"value":"ka-Geor-GE"},"smq":{"value":"smq-Latn-ZZ"},"wuu":{"value":"wuu-Hans-CN"},"smp":{"value":"smp-Samr-IL"} +,"sms":{"value":"sms-Latn-FI"},"wuv":{"value":"wuv-Latn-ZZ"},"und-DZ":{"value":"ar-Arab-DZ"},"kg":{"value":"kg-Latn-CD"},"und-EA":{"value":"es-Latn-EA"},"ki":{"value":"ki-Latn-KE"},"kj":{"value":"kj-Latn-NA"},"kk":{"value":"kk-Cyrl-KZ"},"man-Nkoo":{"value":"man-Nkoo-GN"},"und-CD":{"value":"sw-Latn-CD"},"kl":{"value":"kl-Latn-GL"},"und-Telu":{"value":"te-Telu-IN"},"km":{"value":"km-Khmr-KH"},"kn":{"value":"kn-Knda-IN"},"ko":{"value":"ko-Kore-KR"},"und-CH":{"value":"de-Latn-CH"},"und-CG":{"value":"fr-Latn-CG"} +,"und-CF":{"value":"fr-Latn-CF"},"kr":{"value":"kr-Latn-ZZ"},"ks":{"value":"ks-Arab-IN"},"und-CL":{"value":"es-Latn-CL"},"snc":{"value":"snc-Latn-ZZ"},"ku":{"value":"ku-Latn-TR"},"blt":{"value":"blt-Tavt-VN"},"kv":{"value":"kv-Cyrl-RU"},"und-CI":{"value":"fr-Latn-CI"},"kw":{"value":"kw-Latn-GB"},"und-CP":{"value":"und-Latn-CP"},"und-CO":{"value":"es-Latn-CO"},"ky":{"value":"ky-Cyrl-KG"},"und-CN":{"value":"zh-Hans-CN"},"und-CM":{"value":"fr-Latn-CM"},"snk":{"value":"snk-Latn-ML"},"fub":{"value":"fub-Arab-CM"} +,"und-CR":{"value":"es-Latn-CR"},"fud":{"value":"fud-Latn-WF"},"snp":{"value":"snp-Latn-ZZ"},"la":{"value":"la-Latn-VA"},"und-CW":{"value":"pap-Latn-CW"},"fuf":{"value":"fuf-Latn-GN"},"lb":{"value":"lb-Latn-LU"},"und-CV":{"value":"pt-Latn-CV"},"fue":{"value":"fue-Latn-ZZ"},"und-CU":{"value":"es-Latn-CU"},"fuh":{"value":"fuh-Latn-ZZ"},"und-CZ":{"value":"cs-Latn-CZ"},"lg":{"value":"lg-Latn-UG"},"und-CY":{"value":"el-Grek-CY"},"bmh":{"value":"bmh-Latn-ZZ"},"snx":{"value":"snx-Latn-ZZ"},"li":{"value":"li-Latn-NL"} +,"sny":{"value":"sny-Latn-ZZ"},"wwa":{"value":"wwa-Latn-ZZ"},"bmk":{"value":"bmk-Latn-ZZ"},"und-Cher":{"value":"chr-Cher-US"},"fur":{"value":"fur-Latn-IT"},"ln":{"value":"ln-Latn-CD"},"und-BA":{"value":"bs-Latn-BA"},"fuq":{"value":"fuq-Latn-NE"},"lo":{"value":"lo-Laoo-LA"},"und-BG":{"value":"bg-Cyrl-BG"},"und-BF":{"value":"fr-Latn-BF"},"fuv":{"value":"fuv-Latn-NG"},"und-BE":{"value":"nl-Latn-BE"},"bmq":{"value":"bmq-Latn-ML"},"und-BD":{"value":"bn-Beng-BD"},"lt":{"value":"lt-Latn-LT"},"lu":{"value":"lu-Latn-CD"} +,"und-BJ":{"value":"fr-Latn-BJ"},"lv":{"value":"lv-Latn-LV"},"ogc":{"value":"ogc-Latn-ZZ"},"sog":{"value":"sog-Sogd-UZ"},"und-BI":{"value":"rn-Latn-BI"},"bmu":{"value":"bmu-Latn-ZZ"},"fuy":{"value":"fuy-Latn-ZZ"},"und-BH":{"value":"ar-Arab-BH"},"und-BO":{"value":"es-Latn-BO"},"und-BN":{"value":"ms-Latn-BN"},"sok":{"value":"sok-Latn-ZZ"},"und-BL":{"value":"fr-Latn-BL"},"und-BR":{"value":"pt-Latn-BR"},"und-BQ":{"value":"pap-Latn-BQ"},"soq":{"value":"soq-Latn-ZZ"},"und-BV":{"value":"und-Latn-BV"},"und-BT":{"value" +:"dz-Tibt-BT"},"sou":{"value":"sou-Thai-TH"},"bng":{"value":"bng-Latn-ZZ"},"mg":{"value":"mg-Latn-MG"},"und-BY":{"value":"be-Cyrl-BY"},"und-Glag":{"value":"cu-Glag-BG"},"mh":{"value":"mh-Latn-MH"},"mi":{"value":"mi-Latn-NZ"},"soy":{"value":"soy-Latn-ZZ"},"mk":{"value":"mk-Cyrl-MK"},"ml":{"value":"ml-Mlym-IN"},"bnm":{"value":"bnm-Latn-ZZ"},"mn":{"value":"mn-Cyrl-MN"},"und-Prti":{"value":"xpr-Prti-IR"},"fvr":{"value":"fvr-Latn-SD"},"und-AF":{"value":"fa-Arab-AF"},"bnp":{"value":"bnp-Latn-ZZ"},"mr":{"value":"mr-Deva-IN"} +,"und-AE":{"value":"ar-Arab-AE"},"ms":{"value":"ms-Latn-MY"},"spd":{"value":"spd-Latn-ZZ"},"und-AD":{"value":"ca-Latn-AD"},"mt":{"value":"mt-Latn-MT"},"my":{"value":"my-Mymr-MM"},"zh-BN":{"value":"zh-Hant-BN"},"und-AM":{"value":"hy-Armn-AM"},"spl":{"value":"spl-Latn-ZZ"},"und-AL":{"value":"sq-Latn-AL"},"und-AR":{"value":"es-Latn-AR"},"und-AQ":{"value":"und-Latn-AQ"},"na":{"value":"na-Latn-NR"},"und-AO":{"value":"pt-Latn-AO"},"nb":{"value":"nb-Latn-NO"},"nd":{"value":"nd-Latn-ZW"},"und-AT":{"value":"de-Latn-AT"} +,"ne":{"value":"ne-Deva-NP"},"sps":{"value":"sps-Latn-ZZ"},"und-AS":{"value":"sm-Latn-AS"},"und-AZ":{"value":"az-Latn-AZ"},"ng":{"value":"ng-Latn-NA"},"und-AX":{"value":"sv-Latn-AX"},"und-AW":{"value":"nl-Latn-AW"},"boj":{"value":"boj-Latn-ZZ"},"nl":{"value":"nl-Latn-NL"},"bon":{"value":"bon-Latn-ZZ"},"nn":{"value":"nn-Latn-NO"},"bom":{"value":"bom-Latn-ZZ"},"no":{"value":"no-Latn-NO"},"nr":{"value":"nr-Latn-ZA"},"arc-Nbat":{"value":"arc-Nbat-JO"},"und-Medf":{"value":"mis-Medf-NG"},"nv":{"value":"nv-Latn-US"} +,"kaa":{"value":"kaa-Cyrl-UZ"},"ny":{"value":"ny-Latn-MW"},"kac":{"value":"kac-Latn-MM"},"kab":{"value":"kab-Latn-DZ"},"kad":{"value":"kad-Latn-ZZ"},"kai":{"value":"kai-Latn-ZZ"},"oc":{"value":"oc-Latn-FR"},"zh-AU":{"value":"zh-Hant-AU"},"kaj":{"value":"kaj-Latn-NG"},"kam":{"value":"kam-Latn-KE"},"und-Tagb":{"value":"tbw-Tagb-PH"},"kao":{"value":"kao-Latn-ML"},"und-Ogam":{"value":"sga-Ogam-IE"},"om":{"value":"om-Latn-ET"},"srb":{"value":"srb-Sora-IN"},"or":{"value":"or-Orya-IN"},"tg-Arab":{"value":"tg-Arab-PK"} +,"os":{"value":"os-Cyrl-GE"},"und-Sogd":{"value":"sog-Sogd-UZ"},"bpy":{"value":"bpy-Beng-IN"},"kbd":{"value":"kbd-Cyrl-RU"},"srn":{"value":"srn-Latn-SR"},"pa":{"value":"pa-Guru-IN"},"srr":{"value":"srr-Latn-SN"},"bqc":{"value":"bqc-Latn-ZZ"},"und-Kthi":{"value":"bho-Kthi-IN"},"kbm":{"value":"kbm-Latn-ZZ"},"kbp":{"value":"kbp-Latn-ZZ"},"srx":{"value":"srx-Deva-IN"},"bqi":{"value":"bqi-Arab-IR"},"kbq":{"value":"kbq-Latn-ZZ"},"pl":{"value":"pl-Latn-PL"},"bqp":{"value":"bqp-Latn-ZZ"},"kbx":{"value":"kbx-Latn-ZZ"} +,"kby":{"value":"kby-Arab-NE"},"ps":{"value":"ps-Arab-AF"},"pt":{"value":"pt-Latn-BR"},"ssd":{"value":"ssd-Latn-ZZ"},"und-Nkoo":{"value":"man-Nkoo-GN"},"bqv":{"value":"bqv-Latn-CI"},"ssg":{"value":"ssg-Latn-ZZ"},"und-Mymr":{"value":"my-Mymr-MM"},"kcg":{"value":"kcg-Latn-NG"},"bra":{"value":"bra-Deva-IN"},"kck":{"value":"kck-Latn-ZW"},"kcl":{"value":"kcl-Latn-ZZ"},"okr":{"value":"okr-Latn-ZZ"},"ssy":{"value":"ssy-Latn-ER"},"brh":{"value":"brh-Arab-PK"},"okv":{"value":"okv-Latn-ZZ"},"kct":{"value":"kct-Latn-ZZ"} +,"und-Hani":{"value":"zh-Hani-CN"},"und-Bugi":{"value":"bug-Bugi-ID"},"und-Hang":{"value":"ko-Hang-KR"},"qu":{"value":"qu-Latn-PE"},"brx":{"value":"brx-Deva-IN"},"und-Samr":{"value":"smp-Samr-IL"},"brz":{"value":"brz-Latn-ZZ"},"stk":{"value":"stk-Latn-ZZ"},"und-Hano":{"value":"hnn-Hano-PH"},"kde":{"value":"kde-Latn-TZ"},"kdh":{"value":"kdh-Arab-TG"},"stq":{"value":"stq-Latn-DE"},"kdl":{"value":"kdl-Latn-ZZ"},"bsj":{"value":"bsj-Latn-ZZ"},"und-Hanb":{"value":"zh-Hanb-TW"},"kdt":{"value":"kdt-Thai-TH"},"rm":{"value" +:"rm-Latn-CH"},"rn":{"value":"rn-Latn-BI"},"ro":{"value":"ro-Latn-RO"},"sua":{"value":"sua-Latn-ZZ"},"und-Deva-BT":{"value":"ne-Deva-BT"},"bsq":{"value":"bsq-Bass-LR"},"bst":{"value":"bst-Ethi-ZZ"},"sue":{"value":"sue-Latn-ZZ"},"bss":{"value":"bss-Latn-CM"},"ru":{"value":"ru-Cyrl-RU"},"und-Buhd":{"value":"bku-Buhd-PH"},"rw":{"value":"rw-Latn-RW"},"kea":{"value":"kea-Latn-CV"},"suk":{"value":"suk-Latn-TZ"},"grc-Linb":{"value":"grc-Linb-GR"},"sa":{"value":"sa-Deva-IN"},"sc":{"value":"sc-Latn-IT"},"sus":{"value" +:"sus-Latn-GN"},"sd":{"value":"sd-Arab-PK"},"sur":{"value":"sur-Latn-ZZ"},"se":{"value":"se-Latn-NO"},"sg":{"value":"sg-Latn-CF"},"ken":{"value":"ken-Latn-CM"},"si":{"value":"si-Sinh-LK"},"und-Hant":{"value":"zh-Hant-TW"},"und-Hans":{"value":"zh-Hans-CN"},"sk":{"value":"sk-Latn-SK"},"sl":{"value":"sl-Latn-SI"},"sm":{"value":"sm-Latn-WS"},"sn":{"value":"sn-Latn-ZW"},"bto":{"value":"bto-Latn-PH"},"so":{"value":"so-Latn-SO"},"sq":{"value":"sq-Latn-AL"},"sr":{"value":"sr-Cyrl-RS"},"ss":{"value":"ss-Latn-ZA"},"kez": +{"value":"kez-Latn-ZZ"},"st":{"value":"st-Latn-ZA"},"su":{"value":"su-Latn-ID"},"btt":{"value":"btt-Latn-ZZ"},"sv":{"value":"sv-Latn-SE"},"sw":{"value":"sw-Latn-TZ"},"btv":{"value":"btv-Deva-PK"},"ong":{"value":"ong-Latn-ZZ"},"ta":{"value":"ta-Taml-IN"},"onn":{"value":"onn-Latn-ZZ"},"bua":{"value":"bua-Cyrl-RU"},"bud":{"value":"bud-Latn-ZZ"},"buc":{"value":"buc-Latn-YT"},"te":{"value":"te-Telu-IN"},"tg":{"value":"tg-Cyrl-TJ"},"th":{"value":"th-Thai-TH"},"und-Gong":{"value":"wsg-Gong-IN"},"bug":{"value":"bug-Latn-ID"} +,"kfo":{"value":"kfo-Latn-CI"},"ons":{"value":"ons-Latn-ZZ"},"ti":{"value":"ti-Ethi-ET"},"kfr":{"value":"kfr-Deva-IN"},"tk":{"value":"tk-Latn-TM"},"tl":{"value":"tl-Latn-PH"},"und-Lisu":{"value":"lis-Lisu-CN"},"buk":{"value":"buk-Latn-ZZ"},"tn":{"value":"tn-Latn-ZA"},"bum":{"value":"bum-Latn-CM"},"to":{"value":"to-Latn-TO"},"buo":{"value":"buo-Latn-ZZ"},"swc":{"value":"swc-Latn-CD"},"tr":{"value":"tr-Latn-TR"},"und-Gonm":{"value":"esg-Gonm-IN"},"kfy":{"value":"kfy-Deva-IN"},"swb":{"value":"swb-Arab-YT"},"ts": +{"value":"ts-Latn-ZA"},"tt":{"value":"tt-Cyrl-RU"},"bus":{"value":"bus-Latn-ZZ"},"swg":{"value":"swg-Latn-DE"},"buu":{"value":"buu-Latn-ZZ"},"ty":{"value":"ty-Latn-PF"},"kge":{"value":"kge-Latn-ID"},"kgf":{"value":"kgf-Latn-ZZ"},"swp":{"value":"swp-Latn-ZZ"},"bvb":{"value":"bvb-Latn-GQ"},"ug":{"value":"ug-Arab-CN"},"swv":{"value":"swv-Deva-IN"},"kgp":{"value":"kgp-Latn-BR"},"uk":{"value":"uk-Cyrl-UA"},"ur":{"value":"ur-Arab-PK"},"kk-IR":{"value":"kk-Arab-IR"},"khb":{"value":"khb-Talu-CN"},"kha":{"value":"kha-Latn-IN"} +,"uz":{"value":"uz-Latn-UZ"},"sxn":{"value":"sxn-Latn-ID"},"xav":{"value":"xav-Latn-BR"},"opm":{"value":"opm-Latn-ZZ"},"bwd":{"value":"bwd-Latn-ZZ"},"und-Mlym":{"value":"ml-Mlym-IN"},"ve":{"value":"ve-Latn-ZA"},"khn":{"value":"khn-Deva-IN"},"sxw":{"value":"sxw-Latn-ZZ"},"vi":{"value":"vi-Latn-VN"},"khq":{"value":"khq-Latn-ML"},"kht":{"value":"kht-Mymr-IN"},"khs":{"value":"khs-Latn-ZZ"},"vo":{"value":"vo-Latn-001"},"khw":{"value":"khw-Arab-PK"},"bwr":{"value":"bwr-Latn-ZZ"},"khz":{"value":"khz-Latn-ZZ"},"und-ZW": +{"value":"sn-Latn-ZW"},"xbi":{"value":"xbi-Latn-ZZ"},"gaa":{"value":"gaa-Latn-GH"},"syl":{"value":"syl-Beng-BD"},"wa":{"value":"wa-Latn-BE"},"gag":{"value":"gag-Latn-MD"},"gaf":{"value":"gaf-Latn-ZZ"},"kij":{"value":"kij-Latn-ZZ"},"syr":{"value":"syr-Syrc-IQ"},"und-YE":{"value":"ar-Arab-YE"},"gah":{"value":"gah-Latn-ZZ"},"gaj":{"value":"gaj-Latn-ZZ"},"gam":{"value":"gam-Latn-ZZ"},"bxh":{"value":"bxh-Latn-ZZ"},"gan":{"value":"gan-Hans-CN"},"kiu":{"value":"kiu-Latn-TR"},"kiw":{"value":"kiw-Latn-ZZ"},"wo":{"value" +:"wo-Latn-SN"},"gaw":{"value":"gaw-Latn-ZZ"},"und-Sarb":{"value":"xsa-Sarb-YE"},"gay":{"value":"gay-Latn-ID"},"und-YT":{"value":"fr-Latn-YT"},"kjd":{"value":"kjd-Latn-ZZ"},"szl":{"value":"szl-Latn-PL"},"xcr":{"value":"xcr-Cari-TR"},"gba":{"value":"gba-Latn-ZZ"},"und-Mult":{"value":"skr-Mult-PK"},"kjg":{"value":"kjg-Laoo-LA"},"gbf":{"value":"gbf-Latn-ZZ"},"oro":{"value":"oro-Latn-ZZ"},"und-Hatr":{"value":"mis-Hatr-IQ"},"bye":{"value":"bye-Latn-ZZ"},"xh":{"value":"xh-Latn-ZA"},"gbm":{"value":"gbm-Deva-IN"},"oru": +{"value":"oru-Arab-ZZ"},"kjs":{"value":"kjs-Latn-ZZ"},"byn":{"value":"byn-Ethi-ER"},"und-XK":{"value":"sq-Latn-XK"},"yue-CN":{"value":"yue-Hans-CN"},"und-Lepc":{"value":"lep-Lepc-IN"},"byr":{"value":"byr-Latn-ZZ"},"kjy":{"value":"kjy-Latn-ZZ"},"osa":{"value":"osa-Osge-US"},"bys":{"value":"bys-Latn-ZZ"},"byv":{"value":"byv-Latn-CM"},"gbz":{"value":"gbz-Arab-IR"},"gby":{"value":"gby-Latn-ZZ"},"byx":{"value":"byx-Latn-ZZ"},"kkc":{"value":"kkc-Latn-ZZ"},"und-VU":{"value":"bi-Latn-VU"},"bza":{"value":"bza-Latn-ZZ"} +,"und-Goth":{"value":"got-Goth-UA"},"kkj":{"value":"kkj-Latn-CM"},"bze":{"value":"bze-Latn-ML"},"und-Avst":{"value":"ae-Avst-IR"},"bzf":{"value":"bzf-Latn-ZZ"},"yi":{"value":"yi-Hebr-001"},"bzh":{"value":"bzh-Latn-ZZ"},"und-WF":{"value":"fr-Latn-WF"},"yo":{"value":"yo-Latn-NG"},"gcr":{"value":"gcr-Latn-GF"},"ota":{"value":"ota-Arab-ZZ"},"und-WS":{"value":"sm-Latn-WS"},"bzw":{"value":"bzw-Latn-ZZ"},"und-UZ":{"value":"uz-Latn-UZ"},"und-UY":{"value":"es-Latn-UY"},"otk":{"value":"otk-Orkh-MN"},"xes":{"value":"xes-Latn-ZZ"} +,"za":{"value":"za-Latn-CN"},"gde":{"value":"gde-Latn-ZZ"},"kln":{"value":"kln-Latn-KE"},"und-VA":{"value":"it-Latn-VA"},"zh":{"value":"zh-Hans-CN"},"gdn":{"value":"gdn-Latn-ZZ"},"klq":{"value":"klq-Latn-ZZ"},"und-Saur":{"value":"saz-Saur-IN"},"klt":{"value":"klt-Latn-ZZ"},"und-VE":{"value":"es-Latn-VE"},"gdr":{"value":"gdr-Latn-ZZ"},"klx":{"value":"klx-Latn-ZZ"},"und-VN":{"value":"vi-Latn-VN"},"kk-MN":{"value":"kk-Arab-MN"},"zu":{"value":"zu-Latn-ZA"},"und-Armn":{"value":"hy-Armn-AM"},"kmb":{"value":"kmb-Latn-AO"} +,"und-TR":{"value":"tr-Latn-TR"},"geb":{"value":"geb-Latn-ZZ"},"und-TW":{"value":"zh-Hant-TW"},"kmh":{"value":"kmh-Latn-ZZ"},"und-TV":{"value":"tvl-Latn-TV"},"und-TZ":{"value":"sw-Latn-TZ"},"kmo":{"value":"kmo-Latn-ZZ"},"gej":{"value":"gej-Latn-ZZ"},"und-UA":{"value":"uk-Cyrl-UA"},"gel":{"value":"gel-Latn-ZZ"},"kms":{"value":"kms-Latn-ZZ"},"kmu":{"value":"kmu-Latn-ZZ"},"kmw":{"value":"kmw-Latn-ZZ"},"und-Tibt":{"value":"bo-Tibt-CN"},"und-UG":{"value":"sw-Latn-UG"},"und-Armi":{"value":"arc-Armi-IR"},"gez":{"value" +:"gez-Ethi-ET"},"und-ST":{"value":"pt-Latn-ST"},"knf":{"value":"knf-Latn-GW"},"und-SR":{"value":"nl-Latn-SR"},"und-SV":{"value":"es-Latn-SV"},"und-SY":{"value":"ar-Arab-SY"},"knp":{"value":"knp-Latn-ZZ"},"gfk":{"value":"gfk-Latn-ZZ"},"und-TD":{"value":"fr-Latn-TD"},"und-TH":{"value":"th-Thai-TH"},"und-TG":{"value":"fr-Latn-TG"},"und-TF":{"value":"fr-Latn-TF"},"und-TM":{"value":"tk-Latn-TM"},"und-TL":{"value":"pt-Latn-TL"},"und-TK":{"value":"tkl-Latn-TK"},"und-TJ":{"value":"tg-Cyrl-TJ"},"und-TO":{"value":"to-Latn-TO"} +,"und-TN":{"value":"ar-Arab-TN"},"und-RS":{"value":"sr-Cyrl-RS"},"koi":{"value":"koi-Cyrl-RU"},"und-RW":{"value":"rw-Latn-RW"},"kok":{"value":"kok-Deva-IN"},"und-RU":{"value":"ru-Cyrl-RU"},"kol":{"value":"kol-Latn-ZZ"},"kos":{"value":"kos-Latn-FM"},"ggn":{"value":"ggn-Deva-NP"},"und-SD":{"value":"ar-Arab-SD"},"und-SC":{"value":"fr-Latn-SC"},"und-SA":{"value":"ar-Arab-SA"},"koz":{"value":"koz-Latn-ZZ"},"und-SE":{"value":"sv-Latn-SE"},"und-SK":{"value":"sk-Latn-SK"},"und-SJ":{"value":"nb-Latn-SJ"},"und-SI":{"value" +:"sl-Latn-SI"},"taj":{"value":"taj-Deva-NP"},"und-SO":{"value":"so-Latn-SO"},"tal":{"value":"tal-Latn-ZZ"},"und-SN":{"value":"fr-Latn-SN"},"und-Osge":{"value":"osa-Osge-US"},"und-SM":{"value":"it-Latn-SM"},"kpf":{"value":"kpf-Latn-ZZ"},"tan":{"value":"tan-Latn-ZZ"},"kpe":{"value":"kpe-Latn-LR"},"und-QO":{"value":"en-Latn-DG"},"taq":{"value":"taq-Latn-ZZ"},"kpo":{"value":"kpo-Latn-ZZ"},"kpr":{"value":"kpr-Latn-ZZ"},"kpx":{"value":"kpx-Latn-ZZ"},"ghs":{"value":"ghs-Latn-ZZ"},"und-Lana":{"value":"nod-Lana-TH"} +,"tbc":{"value":"tbc-Latn-ZZ"},"und-RE":{"value":"fr-Latn-RE"},"tbd":{"value":"tbd-Latn-ZZ"},"tbg":{"value":"tbg-Latn-ZZ"},"tbf":{"value":"tbf-Latn-ZZ"},"und-RO":{"value":"ro-Latn-RO"},"kqb":{"value":"kqb-Latn-ZZ"},"tbo":{"value":"tbo-Latn-ZZ"},"kqf":{"value":"kqf-Latn-ZZ"},"und-PT":{"value":"pt-Latn-PT"},"und-PS":{"value":"ar-Arab-PS"},"und-PR":{"value":"es-Latn-PR"},"tbw":{"value":"tbw-Latn-PH"},"und-PY":{"value":"gn-Latn-PY"},"gim":{"value":"gim-Latn-ZZ"},"und-PW":{"value":"pau-Latn-PW"},"gil":{"value":"gil-Latn-KI"} +,"kqs":{"value":"kqs-Latn-ZZ"},"tbz":{"value":"tbz-Latn-ZZ"},"und-Laoo":{"value":"lo-Laoo-LA"},"can":{"value":"can-Latn-ZZ"},"und-QA":{"value":"ar-Arab-QA"},"kqy":{"value":"kqy-Ethi-ZZ"},"ms-CC":{"value":"ms-Arab-CC"},"tci":{"value":"tci-Latn-ZZ"},"krc":{"value":"krc-Cyrl-RU"},"krj":{"value":"krj-Latn-PH"},"kri":{"value":"kri-Latn-SL"},"ozm":{"value":"ozm-Latn-ZZ"},"und-OM":{"value":"ar-Arab-OM"},"krl":{"value":"krl-Latn-RU"},"gjk":{"value":"gjk-Arab-PK"},"cbj":{"value":"cbj-Latn-ZZ"},"gjn":{"value":"gjn-Latn-ZZ"} +,"tcy":{"value":"tcy-Knda-IN"},"xla":{"value":"xla-Latn-ZZ"},"krs":{"value":"krs-Latn-ZZ"},"xlc":{"value":"xlc-Lyci-TR"},"kru":{"value":"kru-Deva-IN"},"und-PA":{"value":"es-Latn-PA"},"xld":{"value":"xld-Lydi-TR"},"gju":{"value":"gju-Arab-PK"},"und-PE":{"value":"es-Latn-PE"},"tdd":{"value":"tdd-Tale-CN"},"tdg":{"value":"tdg-Deva-NP"},"tdh":{"value":"tdh-Deva-NP"},"und-PH":{"value":"fil-Latn-PH"},"und-PG":{"value":"tpi-Latn-PG"},"ksb":{"value":"ksb-Latn-TZ"},"und-PF":{"value":"fr-Latn-PF"},"und-PM":{"value":"fr-Latn-PM"} +,"ksd":{"value":"ksd-Latn-ZZ"},"und-PL":{"value":"pl-Latn-PL"},"und-PK":{"value":"ur-Arab-PK"},"ksf":{"value":"ksf-Latn-CM"}};} +function GU(){return {"value":"en_GB"};} +function GC(){return {"root":{"value":"#,##0.###"},"en":{"value":"#,##0.###"}};} +function Iz(){return {"root":{"exponentSeparator":"E","minusSign":45,"perMille":8240,"decimalSeparator":46,"listSeparator":59,"naN":"NaN","infinity":"∞","groupingSeparator":44,"percent":37},"en":{"exponentSeparator":"E","minusSign":45,"perMille":8240,"decimalSeparator":46,"listSeparator":59,"naN":"NaN","infinity":"∞","groupingSeparator":44,"percent":37}};} +function S(){} +function EC(){C.call(this);} +function Js(){var a=new EC();IC(a);return a;} +function IC(a){G(a);} +function B$(){} +function By(){BB.call(this);} +function J7(a,b){var c=new By();EY(c,a,b);return c;} +function J8(a){var b=new By();Db(b,a);return b;} +function EY(a,b,c){Fm(a,b,c);} +function Db(a,b){CS(a,b);} +function BE(){By.call(this);} +function J9(a){var b=new BE();DI(b,a);return b;} +function DI(a,b){Db(a,b);} +function Bl(){} +function Gt(b){return b;} +function Bm(){} +function Cz(){} +function EP(){M.call(this);this.dI=null;} +function I$(a){var b=new EP();IN(b,a);return b;} +function IN(a,b){Z(a,F().a(B(11)).a(b).d());a.dI=b;} +function E3(){Cc.call(this);} +function Ie(){var a=new E3();Go(a);return a;} +function Go(a){E9(a);} +function BG(){} +function DM(){C.call(this);this.ce=null;} +function Ju(a){var b=new DM();FX(b,a);return b;} +function FX(a,b){G(a);a.ce=b;} +function H4(a,b){D3(a.ce,b);} +function Hr(a,b){a.P(b);} +function DO(){C.call(this);this.cb=null;} +function Jz(a){var b=new DO();IA(b,a);return b;} +function IA(a,b){G(a);a.cb=b;} +function HY(a,b){E7(a.cb,b);} +function HF(a,b){a.P(b);} +function B_(){C.call(this);} +var J$=null;var J_=null;function Ir(){if(J$===null)J$=HB();return J$;} +function Iy(){if(J_===null)J_=Is();return J_;} +function HB(){return [{"code":"AFN","fractionDigits":2,"numericCode":971},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"ALL","fractionDigits":2,"numericCode":8},{"code":"DZD","fractionDigits":2,"numericCode":12},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"AOA","fractionDigits":2,"numericCode":973},{"code":"XCD","fractionDigits":2,"numericCode":951},{"code":null,"fractionDigits":0,"numericCode":0},{"code":"XCD","fractionDigits" +:2,"numericCode":951},{"code":"ARS","fractionDigits":2,"numericCode":32},{"code":"AMD","fractionDigits":2,"numericCode":51},{"code":"AWG","fractionDigits":2,"numericCode":533},{"code":"AUD","fractionDigits":2,"numericCode":36},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"AZN","fractionDigits":2,"numericCode":944},{"code":"BSD","fractionDigits":2,"numericCode":44},{"code":"BHD","fractionDigits":3,"numericCode":48},{"code":"BDT","fractionDigits":2,"numericCode":50},{"code":"BBD","fractionDigits" +:2,"numericCode":52},{"code":"BYR","fractionDigits":0,"numericCode":974},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"BZD","fractionDigits":2,"numericCode":84},{"code":"XOF","fractionDigits":0,"numericCode":952},{"code":"BMD","fractionDigits":2,"numericCode":60},{"code":"BTN","fractionDigits":2,"numericCode":64},{"code":"INR","fractionDigits":2,"numericCode":356},{"code":"BOB","fractionDigits":2,"numericCode":68},{"code":"BOV","fractionDigits":2,"numericCode":984},{"code":"USD","fractionDigits" +:2,"numericCode":840},{"code":"BAM","fractionDigits":2,"numericCode":977},{"code":"BWP","fractionDigits":2,"numericCode":72},{"code":"NOK","fractionDigits":2,"numericCode":578},{"code":"BRL","fractionDigits":2,"numericCode":986},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"BND","fractionDigits":2,"numericCode":96},{"code":"BGN","fractionDigits":2,"numericCode":975},{"code":"XOF","fractionDigits":0,"numericCode":952},{"code":"BIF","fractionDigits":0,"numericCode":108},{"code":"KHR","fractionDigits" +:2,"numericCode":116},{"code":"XAF","fractionDigits":0,"numericCode":950},{"code":"CAD","fractionDigits":2,"numericCode":124},{"code":"CVE","fractionDigits":2,"numericCode":132},{"code":"KYD","fractionDigits":2,"numericCode":136},{"code":"XAF","fractionDigits":0,"numericCode":950},{"code":"XAF","fractionDigits":0,"numericCode":950},{"code":"CLF","fractionDigits":4,"numericCode":990},{"code":"CLP","fractionDigits":0,"numericCode":152},{"code":"CNY","fractionDigits":2,"numericCode":156},{"code":"AUD","fractionDigits" +:2,"numericCode":36},{"code":"AUD","fractionDigits":2,"numericCode":36},{"code":"COP","fractionDigits":2,"numericCode":170},{"code":"COU","fractionDigits":2,"numericCode":970},{"code":"KMF","fractionDigits":0,"numericCode":174},{"code":"XAF","fractionDigits":0,"numericCode":950},{"code":"CDF","fractionDigits":2,"numericCode":976},{"code":"NZD","fractionDigits":2,"numericCode":554},{"code":"CRC","fractionDigits":2,"numericCode":188},{"code":"XOF","fractionDigits":0,"numericCode":952},{"code":"HRK","fractionDigits" +:2,"numericCode":191},{"code":"CUC","fractionDigits":2,"numericCode":931},{"code":"CUP","fractionDigits":2,"numericCode":192},{"code":"ANG","fractionDigits":2,"numericCode":532},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"CZK","fractionDigits":2,"numericCode":203},{"code":"DKK","fractionDigits":2,"numericCode":208},{"code":"DJF","fractionDigits":0,"numericCode":262},{"code":"XCD","fractionDigits":2,"numericCode":951},{"code":"DOP","fractionDigits":2,"numericCode":214},{"code":"USD","fractionDigits" +:2,"numericCode":840},{"code":"EGP","fractionDigits":2,"numericCode":818},{"code":"SVC","fractionDigits":2,"numericCode":222},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"XAF","fractionDigits":0,"numericCode":950},{"code":"ERN","fractionDigits":2,"numericCode":232},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"ETB","fractionDigits":2,"numericCode":230},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"FKP","fractionDigits":2,"numericCode":238},{"code":"DKK","fractionDigits" +:2,"numericCode":208},{"code":"FJD","fractionDigits":2,"numericCode":242},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"XPF","fractionDigits":0,"numericCode":953},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"XAF","fractionDigits":0,"numericCode":950},{"code":"GMD","fractionDigits":2,"numericCode":270},{"code":"GEL","fractionDigits":2,"numericCode":981},{"code":"EUR","fractionDigits" +:2,"numericCode":978},{"code":"GHS","fractionDigits":2,"numericCode":936},{"code":"GIP","fractionDigits":2,"numericCode":292},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"DKK","fractionDigits":2,"numericCode":208},{"code":"XCD","fractionDigits":2,"numericCode":951},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"GTQ","fractionDigits":2,"numericCode":320},{"code":"GBP","fractionDigits":2,"numericCode":826},{"code":"GNF","fractionDigits" +:0,"numericCode":324},{"code":"XOF","fractionDigits":0,"numericCode":952},{"code":"GYD","fractionDigits":2,"numericCode":328},{"code":"HTG","fractionDigits":2,"numericCode":332},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"AUD","fractionDigits":2,"numericCode":36},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"HNL","fractionDigits":2,"numericCode":340},{"code":"HKD","fractionDigits":2,"numericCode":344},{"code":"HUF","fractionDigits":2,"numericCode":348},{"code":"ISK","fractionDigits" +:0,"numericCode":352},{"code":"INR","fractionDigits":2,"numericCode":356},{"code":"IDR","fractionDigits":2,"numericCode":360},{"code":"XDR","fractionDigits":-1,"numericCode":960},{"code":"IRR","fractionDigits":2,"numericCode":364},{"code":"IQD","fractionDigits":3,"numericCode":368},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"GBP","fractionDigits":2,"numericCode":826},{"code":"ILS","fractionDigits":2,"numericCode":376},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"JMD","fractionDigits" +:2,"numericCode":388},{"code":"JPY","fractionDigits":0,"numericCode":392},{"code":"GBP","fractionDigits":2,"numericCode":826},{"code":"JOD","fractionDigits":3,"numericCode":400},{"code":"KZT","fractionDigits":2,"numericCode":398},{"code":"KES","fractionDigits":2,"numericCode":404},{"code":"AUD","fractionDigits":2,"numericCode":36},{"code":"KPW","fractionDigits":2,"numericCode":408},{"code":"KRW","fractionDigits":0,"numericCode":410},{"code":"KWD","fractionDigits":3,"numericCode":414},{"code":"KGS","fractionDigits" +:2,"numericCode":417},{"code":"LAK","fractionDigits":2,"numericCode":418},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"LBP","fractionDigits":2,"numericCode":422},{"code":"LSL","fractionDigits":2,"numericCode":426},{"code":"ZAR","fractionDigits":2,"numericCode":710},{"code":"LRD","fractionDigits":2,"numericCode":430},{"code":"LYD","fractionDigits":3,"numericCode":434},{"code":"CHF","fractionDigits":2,"numericCode":756},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"EUR","fractionDigits" +:2,"numericCode":978},{"code":"MOP","fractionDigits":2,"numericCode":446},{"code":"MKD","fractionDigits":2,"numericCode":807},{"code":"MGA","fractionDigits":2,"numericCode":969},{"code":"MWK","fractionDigits":2,"numericCode":454},{"code":"MYR","fractionDigits":2,"numericCode":458},{"code":"MVR","fractionDigits":2,"numericCode":462},{"code":"XOF","fractionDigits":0,"numericCode":952},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"EUR","fractionDigits" +:2,"numericCode":978},{"code":"MRO","fractionDigits":2,"numericCode":478},{"code":"MUR","fractionDigits":2,"numericCode":480},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"XUA","fractionDigits":-1,"numericCode":965},{"code":"MXN","fractionDigits":2,"numericCode":484},{"code":"MXV","fractionDigits":2,"numericCode":979},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"MDL","fractionDigits":2,"numericCode":498},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"MNT","fractionDigits" +:2,"numericCode":496},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"XCD","fractionDigits":2,"numericCode":951},{"code":"MAD","fractionDigits":2,"numericCode":504},{"code":"MZN","fractionDigits":2,"numericCode":943},{"code":"MMK","fractionDigits":2,"numericCode":104},{"code":"NAD","fractionDigits":2,"numericCode":516},{"code":"ZAR","fractionDigits":2,"numericCode":710},{"code":"AUD","fractionDigits":2,"numericCode":36},{"code":"NPR","fractionDigits":2,"numericCode":524},{"code":"EUR","fractionDigits" +:2,"numericCode":978},{"code":"XPF","fractionDigits":0,"numericCode":953},{"code":"NZD","fractionDigits":2,"numericCode":554},{"code":"NIO","fractionDigits":2,"numericCode":558},{"code":"XOF","fractionDigits":0,"numericCode":952},{"code":"NGN","fractionDigits":2,"numericCode":566},{"code":"NZD","fractionDigits":2,"numericCode":554},{"code":"AUD","fractionDigits":2,"numericCode":36},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"NOK","fractionDigits":2,"numericCode":578},{"code":"OMR","fractionDigits" +:3,"numericCode":512},{"code":"PKR","fractionDigits":2,"numericCode":586},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":null,"fractionDigits":0,"numericCode":0},{"code":"PAB","fractionDigits":2,"numericCode":590},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"PGK","fractionDigits":2,"numericCode":598},{"code":"PYG","fractionDigits":0,"numericCode":600},{"code":"PEN","fractionDigits":2,"numericCode":604},{"code":"PHP","fractionDigits":2,"numericCode":608},{"code":"NZD","fractionDigits" +:2,"numericCode":554},{"code":"PLN","fractionDigits":2,"numericCode":985},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"QAR","fractionDigits":2,"numericCode":634},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"RON","fractionDigits":2,"numericCode":946},{"code":"RUB","fractionDigits":2,"numericCode":643},{"code":"RWF","fractionDigits":0,"numericCode":646},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"SHP","fractionDigits" +:2,"numericCode":654},{"code":"XCD","fractionDigits":2,"numericCode":951},{"code":"XCD","fractionDigits":2,"numericCode":951},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"XCD","fractionDigits":2,"numericCode":951},{"code":"WST","fractionDigits":2,"numericCode":882},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"STD","fractionDigits":2,"numericCode":678},{"code":"SAR","fractionDigits":2,"numericCode":682},{"code":"XOF","fractionDigits" +:0,"numericCode":952},{"code":"RSD","fractionDigits":2,"numericCode":941},{"code":"SCR","fractionDigits":2,"numericCode":690},{"code":"SLL","fractionDigits":2,"numericCode":694},{"code":"SGD","fractionDigits":2,"numericCode":702},{"code":"ANG","fractionDigits":2,"numericCode":532},{"code":"XSU","fractionDigits":-1,"numericCode":994},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"SBD","fractionDigits":2,"numericCode":90},{"code":"SOS","fractionDigits" +:2,"numericCode":706},{"code":"ZAR","fractionDigits":2,"numericCode":710},{"code":null,"fractionDigits":0,"numericCode":0},{"code":"SSP","fractionDigits":2,"numericCode":728},{"code":"EUR","fractionDigits":2,"numericCode":978},{"code":"LKR","fractionDigits":2,"numericCode":144},{"code":"SDG","fractionDigits":2,"numericCode":938},{"code":"SRD","fractionDigits":2,"numericCode":968},{"code":"NOK","fractionDigits":2,"numericCode":578},{"code":"SZL","fractionDigits":2,"numericCode":748},{"code":"SEK","fractionDigits" +:2,"numericCode":752},{"code":"CHE","fractionDigits":2,"numericCode":947},{"code":"CHF","fractionDigits":2,"numericCode":756},{"code":"CHW","fractionDigits":2,"numericCode":948},{"code":"SYP","fractionDigits":2,"numericCode":760},{"code":"TWD","fractionDigits":2,"numericCode":901},{"code":"TJS","fractionDigits":2,"numericCode":972},{"code":"TZS","fractionDigits":2,"numericCode":834},{"code":"THB","fractionDigits":2,"numericCode":764},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"XOF","fractionDigits" +:0,"numericCode":952},{"code":"NZD","fractionDigits":2,"numericCode":554},{"code":"TOP","fractionDigits":2,"numericCode":776},{"code":"TTD","fractionDigits":2,"numericCode":780},{"code":"TND","fractionDigits":3,"numericCode":788},{"code":"TRY","fractionDigits":2,"numericCode":949},{"code":"TMT","fractionDigits":2,"numericCode":934},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"AUD","fractionDigits":2,"numericCode":36},{"code":"UGX","fractionDigits":0,"numericCode":800},{"code":"UAH","fractionDigits" +:2,"numericCode":980},{"code":"AED","fractionDigits":2,"numericCode":784},{"code":"GBP","fractionDigits":2,"numericCode":826},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"USN","fractionDigits":2,"numericCode":997},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"UYI","fractionDigits":0,"numericCode":940},{"code":"UYU","fractionDigits":2,"numericCode":858},{"code":"UZS","fractionDigits":2,"numericCode":860},{"code":"VUV","fractionDigits":0,"numericCode":548},{"code":"VEF","fractionDigits" +:2,"numericCode":937},{"code":"VND","fractionDigits":0,"numericCode":704},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"USD","fractionDigits":2,"numericCode":840},{"code":"XPF","fractionDigits":0,"numericCode":953},{"code":"MAD","fractionDigits":2,"numericCode":504},{"code":"YER","fractionDigits":2,"numericCode":886},{"code":"ZMW","fractionDigits":2,"numericCode":967},{"code":"ZWL","fractionDigits":2,"numericCode":932},{"code":"XBA","fractionDigits":-1,"numericCode":955},{"code":"XBB","fractionDigits" +:-1,"numericCode":956},{"code":"XBC","fractionDigits":-1,"numericCode":957},{"code":"XBD","fractionDigits":-1,"numericCode":958},{"code":"XTS","fractionDigits":-1,"numericCode":963},{"code":"XXX","fractionDigits":-1,"numericCode":999},{"code":"XAU","fractionDigits":-1,"numericCode":959},{"code":"XPD","fractionDigits":-1,"numericCode":964},{"code":"XPT","fractionDigits":-1,"numericCode":962},{"code":"XAG","fractionDigits":-1,"numericCode":961}];} +function Is(){return {"":{"value":"CYP"},"PR":{"value":"USD"},"PT":{"value":"EUR"},"PW":{"value":"USD"},"PY":{"value":"PYG"},"QA":{"value":"QAR"},"AC":{"value":"SHP"},"AD":{"value":"EUR"},"AE":{"value":"AED"},"AF":{"value":"AFN"},"AG":{"value":"XCD"},"AI":{"value":"XCD"},"AL":{"value":"ALL"},"AM":{"value":"AMD"},"AN":{"value":"ANG"},"AO":{"value":"AOA"},"242":{"value":"Brazzaville"},"AQ":{"value":""},"AR":{"value":"ARS"},"243":{"value":"Kinshasa"},"AS":{"value":"USD"},"AT":{"value":"EUR"},"RE":{"value":"EUR"} +,"AU":{"value":""},"AW":{"value":"AWG"},"AX":{"value":"EUR"},"AZ":{"value":"AMD"},"RO":{"value":"RON"},"BA":{"value":"BAM"},"BB":{"value":"BBD"},"RS":{"value":"RSD"},"BD":{"value":"BDT"},"BE":{"value":"EUR"},"RU":{"value":"RUB"},"BF":{"value":"XOF"},"BG":{"value":"BGN"},"RW":{"value":"RWF"},"27":{"value":""},"BH":{"value":"BHD"},"BI":{"value":"BIF"},"BJ":{"value":"XOF"},"BM":{"value":"BMD"},"BN":{"value":"BND"},"BO":{"value":"BOB"},"SA":{"value":"SAR"},"SB":{"value":"SBD"},"BR":{"value":"BRL"},"SC":{"value" +:"SCR"},"SD":{"value":"SDD"},"BT":{"value":"BTN"},"SE":{"value":"SEK"},"SG":{"value":"SGD"},"BV":{"value":""},"BW":{"value":"BWP"},"SH":{"value":"SHP"},"SI":{"value":"EUR"},"BY":{"value":"BYR"},"SJ":{"value":"NOK"},"BZ":{"value":"BZD"},"SK":{"value":"SKK"},"SL":{"value":"SLL"},"SM":{"value":"EUR"},"SN":{"value":"XOF"},"SO":{"value":""},"CA":{"value":"CAD"},"SR":{"value":"SRD"},"CC":{"value":"AUD"},"ST":{"value":"STD"},"CF":{"value":"XAF"},"SV":{"value":"USD"},"CH":{"value":"CHF"},"CI":{"value":"XOF"},"SY":{"value" +:"SYP"},"SZ":{"value":"SZL"},"CK":{"value":"NZD"},"CL":{"value":"CLP"},"CM":{"value":"XAF"},"CO":{"value":"COP"},"TA":{"value":"SHP"},"CR":{"value":"CRC"},"TC":{"value":"USD"},"TD":{"value":"XAF"},"CU":{"value":"CUP"},"TF":{"value":""},"CV":{"value":"CVE"},"TG":{"value":"XOF"},"TH":{"value":"THB"},"CX":{"value":"AUD"},"CY":{"value":"TRY"},"TJ":{"value":"TJS"},"CZ":{"value":"CZK"},"TK":{"value":"NZD"},"TL":{"value":"USD"},"TM":{"value":"TMM"},"TN":{"value":"TND"},"TO":{"value":"TOP"},"TR":{"value":"TRY"},"TT": +{"value":"TTD"},"DE":{"value":"EUR"},"TV":{"value":"AUD"},"DJ":{"value":"DJF"},"TZ":{"value":"TZS"},"DK":{"value":"DKK"},"DM":{"value":"XCD"},"DO":{"value":"DOP"},"UA":{"value":"UAH"},"UG":{"value":"UGX"},"DZ":{"value":"DZD"},"UM":{"value":""},"EC":{"value":"USD"},"US":{"value":"USD"},"EE":{"value":"EEK"},"EG":{"value":"EGP"},"UY":{"value":"UYU"},"UZ":{"value":"UZS"},"VA":{"value":"EUR"},"ER":{"value":"ERN"},"VC":{"value":"XCD"},"ES":{"value":"EUR"},"ET":{"value":"ETB"},"VE":{"value":"VEB"},"VG":{"value":"USD"} +,"VI":{"value":"USD"},"VN":{"value":"VND"},"VU":{"value":"VUV"},"FI":{"value":"EUR"},"FJ":{"value":"FJD"},"FK":{"value":"FKP"},"FM":{"value":"USD"},"FO":{"value":"DKK"},"FR":{"value":"EUR"},"WF":{"value":"XPF"},"850":{"value":"Pyongyang"},"GA":{"value":"XAF"},"GB":{"value":"GBP"},"WS":{"value":"WST"},"GD":{"value":"XCD"},"GE":{"value":"RUB and GEL"},"GF":{"value":"EUR"},"GG":{"value":"GGP"},"GH":{"value":"GHC"},"GI":{"value":"GIP"},"GL":{"value":"DKK"},"GN":{"value":"GNF"},"GP":{"value":"EUR"},"GQ":{"value" +:"XAF"},"GR":{"value":"EUR"},"GS":{"value":""},"GT":{"value":"GTQ"},"GU":{"value":"USD"},"GW":{"value":"XOF"},"GY":{"value":"GYD"},"-241":{"value":"Nassau"},"82":{"value":"Seoul"},"86":{"value":"Beijing"},"HK":{"value":"HKD"},"HM":{"value":""},"HN":{"value":"HNL"},"HR":{"value":"HRK"},"HT":{"value":"HTG"},"YE":{"value":"YER"},"HU":{"value":"HUF"},"ID":{"value":"IDR"},"YT":{"value":"EUR"},"IE":{"value":"EUR"},"IL":{"value":"ILS"},"IM":{"value":"IMP"},"IN":{"value":"INR"},"IO":{"value":""},"IQ":{"value":"IQD"} +,"IR":{"value":"IRR"},"IS":{"value":"ISK"},"IT":{"value":"EUR"},"ZM":{"value":"ZMK"},"886":{"value":"Taipei"},"JE":{"value":"JEP"},"ZW":{"value":"ZWD"},"JM":{"value":"JMD"},"JO":{"value":"JOD"},"JP":{"value":"JPY"},"KE":{"value":"KES"},"KG":{"value":"KGS"},"KH":{"value":"KHR"},"KI":{"value":"AUD"},"KM":{"value":"KMF"},"KN":{"value":"XCD"},"KW":{"value":"KWD"},"KY":{"value":"KYD"},"KZ":{"value":"KZT"},"LA":{"value":"LAK"},"LB":{"value":"LBP"},"LC":{"value":"XCD"},"LI":{"value":"CHF"},"LK":{"value":"LKR"},"LR": +{"value":"LRD"},"LS":{"value":"LSL"},"LT":{"value":"LTL"},"LU":{"value":"EUR"},"LV":{"value":"LVL"},"LY":{"value":"LYD"},"MA":{"value":"MAD"},"MC":{"value":"EUR"},"MD":{"value":""},"ME":{"value":"EUR"},"MG":{"value":"MGA"},"MH":{"value":"USD"},"MK":{"value":"MKD"},"ML":{"value":"XOF"},"MM":{"value":"MMK"},"MN":{"value":"MNT"},"MO":{"value":"MOP"},"MP":{"value":"USD"},"MQ":{"value":"EUR"},"MR":{"value":"MRO"},"MS":{"value":"XCD"},"MT":{"value":"MTL"},"MU":{"value":"MUR"},"MV":{"value":"MVR"},"MW":{"value":"MWK"} +,"MX":{"value":"MXN"},"MY":{"value":"MYR"},"MZ":{"value":"MZM"},"NA":{"value":"NAD"},"NC":{"value":"XPF"},"NE":{"value":"XOF"},"NF":{"value":"AUD"},"NG":{"value":"NGN"},"NI":{"value":"NIO"},"NL":{"value":"EUR"},"NO":{"value":"NOK"},"NP":{"value":"NPR"},"NR":{"value":"AUD"},"NU":{"value":"NZD"},"NZ":{"value":"NZD"},"OM":{"value":"OMR"},"220":{"value":"Banjul"},"PA":{"value":"PAB"},"PE":{"value":"PEN"},"PF":{"value":""},"PG":{"value":"PGK"},"PH":{"value":"PHP"},"PK":{"value":"PKR"},"PL":{"value":"PLN"},"PM":{"value" +:"EUR"},"PN":{"value":"NZD"}};} +function DR(){var a=this;C.call(a);a.bJ=0;a.L=0;a.b0=null;a.ch=null;a.t=null;a.o=null;a.C=null;a.x=null;a.z=null;a.ba=null;} +function Jy(){var a=new DR();GP(a);return a;} +function GP(a){G(a);} +function Jd(b){Jy().cS();} +function H0(a){a.b0=I0();a.ch=Jp();a.t=window.document;Fx(a);C5(a);} +function Fx(a){var b,c,d,e,f,g;b=a.t.getElementById("game-container");if(b===null){b=a.t.createElement("div");b.M(B(12));a.t.body.appendChild(b);}c="";b.innerHTML=c;d=a.t.createElement("h1");c="Number Guessing Game";d.innerHTML=c;b.appendChild(d);e=a.t.createElement("p");c="Guess a number between 1 and 100!";e.innerHTML=c;b.appendChild(e);a.ba=a.t.createElement("p");a.ba.M(B(13));c=a.ba;f="Number of guesses: 0";c.innerHTML=f;c=a.ba;b.appendChild(c);a.o=a.t.createElement("input");c=a.o;f="number";c.type=f;a.o.setAttribute("min", +"1");a.o.setAttribute("max","100");a.o.setAttribute("placeholder","Enter your guess");a.o.M(B(14));c=a.o;b.appendChild(c);a.C=a.t.createElement("button");c=a.C;f="Submit Guess";c.innerHTML=f;a.C.M(B(15));c=a.C;g=Ja(a);c.addEventListener("click",Ck(g,"handleEvent"));c=a.C;b.appendChild(c);c=a.o;g=Jz(a);c.addEventListener("keypress",Ck(g,"handleEvent"));a.z=a.t.createElement("p");a.z.M(B(16));c=a.z;f=" ";c.innerHTML=f;c=a.z;b.appendChild(c);a.x=a.t.createElement("button");c=a.x;f="New Game";c.innerHTML=f;a.x.M(B(17));a.x.style.setProperty("display", +"none");c=a.x;g=Ju(a);c.addEventListener("click",Ck(g,"handleEvent"));c=a.x;b.appendChild(c);} +function C5(a){var b,c;a.bJ=a.b0.dc(100);a.L=0;b=a.o;c="";b.value=c;b=a.o;c=!!0;b.disabled=c;b=a.C;c=!!0;b.disabled=c;a.x.style.setProperty("display","none");b=a.z;c=" ";b.innerHTML=c;b=a.z;c="";b.className=c;Cu(a);a.o.focus();} +function CZ(a){var b,c,d,e,f,g,h,i,$$je;b=$rt_str(a.o.value).c0();if(b.J()){Br(a,B(18),B(19));return;}a:{try{c=FA(b);break a;}catch($$e){$$je=C2($$e);if($$je instanceof CH){}else{throw $$e;}}Br(a,B(20),B(19));d=a.o;e="";d.value=e;return;}b:{try{a.ch.dT(c);break b;}catch($$e){$$je=C2($$e);if($$je instanceof Bo){f=$$je;}else{throw $$e;}}Br(a,f.c7(),B(19));d=a.o;e="";d.value=e;return;}a.L=a.L+1|0;Cu(a);if(c>a.bJ)Br(a,B(21),B(22));else if(c=92)return (b-32|0)-2|0;return (b-32|0)-1|0;} +function B4(){var a=this;C.call(a);a.k=null;a.m=0;} +function Ka(){var a=new B4();EK(a);return a;} +function Jm(a){var b=new B4();Ct(b,a);return b;} +function EK(a){Ct(a,16);} +function Ct(a,b){G(a);a.k=$rt_createCharArray(b);} +function Ew(a,b){return a.bs(a.m,b);} +function Dh(a,b,c){var d,e,f;if(b>=0&&b<=a.m){if(c===null)c=B(32);else if(c.J())return a;a.V(a.m+c.c()|0);d=a.m-1|0;while(d>=b){a.k.data[d+c.c()|0]=a.k.data[d];d=d+(-1)|0;}a.m=a.m+c.c()|0;d=0;while(dc){k=h;break b;}i=i+1|0;if(k>j)break;h=k;}}if(!e)i=i+1|0;Bb(a,b,b+i|0);if(e)l=b;else{f=a.k.data;l=b+1|0;f[b]=45;}while(true){if(k<=0)break a;f=a.k.data;g=l+1|0;f[l]=Bd(c/k|0,d);c=c%k|0;k=k/d|0;l=g;}}}return a;} +function ED(a,b){return a.ck(a.m,b);} +function Fv(a,b,c){return a.dm(b,c,10);} +function F7(a,b,c,d){var e,f,g,h,i,j,k,l;e=1;if(Long_lt(c,Long_ZERO)){e=0;c=Long_neg(c);}a:{f=Long_fromInt(d);if(Long_lt(c,f)){if(e)Bb(a,b,b+1|0);else{Bb(a,b,b+2|0);g=a.k.data;h=b+1|0;g[b]=45;b=h;}a.k.data[b]=Bd(c.lo,d);}else{i=1;j=Long_fromInt(1);while(true){k=Long_mul(j,f);if(Long_le(k,j))break;if(Long_gt(k,c))break;i=i+1|0;j=k;}if(!e)i=i+1|0;Bb(a,b,b+i|0);if(e)l=b;else{g=a.k.data;l=b+1|0;g[b]=45;}while(true){if(Long_le(j,Long_ZERO))break a;g=a.k.data;h=l+1|0;g[l]=Bd(Long_div(c,j).lo,d);c=Long_rem(c,j);j= +Long_div(j,f);l=h;}}}return a;} +function Fd(a,b){return a.b6(a.m,b);} +function E0(a,b,c){Bb(a,b,b+1|0);a.k.data[b]=c;return a;} +function EO(a,b){return a.bZ(a.m,b);} +function DE(a,b,c){return a.bs(b,c===null?B(32):c.d());} +function EF(a,b){var c,d;if(a.k.data.length>=b)return;if(a.k.data.length>=1073741823)c=2147483647;else{d=a.k.data.length*2|0;c=Bq(b,Bq(d,5));}a.k=Ed(a.k,c);} +function DP(a){return H8(a.k,0,a.m);} +function El(a){return a.m;} +function DL(a,b){if(b>=0&&b=0){Bb(a,b,(b+e|0)-d|0);while(d=0){a.k.data[c+e|0]=a.k.data[b+e|0];e=e+(-1)|0;}a.m=a.m+(c-b|0)|0;} +function CE(){} +function Dw(){B4.call(this);} +function I4(a){var b=new Dw();Ib(b,a);return b;} +function F(){var a=new Dw();HW(a);return a;} +function Ib(a,b){Ct(a,b);} +function HW(a){EK(a);} +function Gb(a,b){Ew(a,b);return a;} +function DU(a,b){EI(a,b);return a;} +function GZ(a,b){ED(a,b);return a;} +function F3(a,b){Fd(a,b);return a;} +function Hx(a,b,c,d){EV(a,b,c,d);return a;} +function Gz(a,b){Fr(a,b);return a;} +function BY(a,b){EO(a,b);return a;} +function Gl(a,b,c){Fv(a,b,c);return a;} +function Gx(a,b,c,d,e){DK(a,b,c,d,e);return a;} +function If(a,b,c){DE(a,b,c);return a;} +function GX(a,b,c){E0(a,b,c);return a;} +function In(a,b,c){Dh(a,b,c);return a;} +function It(a,b){DY(a,b);} +function HA(a,b,c,d,e){return a.ex(b,c,d,e);} +function IL(a,b,c,d){return a.dz(b,c,d);} +function GI(a,b){return DL(a,b);} +function Hw(a){return El(a);} +function CO(a){return DP(a);} +function Iw(a,b){EF(a,b);} +function Gd(a,b,c){return a.d2(b,c);} +function FP(a,b,c){return a.d0(b,c);} +function Ia(a,b,c){return a.cX(b,c);} +function IJ(a,b,c){return a.dV(b,c);} +function F6(a,b){return a.cv(b);} +function D1(){Q.call(this);} +function Jt(){var a=new D1();Io(a);return a;} +function Io(a){Bn(a);} +function Cp(){} +function C9(){} +function CP(){} +function CK(){} +function CX(){} +function EB(){var a=this;M.call(a);a.c1=null;a.d8=0;} +function Jj(a,b){var c=new EB();FN(c,a,b);return c;} +function FN(a,b,c){Z(a,F().a(B(33)).a(b).a(B(34)).q(c).d());a.c1=b;a.d8=c;} +function CC(){C.call(this);this.ee=null;} +var Kb=null;function Jr(a){var b=new CC();II(b,a);return b;} +function II(a,b){G(a);a.ee=b;} +function Hc(){var b,c,d,e;if(Kb!==null)return;Kb=JD();b=Ir();c=0;while(c=1073741823)c=2147483647;else{d=a.A.data.length*2|0;c=Bq(b,Bq(d,5));}a.A=HL(a.A,c);}} +function Iv(a,b){DC(a,b);return a.A.data[b];} +function Hj(a){return a.S;} +function Hf(a,b){var c,d;a.V(a.S+1|0);c=a.A.data;d=a.S;a.S=d+1|0;c[d]=b;a.bc=a.bc+1|0;return 1;} +function DC(a,b){if(b>=0&&b=0&&b=a.e.data.length)return (-1);if(a.e.data[d]==e)break;d=d+1|0;}return d;}f=BQ(b);g=BJ(b);while(true){if(d>=(a.e.data.length-1|0))return (-1);if(a.e.data[d]==f&&a.e.data[d+1|0]==g)break;d=d+1|0;}return d;} +function FV(a,b){return a.by(b,0);} +function Hd(a,b,c){var d,e,f,g,h,i;d=Cx(c,a.c()-1|0);if(b<65536){e=b&65535;while(true){if(d<0)return (-1);if(a.e.data[d]==e)break;d=d+(-1)|0;}return d;}f=BQ(b);g=BJ(b);while(true){if(d<1)return (-1);if(a.e.data[d]==g){h=a.e.data;i=d-1|0;if(h[i]==f)break;}d=d+(-1)|0;}return i;} +function HG(a,b){return a.ei(b,a.c()-1|0);} +function Gg(a,b,c){if(b>c)E(B5());return H8(a.e,b,c-b|0);} +function HK(a,b){return a.y(b,a.c());} +function Im(a){var b,c;b=0;c=a.c()-1|0;a:{while(b<=c){if(a.h(b)>32)break a;b=b+1|0;}}while(b<=c&&a.h(c)<=32){c=c+(-1)|0;}return a.y(b,c+1|0);} +function HV(a){return a;} +function H9(a){var b,c,d;b=$rt_createCharArray(a.e.data.length);c=0;while(true){d=b.data;if(c>=d.length)break;d[c]=a.e.data[c];c=c+1|0;}return b;} +function Fy(b){BP();return b===null?B(32):b.d();} +function BD(b){var c,d;BP();c=new BN;d=$rt_createCharArray(1);d.data[0]=b;Cs(c,d);return c;} +function He(a,b){var c,d;if(a===b)return 1;if(!(b instanceof BN))return 0;c=b;if(c.c()!=a.c())return 0;d=0;while(d=c)break a;e=b[d];a.bb=(31*a.bb|0)+e|0;d=d+1|0;}}}return a.bb;} +function Gp(a){var b,c,d,e,f,g,h,i;if(a.J())return a;b=$rt_createIntArray(a.e.data.length);c=0;d=0;while(d=a.cf?0:1;} +function GH(a){var b,c;Fi(a);a.b4=a.bj;b=a.U;c=a.bj;a.bj=c+1|0;return b.dp(c);} +function Fi(a){if(a.cd>=a.U.bc)return;E(Jt());} +function ES(){C.call(this);} +function Jp(){var a=new ES();IP(a);return a;} +function IP(a){G(a);} +function GO(a,b){if(b>=1&&b<=101)return;E(O(B(36)));} +function DW(){C.call(this);} +function E5(b){if (b === null || b.constructor.$meta.item === undefined) {$rt_throw(HU());}return b.data.length;} +function E$(b,c){if(b===null)E(CN());if(b===H($rt_voidcls()))E(HU());if(c<0)E(Jl());return HD(b.ec(),c);} +function HD(b,c){if (b.$meta.primitive) {if (b == $rt_bytecls()) {return $rt_createByteArray(c);}if (b == $rt_shortcls()) {return $rt_createShortArray(c);}if (b == $rt_charcls()) {return $rt_createCharArray(c);}if (b == $rt_intcls()) {return $rt_createIntArray(c);}if (b == $rt_longcls()) {return $rt_createLongArray(c);}if (b == $rt_floatcls()) {return $rt_createFloatArray(c);}if (b == $rt_doublecls()) {return $rt_createDoubleArray(c);}if (b == $rt_booleancls()) {return $rt_createBooleanArray(c);}} else {return $rt_createArray(b, c)}} +function DJ(){var a=this;C.call(a);a.cl=null;a.H=null;a.bu=null;a.j=null;a.B=null;a.g=0;a.ct=0;a.cn=0;a.s=0;a.cx=0;a.u=0;a.w=0;a.l=0;} +function Jn(a,b,c,d,e){var f=new DJ();Hk(f,a,b,c,d,e);return f;} +function Hk(a,b,c,d,e,f){G(a);a.cl=b;a.H=c;a.bu=d;a.j=e;a.B=f;} +function IT(a){var b,c;while(true){b=a.j.by(37,a.g);if(b<0)break;a.H.Z(a.j.y(a.g,b));a.g=b+1|0;a.ct=a.g;c=DZ(a);Fn(a);Du(a,c);}a.H.Z(a.j.bk(a.g));} +function Du(a,b){a:{b:{switch(b){case 66:break;case 67:CB(a,b,1);break a;case 68:CD(a,b,1);break a;case 69:case 70:case 71:case 73:case 74:case 75:case 76:case 77:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 96:case 97:case 101:case 102:case 103:case 105:case 106:case 107:case 108:case 109:case 110:case 112:case 113:case 114:case 116:case 117:case 118:case 119:break b;case 72:Cl(a,b,1);break a;case 79:BR(a,b,3,1);break a;case 83:Ch(a, +b,1);break a;case 88:BR(a,b,4,1);break a;case 98:Cy(a,b,0);break a;case 99:CB(a,b,0);break a;case 100:CD(a,b,0);break a;case 104:Cl(a,b,0);break a;case 111:BR(a,b,3,0);break a;case 115:Ch(a,b,0);break a;case 120:BR(a,b,4,0);break a;default:break b;}Cy(a,b,1);break a;}E(FC(BD(b)));}} +function Cy(a,b,c){var d,e;Cf(a,b);d=a.B.data[a.s];e=Dy(d instanceof BC?d.eS():d===null?0:1);Bj(a,c,e);} +function Cl(a,b,c){var d,e;Cf(a,b);d=a.B.data[a.s];e=d===null?B(32):C6(d.bq());Bj(a,c,e);} +function Ch(a,b,c){var d,e;Cf(a,b);d=a.B.data[a.s];if(!Gn(d,CT))Bj(a,c,Fy(d));else{e=a.l&7;if(c)e=e|2;d.e7(a.cl,e,a.u,a.w);}} +function CB(a,b,c){var d,e;BH(a,b,259);d=a.B.data[a.s];if(a.w>=0)E(Hg(a.w));if(d instanceof Bk)e=d.eN();else if(d instanceof Bu)e=d.ev()&65535;else if(d instanceof BF)e=d.cQ()&65535;else{if(!(d instanceof Bg)){if(d===null){Bj(a,c,B(32));return;}E(EL(b,d===null?null:Bc(d)));}e=d.bQ();if(!Ft(e))E(Jo(e));}Bj(a,c,Dm(EZ(e)));} +function CD(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;BH(a,b,507);Da(a);d=a.B.data[a.s];if(d instanceof BO){e=d.dN();f=D6(GM(e));g=Long_ge(e,Long_ZERO)?0:1;}else{if(!(d instanceof Bg)&&!(d instanceof Bu)&&!(d instanceof BF))E(EL(b,d===null?null:Bc(d)));h=d.bQ();f=CM(FQ(h));g=h>=0?0:1;}i=0;j=F();if(g){if(!(a.l&128)){j.q(45);i=1;}else{j.q(40);i=2;}}else if(a.l&8){j.q(43);i=1;}else if(a.l&16){j.q(32);i=1;}k=F();if(!(a.l&64))k.a(f);else{l=Hi(a.bu).dX();m=IE(a.bu).dD();n=f.c()%m|0;if(!n)n=m;o=0;while(n=a.u)break a;j.q(Bd(0,10));n=n+1|0;}}}j.cv(k);if(g&&a.l&128)j.q(41);Bj(a,c,j.d());} +function BR(a,b,c,d){var e,f,g,h,i;BH(a,b,423);Da(a);e=a.B.data[a.s];if(e instanceof BO)f=H_(e.dN(),c);else if(e instanceof Bg)f=BW(e.bQ(),c);else if(e instanceof BF)f=BW(e.cQ()&65535,c);else{if(!(e instanceof Bu))E(EL(b,e===null?null:Bc(e)));f=BW(e.ev()&255,c);}g=F();if(a.l&4){h=c!=4?B(37):B(38);f=F().a(h).a(f).d();}a:{if(a.l&32){i=f.c();while(true){if(i>=a.u)break a;g.q(Bd(0,10));i=i+1|0;}}}g.a(f);Bj(a,d,g.d());} +function Da(a){if(a.l&8&&a.l&16)E(F_(B(39)));if(a.l&32&&a.l&1)E(F_(B(40)));if(a.w>=0)E(Hg(a.w));if(a.l&1&&a.u<0)E(I$(a.j.y(a.ct,a.g)));} +function Bj(a,b,c){if(a.w>0)c=c.y(0,a.w);if(b)c=c.cV();if(!(a.l&1)){CI(a,c);a.H.Z(c);}else{a.H.Z(c);CI(a,c);}} +function Cf(a,b){BH(a,b,263);} +function BH(a,b,c){if((a.l|c)==c)return;E(Jj(Fk(a,a.l&(c^(-1))),b));} +function Fk(a,b){var c;c=Ev(b);return BD(B(41).h(c));} +function CI(a,b){var c,d,e;if(a.u>b.c()){c=a.u-b.c()|0;d=I4(c);e=0;while(e=48&&b<=57?1:0;} +function Ex(){var a=this;C.call(a);a.bA=null;a.df=0;a.b7=0;a.dn=0;a.dP=0;a.dx=0;a.d_=0;a.dO=0;a.dE=null;a.en=null;a.el=0;a.eE=0;a.dl=null;} +function Hi(a){var b=new Ex();Hz(b,a);return b;} +function Hz(a,b){G(a);a.bA=b;DT(a);} +function DT(a){var b,c,d;b=H$(B1(a.bA),B7(a.bA));a.df=48;c=b.groupingSeparator;a.b7=c&65535;c=b.decimalSeparator;a.dn=c&65535;c=b.perMille;a.dP=c&65535;c=b.percent;a.dx=c&65535;a.d_=35;a.dO=59;d=(b.naN!==null?$rt_str(b.naN):null);a.dE=d;d=(b.infinity!==null?$rt_str(b.infinity):null);a.en=d;c=b.minusSign;a.el=c&65535;c=b.decimalSeparator;a.eE=c&65535;d=(b.exponentSeparator!==null?$rt_str(b.exponentSeparator):null);a.dl=d;} +function H5(a){return a.b7;} +function IG(a){var b,c,$$je;a:{try{b=Fo(a);}catch($$e){$$je=C2($$e);if($$je instanceof Cj){c=$$je;break a;}else{throw $$e;}}return b;}E(I6(B(42),c));} +function DV(){C.call(this);} +function Jh(){var a=new DV();F0(a);return a;} +function F0(a){G(a);} +function G3(a,b){return a.ef()*b|0;} +function Gc(a){return Math.random();} +function C3(){} +function Fz(){C.call(this);} +function Dq(){Q.call(this);} +function Jx(a){var b=new Dq();Ga(b,a);return b;} +function CN(){var a=new Dq();Ic(a);return a;} +function Ga(a,b){CG(a,b);} +function Ic(a){Bn(a);} +function Cv(){} +function Dz(){var a=this;C.call(a);a.co=null;a.bg=null;a.dj=null;} +function JE(){var a=new Dz();HH(a);return a;} +function Kl(a){var b=new Dz();Dl(b,a);return b;} +function Km(a,b){var c=new Dz();EQ(c,a,b);return c;} +function HH(a){Dl(a,Cw());} +function Dl(a,b){EQ(a,F(),b);} +function EQ(a,b,c){G(a);a.bg=b;a.co=c;} +function CJ(a){if(a.bg!==null)return;E(IY());} +function Eo(a){CJ(a);return a.bg.d();} +function Fw(a,b,c){return FE(a,a.co,b,c);} +function FE(a,b,c,d){var e,$$je;CJ(a);a:{try{if(d===null)d=U(C,1);Jn(a,a.bg,b,c,d).dG();break a;}catch($$e){$$je=C2($$e);if($$je instanceof CQ){e=$$je;}else{throw $$e;}}a.dj=e;}return a;} +function En(){Bv.call(this);} +function Kn(a){var b=new En();H1(b,a);return b;} +function H1(a,b){CA(a,b);} +function Fa(){M.call(this);this.em=0;} +function Hg(a){var b=new Fa();G4(b,a);return b;} +function G4(a,b){Z(a,F().a(B(43)).n(b).d());a.em=b;} +function Cg(){var a=this;C.call(a);a.dU=null;a.cW=0;} +function Ko(a,b){var c=new Cg();Eq(c,a,b);return c;} +function Eq(a,b,c){G(a);a.dU=b;a.cW=c;} +function FB(){C.call(this);} +function BW(b,c){var d,e,f,g,h,i,j,k;if(!b)return B(37);d=1<=0){j=g.data;k=i+1|0;j[i]=Bd(b>>>h&e,d);h=h-c|0;i=k;}return Dm(g);} +function H_(b,c){var d,e,f,g,h,i,j,k;if(Long_eq(b,Long_ZERO))return B(37);d=1<c)c=b;return c;} +function FQ(b){if(b<=0)b= -b;return b;} +function GM(b){if(Long_le(b,Long_ZERO))b=Long_neg(b);return b;} +function Bu(){Y.call(this);} +var KO=null;function KP(){KP=Ba(Bu);Gv();} +function Gv(){KO=H($rt_bytecls());} +function V(){Cg.call(this);this.c9=0;} +var KQ=null;var KR=null;var KS=null;var KT=null;var KU=null;var KV=null;var Kd=null;var KW=null;var KX=null;function Ix(){Ix=Ba(V);GK();} +function Bs(a,b,c){var d=new V();EX(d,a,b,c);return d;} +function EX(a,b,c,d){Ix();Eq(a,b,c);a.c9=d;} +function GK(){var b,c;KQ=Bs(B(61),0,0);KR=Bs(B(62),1,1);KS=Bs(B(63),2,2);KT=Bs(B(64),3,3);KU=Bs(B(65),4,4);KV=Bs(B(66),5,5);Kd=Bs(B(67),6,6);KW=Bs(B(68),7,7);b=U(V,8);c=b.data;c[0]=KQ;c[1]=KR;c[2]=KS;c[3]=KT;c[4]=KU;c[5]=KV;c[6]=Kd;c[7]=KW;KX=b;} +function Fj(){C.call(this);} +function Ck(b,c){var name='jso$functor$'+c;if(!b[name]){var fn=function(){return b[c].apply(b,arguments);};b[name]=function(){return fn;};}return b[name]();} +function B6(b,c){if(typeof b!=="function")return b;var result={};result[c]=b;return result;} +function E2(){C.call(this);} +function IB(b){var c,d,e,f;c=JF(b.et());d=DQ(c);e=$rt_createIntArray(d);f=0;while(f=a.i.c())break a;d:{f=a.i.h(a.b);switch(f){case 35:case 48:if(!b)break a;E(O(F().a(B(72)).n(a.b).a(B(71)).a(a.i).d()));case 37:if(e.c()>0){d.v(BL(e.d()));e.O(0);}d.v(I8());a.b=a.b+1|0;a.bp=100;break d;case 39:a.b=a.b+1|0;g=a.i.by(39,a.b);if(g<0)E(O(F().a(B(73)).n(a.b).a(B(74)).a(a.i).d()));if(g==a.b)e.q(39);else e.a(a.i.y(a.b,g));a.b=g+1|0;break d;case 45:if(e.c()>0){d.v(BL(e.d()));e.O(0);}d.v(Il());a.b=a.b+1|0;break d;case 46:case 69:break c;case 59:break b;case 164:if +(e.c()>0){d.v(BL(e.d()));e.O(0);}d.v(Js());a.b=a.b+1|0;break d;case 8240:if(e.c()>0){d.v(BL(e.d()));e.O(0);}d.v(IZ());a.b=a.b+1|0;a.bp=1000;break d;default:}e.q(f);a.b=a.b+1|0;}}E(O(F().a(B(72)).n(a.b).a(B(71)).a(a.i).d()));}if(c)E(O(F().a(B(72)).n(a.b).a(B(71)).a(a.i).d()));}if(e.c()>0)d.v(BL(e.d()));return d.c3(U(S,d.bC()));} +function CF(a,b){Ds(a,b);if(a.b=a.i.c())break a;c:{d:{switch(a.i.h(a.b)){case 35:if(!e)break b;f=f+1|0;break c;case 44:break d;case 48:break;default:break a;}e=0;f=f+1|0;g=g+1|0;break c;}if(d==a.b)E(O(F().a(B(75)).n(a.b).a(B(71)).a(a.i).d()));if(b)a.N=a.b-d|0;d=a.b+1|0;}a.b=a.b+1|0;}E(O(F().a(B(76)).n(a.b).a(B(71)).a(a.i).d()));}if(!f)E(O(F().a(B(77)).n(a.b).a(B(71)).a(a.i).d()));if(d==a.b)E(O(F().a(B(78)).n(a.b).a(B(71)).a(a.i).d()));if(b&&d>c)a.N=a.b-d|0;if(b) +{a.b5=f;a.bL=g;}} +function Ff(a,b){var c,d,e;c=0;d=0;e=0;a:{b:while(true){if(a.b>=a.i.c())break a;c:{switch(a.i.h(a.b)){case 35:break;case 44:E(O(F().a(B(79)).n(a.b).a(B(71)).a(a.i).d()));case 46:E(O(F().a(B(80)).n(a.b).a(B(71)).a(a.i).d()));case 48:if(c)break b;d=d+1|0;e=e+1|0;break c;default:break a;}d=d+1|0;c=1;}a.b=a.b+1|0;}E(O(F().a(B(81)).n(a.b).a(B(71)).a(a.i).d()));}if(b){a.bI=d;a.bP=e;a.be=d?0:1;}} +function D7(a,b){var c;c=0;a:{b:while(true){if(a.b>=a.i.c())break a;switch(a.i.h(a.b)){case 35:case 44:case 46:case 69:break b;case 48:break;default:break a;}c=c+1|0;a.b=a.b+1|0;}E(O(F().a(B(82)).n(a.b).a(B(71)).a(a.i).d()));}if(c){if(b)a.bH=c;return;}E(O(F().a(B(83)).n(a.b).a(B(71)).a(a.i).d()));} +function Cd(){var a=this;C.call(a);a.bT=null;a.bh=null;} +function KY(a,b){var c=new Cd();Fq(c,a,b);return c;} +function Fq(a,b,c){G(a);a.bT=b;a.bh=c;} +function Co(){var a=this;Cd.call(a);a.bx=0;a.Y=null;} +function I3(a,b){var c=new Co();HS(c,a,b);return c;} +function HS(a,b,c){Fq(a,b,null);a.bx=c;} +function CR(){} +function Et(){C.call(this);} +function Ji(){var a=new Et();Ho(a);return a;} +function Ho(a){G(a);} +function Ef(){Q.call(this);} +function Dj(){var a=new Ef();Gj(a);return a;} +function Gj(a){Bn(a);} +function CT(){} +function DX(){C.call(this);this.b2=null;} +function I0(){var a=new DX();ID(a);return a;} +function ID(a){G(a);a.b2=Jh();} +function H3(a,b){return a.b2.c2(b+1|0);} +function Ce(){C.call(this);} +function KZ(){var a=new Ce();Dg(a);return a;} +function Dg(a){G(a);} +function E_(){var a=this;Ce.call(a);a.Q=0;a.r=null;a.bm=0;a.cB=0.0;a.bG=0;} +function JD(){var a=new E_();FO(a);return a;} +function K0(a){var b=new E_();Dk(b,a);return b;} +function K1(a,b){var c=new E_();ET(c,a,b);return c;} +function G1(a,b){return U(Co,b);} +function FO(a){Dk(a,16);} +function Dk(a,b){ET(a,b,0.75);} +function EJ(b){var c,d;if(b>=1073741824)return 1073741824;if(!b)return 16;c=b-1|0;d=c|c>>1;d=d|d>>2;d=d|d>>4;d=d|d>>8;d=d|d>>16;return d+1|0;} +function ET(a,b,c){var d;Dg(a);if(b>=0&&c>0.0){d=EJ(b);a.Q=0;a.r=a.cm(d);a.cB=c;CY(a);return;}E(HU());} +function CY(a){a.bG=a.r.data.length*a.cB|0;} +function G7(a,b){var c;c=DS(a,b);if(c===null)return null;return c.bh;} +function DS(a,b){var c,d,e;if(b===null)c=C8(a);else{d=E8(b);e=d&(a.r.data.length-1|0);c=Cr(a,b,e,d);}return c;} +function Cr(a,b,c,d){var e,f;e=a.r.data[c];while(e!==null){if(e.bx==d){f=e.bT;if(G8(b,f))break;}e=e.Y;}return e;} +function C8(a){var b;b=a.r.data[0];while(b!==null&&b.bT!==null){b=b.Y;}return b;} +function Gr(a,b,c){return a.ea(b,c);} +function GN(a,b,c){var d,e,f,g,h;if(b===null){d=C8(a);if(d===null){a.bm=a.bm+1|0;d=a.cD(null,0,0);e=a.Q+1|0;a.Q=e;if(e>a.bG)a.cC();}}else{f=E8(b);g=f&(a.r.data.length-1|0);d=Cr(a,b,g,f);if(d===null){a.bm=a.bm+1|0;d=a.cD(b,g,f);e=a.Q+1|0;a.Q=e;if(e>a.bG)a.cC();}}h=d.bh;d.bh=c;return h;} +function H2(a,b,c,d){var e;e=I3(b,d);e.Y=a.r.data[c];a.r.data[c]=e;return e;} +function GG(a,b){var c,d,e,f,g,h,i;c=EJ(!b?1:b<<1);d=a.cm(c);e=0;while(e0){str+=", ";}str+=this.data[i].toString();}str+="]";return str;};$rt_setCloneMethod($rt_array.prototype,function(){var dataCopy;if('slice' in this.data){dataCopy=this.data.slice();}else {dataCopy=new this.data.constructor(this.data.length);for +(var i=0;ib.hi){return true;}var x=a.lo>>>1;var y=b.lo>>>1;if(x!==y){return x>y;}return (a.lo&1)>(b.lo&1);}function Long_ge(a,b){if(a.hib.hi){return true;}var x=a.lo>>>1;var y=b.lo>>>1;if(x!==y){return x>=y;}return (a.lo&1)>=(b.lo&1);}function Long_lt(a,b){if(a.hi>b.hi){return false;}if(a.hi>> +1;var y=b.lo>>>1;if(x!==y){return xb.hi){return false;}if(a.hi>>1;var y=b.lo>>>1;if(x!==y){return x<=y;}return (a.lo&1)<=(b.lo&1);}function Long_add(a,b){if(a.hi===a.lo>>31&&b.hi===b.lo>>31){return Long_fromNumber(a.lo+b.lo);}else if(Math.abs(a.hi)>>16;var a_hilo=a.hi&0xFFFF;var a_hihi +=a.hi>>>16;var b_lolo=b.lo&0xFFFF;var b_lohi=b.lo>>>16;var b_hilo=b.hi&0xFFFF;var b_hihi=b.hi>>>16;var lolo=a_lolo+b_lolo|0;var lohi=a_lohi+b_lohi+(lolo>>16)|0;var hilo=a_hilo+b_hilo+(lohi>>16)|0;var hihi=a_hihi+b_hihi+(hilo>>16)|0;return new Long(lolo&0xFFFF|(lohi&0xFFFF)<<16,hilo&0xFFFF|(hihi&0xFFFF)<<16);}function Long_inc(a){var lo=a.lo+1|0;var hi=a.hi;if(lo===0){hi=hi+1|0;}return new Long(lo,hi);}function Long_dec(a){var lo=a.lo -1|0;var hi=a.hi;if(lo=== -1){hi=hi -1|0;}return new Long(lo,hi);}function Long_neg(a) +{return Long_inc(new Long(a.lo^0xFFFFFFFF,a.hi^0xFFFFFFFF));}function Long_sub(a,b){if(a.hi===a.lo>>31&&b.hi===b.lo>>31){return Long_fromNumber(a.lo -b.lo);}var a_lolo=a.lo&0xFFFF;var a_lohi=a.lo>>>16;var a_hilo=a.hi&0xFFFF;var a_hihi=a.hi>>>16;var b_lolo=b.lo&0xFFFF;var b_lohi=b.lo>>>16;var b_hilo=b.hi&0xFFFF;var b_hihi=b.hi>>>16;var lolo=a_lolo -b_lolo|0;var lohi=a_lohi -b_lohi+(lolo>>16)|0;var hilo=a_hilo -b_hilo+(lohi>>16)|0;var hihi=a_hihi -b_hihi+(hilo>>16)|0;return new Long(lolo&0xFFFF|(lohi&0xFFFF)<< +16,hilo&0xFFFF|(hihi&0xFFFF)<<16);}function Long_compare(a,b){var r=a.hi -b.hi;if(r!==0){return r;}r=(a.lo>>>1) -(b.lo>>>1);if(r!==0){return r;}return (a.lo&1) -(b.lo&1);}function Long_isPositive(a){return (a.hi&0x80000000)===0;}function Long_isNegative(a){return (a.hi&0x80000000)!==0;}function Long_mul(a,b){var positive=Long_isNegative(a)===Long_isNegative(b);if(Long_isNegative(a)){a=Long_neg(a);}if(Long_isNegative(b)){b=Long_neg(b);}var a_lolo=a.lo&0xFFFF;var a_lohi=a.lo>>>16;var a_hilo=a.hi&0xFFFF;var a_hihi +=a.hi>>>16;var b_lolo=b.lo&0xFFFF;var b_lohi=b.lo>>>16;var b_hilo=b.hi&0xFFFF;var b_hihi=b.hi>>>16;var lolo=0;var lohi=0;var hilo=0;var hihi=0;lolo=a_lolo*b_lolo|0;lohi=lolo>>>16;lohi=(lohi&0xFFFF)+a_lohi*b_lolo|0;hilo=hilo+(lohi>>>16)|0;lohi=(lohi&0xFFFF)+a_lolo*b_lohi|0;hilo=hilo+(lohi>>>16)|0;hihi=hilo>>>16;hilo=(hilo&0xFFFF)+a_hilo*b_lolo|0;hihi=hihi+(hilo>>>16)|0;hilo=(hilo&0xFFFF)+a_lohi*b_lohi|0;hihi=hihi+(hilo>>>16)|0;hilo=(hilo&0xFFFF)+a_lolo*b_hilo|0;hihi=hihi+(hilo>>>16)|0;hihi=hihi+a_hihi*b_lolo ++a_hilo*b_lohi+a_lohi*b_hilo+a_lolo*b_hihi|0;var result=new Long(lolo&0xFFFF|lohi<<16,hilo&0xFFFF|hihi<<16);return positive?result:Long_neg(result);}function Long_div(a,b){if(Math.abs(a.hi)=0&&a.hi=0&&b.hi=0&&a.hi=0&&b.hi>>16|a.hi<<16);}function Long_shiftRight16(a) +{return new Long(a.lo>>>16|a.hi<<16,a.hi>>>16);}function Long_and(a,b){return new Long(a.lo&b.lo,a.hi&b.hi);}function Long_or(a,b){return new Long(a.lo|b.lo,a.hi|b.hi);}function Long_xor(a,b){return new Long(a.lo^b.lo,a.hi^b.hi);}function Long_shl(a,b){b&=63;if(b===0){return a;}else if(b<32){return new Long(a.lo<>>32 -b|a.hi<>>b|a.hi +<<32 -b,a.hi>>b);}else if(b===32){return new Long(a.hi,a.hi>>31);}else {return new Long(a.hi>>b -32,a.hi>>31);}}function Long_shru(a,b){b&=63;if(b===0){return a;}else if(b<32){return new Long(a.lo>>>b|a.hi<<32 -b,a.hi>>>b);}else if(b===32){return new Long(a.hi,0);}else {return new Long(a.hi>>>b -32,0);}}function LongInt(lo,hi,sup){this.lo=lo;this.hi=hi;this.sup=sup;}function LongInt_mul(a,b){var a_lolo=(a.lo&0xFFFF)*b|0;var a_lohi=(a.lo>>>16)*b|0;var a_hilo=(a.hi&0xFFFF)*b|0;var a_hihi=(a.hi>>>16)*b|0;var sup +=a.sup*b|0;a_lohi=a_lohi+(a_lolo>>>16)|0;a_hilo=a_hilo+(a_lohi>>>16)|0;a_hihi=a_hihi+(a_hilo>>>16)|0;sup=sup+(a_hihi>>>16)|0;a.lo=a_lolo&0xFFFF|a_lohi<<16;a.hi=a_hilo&0xFFFF|a_hihi<<16;a.sup=sup&0xFFFF;}function LongInt_sub(a,b){var a_lolo=a.lo&0xFFFF;var a_lohi=a.lo>>>16;var a_hilo=a.hi&0xFFFF;var a_hihi=a.hi>>>16;var b_lolo=b.lo&0xFFFF;var b_lohi=b.lo>>>16;var b_hilo=b.hi&0xFFFF;var b_hihi=b.hi>>>16;a_lolo=a_lolo -b_lolo|0;a_lohi=a_lohi -b_lohi+(a_lolo>>16)|0;a_hilo=a_hilo -b_hilo+(a_lohi>>16)|0;a_hihi=a_hihi - +b_hihi+(a_hilo>>16)|0;var sup=a.sup -b.sup+(a_hihi>>16)|0;a.lo=a_lolo&0xFFFF|a_lohi<<16;a.hi=a_hilo&0xFFFF|a_hihi<<16;a.sup=sup;}function LongInt_add(a,b){var a_lolo=a.lo&0xFFFF;var a_lohi=a.lo>>>16;var a_hilo=a.hi&0xFFFF;var a_hihi=a.hi>>>16;var b_lolo=b.lo&0xFFFF;var b_lohi=b.lo>>>16;var b_hilo=b.hi&0xFFFF;var b_hihi=b.hi>>>16;a_lolo=a_lolo+b_lolo|0;a_lohi=a_lohi+b_lohi+(a_lolo>>16)|0;a_hilo=a_hilo+b_hilo+(a_lohi>>16)|0;a_hihi=a_hihi+b_hihi+(a_hilo>>16)|0;var sup=a.sup+b.sup+(a_hihi>>16)|0;a.lo=a_lolo&0xFFFF +|a_lohi<<16;a.hi=a_hilo&0xFFFF|a_hihi<<16;a.sup=sup;}function LongInt_inc(a){a.lo=a.lo+1|0;if(a.lo===0){a.hi=a.hi+1|0;if(a.hi===0){a.sup=a.sup+1&0xFFFF;}}}function LongInt_dec(a){a.lo=a.lo -1|0;if(a.lo=== -1){a.hi=a.hi -1|0;if(a.hi=== -1){a.sup=a.sup -1&0xFFFF;}}}function LongInt_ucompare(a,b){var r=a.sup -b.sup;if(r!==0){return r;}r=(a.hi>>>1) -(b.hi>>>1);if(r!==0){return r;}r=(a.hi&1) -(b.hi&1);if(r!==0){return r;}r=(a.lo>>>1) -(b.lo>>>1);if(r!==0){return r;}return (a.lo&1) -(b.lo&1);}function LongInt_numOfLeadingZeroBits(a) +{var n=0;var d=16;while(d>0){if(a>>>d!==0){a>>>=d;n=n+d|0;}d=d/2|0;}return 31 -n;}function LongInt_shl(a,b){if(b===0){return;}if(b<32){a.sup=(a.hi>>>32 -b|a.sup<>>32 -b|a.hi<>>64 -b|a.hi<>>b|a.hi<<32 -b;a.hi=a.hi>>>b|a.sup<<32 -b;a.sup>>>=b;}else if(b===64){a.lo=a.sup;a.hi=0;a.sup=0;}else if(b<64){a.lo=a.hi>>>b -32|a.sup<<64 -b;a.hi=a.sup>>>b -32;a.sup=0;}else {a.lo=a.sup>>>b -64;a.hi=0;a.sup=0;}}function LongInt_copy(a){return new LongInt(a.lo,a.hi,a.sup);}function LongInt_div(a,b){var bits=b.hi!==0?LongInt_numOfLeadingZeroBits(b.hi):LongInt_numOfLeadingZeroBits(b.lo)+32;var sz=1+(bits/16|0);var dividentBits=bits%16;LongInt_shl(b,bits);LongInt_shl(a,dividentBits);var q +=new LongInt(0,0,0);while(sz-->0){LongInt_shl(q,16);var digitA=(a.hi>>>16)+0x10000*a.sup;var digitB=b.hi>>>16;var digit=digitA/digitB|0;var t=LongInt_copy(b);LongInt_mul(t,digit);if(LongInt_ucompare(t,a)>=0){while(LongInt_ucompare(t,a)>0){LongInt_sub(t,b); --digit;}}else {while(true){var nextT=LongInt_copy(t);LongInt_add(nextT,b);if(LongInt_ucompare(nextT,a)>0){break;}t=nextT;++digit;}}LongInt_sub(a,t);q.lo|=digit;LongInt_shl(a,16);}LongInt_shr(a,bits+16);return q;}function $rt_startThread(runner,callback){var result;try {result +=runner();}catch(e){result=e;}if(typeof callback!=='undefined'){callback(result);}else if(result instanceof Error){throw result;}}function $rt_suspending(){return false;}function $rt_resuming(){return false;}function $rt_nativeThread(){return null;}function $rt_invalidPointer(){}main=$rt_mainStarter(Jd); +(function(){var c;c=DM.prototype;c.handleEvent=c.b8;c=DO.prototype;c.handleEvent=c.b8;c=D8.prototype;c.dispatchEvent=c.e6;c.addEventListener=c.fA;c.removeEventListener=c.ft;c.getLength=c.e_;c.get=c.eP;c.addEventListener=c.fE;c.removeEventListener=c.eT;c=DN.prototype;c.handleEvent=c.b8;})(); +})(); diff --git a/teavm/index.html b/teavm/index.html new file mode 100644 index 0000000..982bd79 --- /dev/null +++ b/teavm/index.html @@ -0,0 +1,115 @@ + + + + + + Number Guessing Game - TeaVM + + + +
+ +
+
+

Powered by TeaVM - Java compiled to JavaScript

+
+ + + + diff --git a/test-gui.sh b/test-gui.sh index 49fb6e4..d51c663 100644 --- a/test-gui.sh +++ b/test-gui.sh @@ -1,5 +1,4 @@ #!/bin/sh -cd app -gradle build -java -jar build/libs/app.jar +./gradlew build +java -jar app/build/libs/app.jar diff --git a/test.sh b/test.sh index 9cbdf97..26b9281 100755 --- a/test.sh +++ b/test.sh @@ -1,5 +1,4 @@ #!/bin/sh -cd app -gradle build -java -jar build/libs/app.jar --console +./gradlew build +java -jar app/build/libs/app.jar --console