Found 107 repositories(showing 30)
Welcome this comprehensive course on Ethical Hacking! This course assumes you have NO prior knowledge in hacking and by the end of it you'll be able to hack systems like black-hat hackers and secure them like security experts! This course is highly practical but it won't neglect the theory, so we'll start with ethical hacking basics and the different fields in penetration testing, installing the needed software (works on Windows, Linux and Mac OS X) and then we'll dive and start hacking systems straight away. From here onwards you'll learn everything by example, by analysing and exploiting computer systems such as networks, servers, clients, websites .....etc, so we'll never have any boring dry theoretical lectures. The course is divided into a number of sections, each section covers a penetration testing / hacking field, in each of these sections you'll first learn how the target system works, the weaknesses of this system, and how to practically exploit theses weaknesses and hack into it, not only that but you'll also learn how to secure this system from the discussed attacks. This course will take you from a beginner to a more advanced level by the time you finish, you will have knowledge about most penetration testing fields. The course is divided into four main sections: 1. Network Hacking - This section will teach you how to test the security of networks, both wired and wireless. First, you will learn some basic network terminology, how networks work, and how devices communicate with each other. Then it will branch into three sub sections: Pre-connection attacks: in this subsection you'll learn what can you do before even connecting to a network, and even before having internet access; you'll start by learning how to gather information about the networks around you, discover the devices connected to them, and how to control connections around you (ie: deny/allow devices from connecting to networks) even without knowing the password of the target network. Gaining Access: Now that you gathered information about the networks around you, in this subsection you will learn how to crack the key and get the password to your target network weather it uses WEP, WPA or even WPA2. Post Connection attacks: Now that you have the key, you can connect to the target network, in this subsection you will learn a number of powerful techniques that allow you to gather comprehensive information about the connected devices, see anything they do on the internet (such as login information, passwords, visited urls, images, videos ....etc), redirect requests, inject evil code in loaded pages and much more! All the attacks here work against both wireless and wired networks. You will also learn how to create a fake WiFi network, attract users to connect to it and use all of the above techniques against the connected clients. 2. Gaining Access - In this section you will learn two main approaches to gain full control or hack computer systems: Server Side Attacks: In this subsection you will learn how to gain full access to computer systems without the need for user interaction. You will learn how to gather useful information about a target computer system such as its operating system, open ports, installed services, then you'll learn how to use this information to discover weaknesses and vulnerabilitiesand exploit them to gain full control over the target. Finally you will learn how to generate different types of reports for your discoveries. Client Side Attacks - If the target system does not contain any weaknesses then the only way to gain access to it is by interacting with the users, in this subsection you'll learn how to get the target user to install a backdoor on their system without even realising, this is done by hijacking updatesor backdoornig downloadeds on the fly. Not only that but you'll also learn how to create trojans by backdooring normal files (such as an image or a pdf) and use social engineering to deliver this trojan to the target, to do this you'll learn how to spoof emails so they appear as if they're sent from the target's friend, boss or any email account they're likely to interact with. 3. Post Exploitation - In this section you will learn how to interact with the systems you compromised so far. You’ll learn how to access the file system (read/write/upload/execute), maintain your access, spy on the target and even use the target computer as a pivot to hack other computer systems. 4. Website / Web Application Hacking - In this section you will learn how websites work, how to gather information about a target website (such as website owner, server location, used technologies ....etc) and how to discover and exploit the following dangerous vulnerabilities to hack into websites:
liuhuanyong
EventKGNELL, event knowlege graph never end learning system, a event-centric knowledge base search system,实时事理逻辑知识库终身学习系统项目和事件为核心的知识库搜索系统。包括事件概念抽取、事件因果逻辑抽取、事件数据关联推荐与推理。
nyaundid
SEIS 665 Assignment 2: Linux & Git Overview This week we will focus on becoming familiar with launching a Linux server and working with some basic Linux and Git commands. We will use AWS to launch and host the Linux server. AWS might seem a little confusing at this point. Don’t worry, we will gain much more hands-on experience with AWS throughout the course. The goal is to get you comfortable working with the technology and not overwhelm you with all the details. Requirements You need to have a personal AWS account and GitHub account for this assignment. You should also read the Git Hands-on Guide and Linux Hands-on Guide before beginning this exercise. A word about grading One of the key DevOps practices we learn about in this class is the use of automation to increase the speed and repeatability of processes. Automation is utilized during the assignment grading process to review and assess your work. It’s important that you follow the instructions in each assignment and type in required files and resources with the proper names. All names are case sensitive, so a name like "Web1" is not the same as "web1". If you misspell a name, use the wrong case, or put a file in the wrong directory location you will lose points on your assignment. This is the easiest way to lose points, and also the most preventable. You should always double-check your work to make sure it accurately reflects the requirements specified in the assignment. You should always carefully review the content of your files before submitting your assignment. The assignment Let’s get started! Create GitHub repository The first step in the assignment is to setup a Git repository on GitHub. We will use a special solution called GitHub Classroom for this course which automates the process of setting up student assignment repositories. Here are the basic steps: Click on the following link to open Assignment 2 on the GitHub Classroom site: https://classroom.github.com/a/K4zcVmX- (Links to an external site.)Links to an external site. Click on the Accept this assignment button. GitHub Classroom will provide you with a URL (https) to access the assignment repository. Either copy this address to your clipboard or write it down somewhere. You will need to use this address to set up the repository on a Linux server. Example: https://github.com/UST-SEIS665/hw2-seis665-02-spring2019-<your github id>.git At this point your new repository to ready to use. The repository is currently empty. We will put some content in there soon! Launch Linux server The second step in the assignment is to launch a Linux server using AWS EC2. The server should have the following characteristics: Amazon Linux 2 AMI 64-bit (usually the first option listed) Located in a U.S. region (us-east-1) t2.micro instance type All default instance settings (storage, vpm, security group, etc.) I’ve shown you how to launch EC2 instances in class. You can review it on Canvas. Once you launch the new server, it may take a few minutes to provision. Log into server The next step is to log into the Linux server using a terminal program with a secure shell (SSH) support. You can use iTerm2 (Links to an external site.)Links to an external site. on a Mac and GitBash/PuTTY (Links to an external site.)Links to an external site. on a PC. You will need to have the private server key and the public IP address before attempting to log into the server. The server key is basically your password. If you lose it, you will need to terminate the existing instance and launch a new server. I recommend reusing the same key when launching new servers throughout the class. Note, I make this recommendation to make the learning process easier and not because it is a common security practice. I’ve shown you how to use a terminal application to log into the instance using a Windows desktop. Your personal computer or lab computer may be running a different OS version, but the process is still very similar. You can review the videos on the Canvas. Working with Linux If you’ve made it this far, congratulations! You’ve made it over the toughest hurdle. By the end of this course, I promise you will be able to launch and log into servers in your sleep. You should be looking at a login screen that looks something like this: Last login: Mon Mar 21 21:17:54 2016 from 174-20-199-194.mpls.qwest.net __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/ 8 package(s) needed for security, out of 17 available Run "sudo yum update" to apply all updates. ec2-user@ip-172-31-15-26 ~]$ Your terminal cursor is sitting at the shell prompt, waiting for you to type in your first command. Remember the shell? It is a really cool program that lets you start other programs and manage services on the Linux system. The rest of this assignment will be spent working with the shell. Note, when you are asked to type in a command in the steps below, don’t type in the dollar-sign ($) character. This is just meant to represent the command prompt. The actual commands are represented by the characters to the right of the command prompt. Let’s start by asking the shell for some help. Type in: $ help The shell provides you with a list of commands you can run along with possible command options. Next, check out one of the pages in the built-in manual: $ man ls A man page will appear with information on how to use the ls command. This command is used to list the contents of file directories. Either space through the contents of the man page or hit q to exit. Most of the core Linux commands have man pages available. But honestly, some of these man pages are a bit hard to understand. Sometimes your best bet is to search on Google if you are trying to figure out how to use a specific command. When you initially log into Linux, the system places you in your home directory. Each user on the system has a separate home directory. Let’s see where your home directory is located: $ pwd The response should be /home/ec2-user. The pwd command is handy to remember if you ever forget what file directory you are currently located in. If you recall from the Linux Hands-on Guide, this directory is also your current working directory. Type in: $ cd / The cd command let’s you change to a new working directory on the server. In this case, we changed to the root (/) directory. This is the parent of all the other directories on the file system. Type in: $ ls The ls command lists the contents of the current directory. As you can see, root directory contains many other directories. You will become familiar with these directories over time. The ls command provides a very basic directory listing. You need to supply the command with some options if you want to see more detailed information. Type in: $ ls -la See how this command provides you with much more detailed information about the files and directories? You can use this detailed listing to see the owner, group, and access control list settings for each file or directory. Do you see any files listed? Remember, the first character in the access control list column denotes whether a listed item is a file or a directory. You probably see a couple files with names like .autofsck. How come you didn’t see this file when you typed in the lscommand without any options? (Try to run this command again to convince yourself.) Files names that start with a period are called hidden files. These files won’t appear on normal directory listings. Type in: $ cd /var Then, type in: $ ls You will see a directory listing for the /var directory. Next, type in: $ ls .. Huh. This directory listing looks the same as the earlier root directory listing. When you use two periods (..) in a directory path that means you are referring to the parent directory of the current directory. Just think of the two dots as meaning the directory above the current directory. Now, type in: $ cd ~ $ pwd Whoa. We’re back at our home directory again. The tilde character (~) is another one of those handy little directory path shortcuts. It always refers to our personal home directory. Keep in mind that since every user has their own home directory, the tilde shortcut will refer to a unique directory for each logged-in user. Most students are used to navigating a file system by clicking a mouse in nested graphical folders. When they start using a command-line to navigate a file system, they sometimes get confused and lose track of their current position in the file system. Remember, you can always use the pwd command to quickly figure out what directory you are currently working in. Let’s make some changes to the file system. We can easily make our own directories on the file system. Type: mkdir test Now type: ls Cool, there’s our new test directory. Let’s pretend we don’t like that directory name and delete it. Type: rmdir test Now it’s gone. How can you be sure? You should know how to check to see if the directory still exists at this point. Go ahead and check. Let’s create another directory. Type in: $ mkdir documents Next, change to the new directory: $ cd documents Did you notice that your command prompt displays the name of the current directory? Something like: [ec2-user@ip-172-31-15-26 documents]$. Pretty handy, huh? Okay, let’s create our first file in the documents directory. This is just an empty file for training purposes. Type in: $ touch paper.txt Check to see that the new file is in the directory. Now, go back to the previous directory. Remember the double dot shortcut? $ cd .. Okay, we don’t like our documents directory any more. Let’s blow it away. Type in: $ rmdir documents Uh oh. The shell didn’t like that command because the directory isn’t empty. Let’s change back into the documents directory. But this time don’t type in the full name of the directory. You can let shell auto-completion do the typing for you. Type in the first couple characters of the directory name and then hit the tab key: $ cd doc<tab> You should use the tab auto-completion feature often. It saves typing and makes working with the Linux file system much much easier. Tab is your friend. Now, remove the file by typing: $ rm paper.txt Did you try to use the tab key instead of typing in the whole file name? Check to make sure the file was deleted from the directory. Next, create a new file: $ touch file1 We like file1 so much that we want to make a backup copy. Type: $ cp file1 file1-backup Check to make sure the new backup copy was created. We don’t really like the name of that new file, so let’s rename it. Type: $ mv file1-backup backup Moving a file to the same directory and giving it a new name is basically the same thing as renaming it. We could have moved it to a different directory if we wanted. Let’s list all of the files in the current directory that start with the letter f: $ ls f* Using wildcard pattern matching in file commands is really useful if you want the command to impact or filter a group of files. Now, go up one directory to the parent directory (remember the double dot shortcut?) We tried to remove the documents directory earlier when it had files in it. Obviously that won’t work again. However, we can use a more powerful command to destroy the directory and vanquish its contents. Behold, the all powerful remove command: $ rm -fr documents Did you remember to use auto-completion when typing in documents? This command and set of options forcibly removes the directory and its contents. It’s a dangerous command wielded by the mightiest Linux wizards. Okay, maybe that’s a bit of an exaggeration. Just be careful with it. Check to make sure the documents directory is gone before proceeding. Let’s continue. Change to the directory /var and make a directory called test. Ugh. Permission denied. We created this darn Linux server and we paid for it. Shouldn’t we be able to do anything we want on it? You logged into the system as a user called ec2-user. While this user can create and manage files in its home directory, it cannot change files all across the system. At least it can’t as a normal user. The ec2-user is a member of the root group, so it can escalate its privileges to super-user status when necessary. Let’s try it: $ sudo mkdir test Check to make sure the directory exists now. Using sudo we can execute commands as a super-user. We can do anything we want now that we know this powerful new command. Go ahead and delete the test directory. Did you remember to use sudo before the rmdir command? Check to make sure the directory is gone. You might be asking yourself the question: why can we list the contents of the /var directory but not make changes? That’s because all users have read access to the /var directory and the ls command is a read function. Only the root users or those acting as a super-user can write changes to the directory. Let’s go back to our home directory: $ cd ~ Editing text files is a really common task on Linux systems because many of the application configuration files are text files. We can create a text file by using a text editor. Type in: $ nano myfile.conf The shell starts up the nano text editor and places your terminal cursor in the editing screen. Nano is a simple text-based word processor. Type in a few lines of text. When you’re done writing your novel, hit ctrl-x and answer y to the prompt to save your work. Finally, hit enter to save the text to the filename you specified. Check to see that your file was saved in the directory. You can take a look at the contents of your file by typing: $ cat myfile.conf The cat command displays your text file content on the terminal screen. This command works fine for displaying small text files. But if your file is hundreds of lines long, the content will scroll down your terminal screen so fast that you won’t be able to easily read it. There’s a better way to view larger text files. Type in: $ less myfile.conf The less command will page the display of a text file, allowing you to page through the contents of the file using the space bar. Your text file is probably too short to see the paging in action though. Hit q to quit out of the less text viewer. Hit the up-arrow key on your keyboard a few times until the commmand nano myfile.conf appears next to your command prompt. Cool, huh? The up-arrow key allows you to replay a previously run command. Linux maintains a list of all the commands you have run since you logged into the server. This is called the command history. It’s a really useful feature if you have to re-run a complex command again. Now, hit ctrl-c. This cancels whatever command is displayed on the command line. Type in the following command to create a couple empty files in the directory: $ touch file1 file2 file3 Confirm that the files were created. Some commands, like touch. allow you to specify multiple files as arguments. You will find that Linux commands have all kinds of ways to make tasks more efficient like this. Throughout this assignment, we have been running commands and viewing results on the terminal screen. The screen is the standard place for commands to output results. It’s known as the standard out (stdout). However, it’s really useful to output results to the file system sometimes. Type in: $ ls > listing.txt Take a look at the directory listing now. You just created a new file. View the contents of the listing.txt file. What do you see? Instead of sending the output from the ls command to the screen we sent it to a text file. Let’s try another one. Type: $ cat myfile.conf > listing.txt Take a look at the contents of the listing.txt file again. It looks like your myfile.conf file now. It’s like you made a copy of it. But what happened to the previous content in the listing.txt file? When you redirect the output of a command using the right angle-bracket character (>), the output overwrites the existing file. Type this command in: $ cat myfile.conf >> listing.txt Now look at the contents of the listing.txt file. You should see your original content displayed twice. When you use two angle-bracket characters in the commmand the output appends (or adds to) the file instead of overwriting it. We redirected the output from a command to a text file. It’s also possible to redirect the input to a command. Typically we use a keyboard to provide input, but sometimes it makes more sense to input a file to a command. For example, how many words are in your new listing.txt file? Let’s find out. Type in: $ wc -w < listing.txt Did you get a number? This command inputs the listing.txt file into a word count program called wc. Type in the command: $ ls /usr/bin The terminal screen probably scrolled quickly as filenames flashed by. The /usr/bin directory holds quite a few files. It would be nice if we could page through the contents of this directory. Well, we can. We can use a special shell feature called pipes. In previous steps, we redirected I/O using the file system. Pipes allow us to redirect I/O between programs. We can redirect the output from one program into another. Type in: $ ls /usr/bin | less Now the directory listing is paged. Hit the spacebar to page through the listing. The pipe, represented by a vertical bar character (|), takes the output from the ls command and redirects it to the less command where the resulting output is paged. Pipes are super powerful and used all the time by savvy Linux operators. Hit the q key to quit the paginated directory listing command. Working with shell scripts Now things are going to get interesting. We’ve been manually typing in commands throughout this exercise. If we were running a set of repetitive tasks, we would want to automate the process as much as possible. The shell makes it really easy to automate tasks using shell scripts. The shell provides many of the same features as a basic procedural programming language. Let’s write some code. Type in this command: $ j=123 $ echo $j We just created a variable named j referencing the string 123. The echo command printed out the value of the variable. We had to use a dollar sign ($) when referencing the variable in another command. Next, type in: $ j=1+1 $ echo $j Is that what you expected? The shell just interprets the variable value as a string. It’s not going to do any sort of computation. Typing in shell script commands on the command line is sort of pointless. We want to be able to create scripts that we can run over-and-over. Let’s create our first shell script. Use the nano editor to create a file named myscript. When the file is open in the editor, type in the following lines of code: #!/bin/bash echo Hello $1 Now quit the editor and save your file. We can run our script by typing: $ ./myscript World Er, what happened? Permission denied. Didn’t we create this file? Why can’t we run it? We can’t run the script file because we haven’t set the execute permission on the file. Type in: $ chmod u+x myscript This modifies the file access control list to allow the owner of the file to execute it. Let’s try to run the command again. Hit the up-arrow key a couple times until the ./myscript World command is displayed and hit enter. Hooray! Our first shell script. It’s probably a bit underwhelming. No problem, we’ll make it a little more complex. The script took a single argument called World. Any arguments provided to a shell script are represented as consecutively numbered variables inside the script ($1, $2, etc). Pretty simple. You might be wondering why we had to type the ./ characters before the name of our script file. Try to type in the command without them: $ myscript World Command not found. That seems a little weird. Aren’t we currently in the directory where the shell script is located? Well, that’s just not how the shell works. When you enter a command into the shell, it looks for the command in a predefined set of directories on the server called your PATH. Since your script file isn’t in your special path, the shell reports it as not found. By typing in the ./ characters before the command name you are basically forcing the shell to look for your script in the current directory instead of the default path. Create another file called cleanup using nano. In the file editor window type: #!/bin/bash # My cleanup script mkdir archive mv file* archive Exit the editor window and save the file. Change the permissions on the script file so that you can execute it. Now run the command: $ ./cleanup Take a look at the file directory listing. Notice the archive directory? List the contents of that directory. The script automatically created a new directory and moved three files into it. Anything you can do manually at a command prompt can be automated using a shell script. Let’s create one more shell script. Use nano to create a script called namelist. Here is the content of the script: #!/bin/bash # for-loop test script names='Jason John Jane' for i in $names do echo Hello $i done Change the permissions on the script file so that you can execute it. Run the command: $ ./namelist The script will loop through a set of names stored in a variable displaying each one. Scripts support several programming constructs like for-loops, do-while loops, and if-then-else. These building blocks allow you to create fairly complex scripts for automating tasks. Installing packages and services We’re nearing the end of this assignment. But before we finish, let’s install some new software packages on our server. The first thing we should do is make sure all the current packages installed on our Linux server are up-to-date. Type in: $ sudo yum update -y This is one of those really powerful commands that requires sudo access. The system will review the currently installed packages and go out to the Internet and download appropriate updates. Next, let’s install an Apache web server on our system. Type in: $ sudo yum install httpd -y Bam! You probably never knew that installing a web server was so easy. We’re not going to actually use the web server in this exercise, but we will in future assignments. We installed the web server, but is it actually running? Let’s check. Type in: $ sudo service httpd status Nope. Let’s start it. Type: $ sudo service httpd start We can use the service command to control the services running on the system. Let’s setup the service so that it automatically starts when the system boots up. Type in: $ sudo chkconfig httpd on Cool. We installed the Apache web server on our system, but what other programs are currently running? We can use the pscommand to find out. Type in: $ ps -ax Lots of processes are running on our system. We can even look at the overall performance of our system using the topcommand. Let’s try that now. Type in: $ top The display might seem a little overwhelming at first. You should see lots of performance information displayed including the cpu usage, free memory, and a list of running tasks. We’re almost across the finish line. Let’s make sure all of our valuable work is stored in a git repository. First, we need to install git. Type in the command: $ sudo yum install git -y Check your work It’s very important to check your work before submitting it for grading. A misspelled, misplaced or missing file will cost you points. This may seem harsh, but the reality is that these sorts of mistakes have consequences in the real world. For example, a server instance could fail to launch properly and impact customers because a single required file is missing. Here is what the contents of your git repository should look like before final submission: ┣archive ┃ ┣ file1 ┃ ┣ file2 ┃ ┗ file3 ┣ namelist ┗ myfile.conf Saving our work in the git repository Next, make sure you are still in your home directory (/home/ec2-user). We will install the git repository you created at the beginning of this exercise. You will need to modify this command by typing in the GitHub repository URL you copied earlier. $ git clone <your GitHub URL here>.git Example: git clone https://github.com/UST-SEIS665/hw2-seis665-02-spring2019-<your github id>.git The git application will ask you for your GitHub username and password. Note, if you have multi-factor authentication enabled on your GitHub account you will need to provide a personal token instead of your password. Git will clone (copy) the repository from GitHub to your Linux server. Since the repository is empty the clone happens almost instantly. Check to make sure that a sub-directory called "hw2-seis665-02-spring2019-<username>" exists in the current directory (where <username> is your GitHub account name). Git automatically created this directory as part of the cloning process. Change to the hw2-seis665-02-spring2019-<username> directory and type: $ ls -la Notice the .git hidden directory? This is where git actually stores all of the file changes in your repository. Nothing is actually in your repository yet. Change back to the parent directory (cd ..). Next, let’s move some of our files into the repository. Type: $ mv archive hw2-seis665-02-spring2019-<username> $ mv namelist hw2-seis665-02-spring2019-<username> $ mv myfile.conf hw2-seis665-02-spring2019-<username> Hopefully, you remembered to use the auto-complete function to reduce some of that typing. Change to the hw2-seis665-02-spring2019-<username> directory and list the directory contents. Your files are in the working directory, but are not actually stored in the repository because they haven’t been committed yet. Type in: $ git status You should see a list of untracked files. Let’s tell git that we want these files tracked. Type in: $ git add * Now type in the git status command again. Notice how all the files are now being tracked and are ready to be committed. These files are in the git staging area. We’ll commit them to the repository next. Type: $ git commit -m 'assignment 2 files' Next, take a look at the commit log. Type: $ git log You should see your commit listed along with an assigned hash (long string of random-looking characters). Finally, let’s save the repository to our GitHub account. Type in: $ git push origin master The git client will ask you for your GitHub username and password before pushing the repository. Go back to the GitHub.com website and login if you have been logged out. Click on the repository link for the assignment. Do you see your files listed there? Congratulations, you completed the exercise! Terminate server The last step is to terminate your Linux instance. AWS will bill you for every hour the instance is running. The cost is nominal, but there’s no need to rack up unnecessary charges. Here are the steps to terminate your instance: Log into your AWS account and click on the EC2 dashboard. Click the Instances menu item. Select your server in the instances table. Click on the Actions drop down menu above the instances table. Select the Instance State menu option Click on the Terminate action. Your Linux instance will shutdown and disappear in a few minutes. The EC2 dashboard will continue to display the instance on your instance listing for another day or so. However, the state of the instance will be terminated. Submitting your assignment — IMPORTANT! If you haven’t already, please e-mail me your GitHub username in order to receive credit for this assignment. There is no need to email me to tell me that you have committed your work to GitHub or to ask me if your GitHub submission worked. If you can see your work in your GitHub repository, I can see your work.
# Liberty House Club **A Parallel Binance Chain to Enable Smart Contracts** _NOTE: This document is under development. Please check regularly for updates!_ ## Table of Contents - [Motivation](#motivation) - [Design Principles](#design-principles) - [Consensus and Validator Quorum](#consensus-and-validator-quorum) * [Proof of Staked Authority](#proof-of-staked-authority) * [Validator Quorum](#validator-quorum) * [Security and Finality](#security-and-finality) * [Reward](#reward) - [Token Economy](#token-economy) * [Native Token](#native-token) * [Other Tokens](#other-tokens) - [Cross-Chain Transfer and Communication](#cross-chain-transfer-and-communication) * [Cross-Chain Transfer](#cross-chain-transfer) * [BC to BSC Architecture](#bc-to-bsc-architecture) * [BSC to BC Architecture](#bsc-to-bc-architecture) * [Timeout and Error Handling](#timeout-and-error-handling) * [Cross-Chain User Experience](#cross-chain-user-experience) * [Cross-Chain Contract Event](#cross-chain-contract-event) - [Staking and Governance](#staking-and-governance) * [Staking on BC](#staking-on-bc) * [Rewarding](#rewarding) * [Slashing](#slashing) - [Relayers](#relayers) * [BSC Relayers](#bsc-relayers) * [Oracle Relayers](#oracle-relayers) - [Outlook](#outlook) # Motivation After its mainnet community [launch](https://www.binance.com/en/blog/327334696200323072/Binance-DEX-Launches-on-Binance-Chain-Invites-Further-Community-Development) in April 2019, [Binance Chain](https://www.binance.org) has exhibited its high speed and large throughput design. Binance Chain’s primary focus, its native [decentralized application](https://en.wikipedia.org/wiki/Decentralized_application) (“dApp”) [Binance DEX](https://www.binance.org/trade), has demonstrated its low-latency matching with large capacity headroom by handling millions of trading volume in a short time. Flexibility and usability are often in an inverse relationship with performance. The concentration on providing a convenient digital asset issuing and trading venue also brings limitations. Binance Chain's most requested feature is the programmable extendibility, or simply the [Smart Contract](https://en.wikipedia.org/wiki/Smart_contract) and Virtual Machine functions. Digital asset issuers and owners struggle to add new decentralized features for their assets or introduce any sort of community governance and activities. Despite this high demand for adding the Smart Contract feature onto Binance Chain, it is a hard decision to make. The execution of a Smart Contract may slow down the exchange function and add non-deterministic factors to trading. If that compromise could be tolerated, it might be a straightforward idea to introduce a new Virtual Machine specification based on [Tendermint](https://tendermint.com/core/), based on the current underlying consensus protocol and major [RPC](https://docs.binance.org/api-reference/node-rpc.html) implementation of Binance Chain. But all these will increase the learning requirements for all existing dApp communities, and will not be very welcomed. We propose a parallel blockchain of the current Binance Chain to retain the high performance of the native DEX blockchain and to support a friendly Smart Contract function at the same time. # Design Principles After the creation of the parallel blockchain into the Binance Chain ecosystem, two blockchains will run side by side to provide different services. The new parallel chain will be called “**Binance Smart Chain**” (short as “**BSC**” for the below sections), while the existing mainnet remains named “**Binance Chain**” (short as “**BC**” for the below sections). Here are the design principles of **BSC**: 1. **Standalone Blockchain**: technically, BSC is a standalone blockchain, instead of a layer-2 solution. Most BSC fundamental technical and business functions should be self-contained so that it can run well even if the BC stopped for a short period. 2. **Ethereum Compatibility**: The first practical and widely-used Smart Contract platform is Ethereum. To take advantage of the relatively mature applications and community, BSC chooses to be compatible with the existing Ethereum mainnet. This means most of the **dApps**, ecosystem components, and toolings will work with BSC and require zero or minimum changes; BSC node will require similar (or a bit higher) hardware specification and skills to run and operate. The implementation should leave room for BSC to catch up with further Ethereum upgrades. 3. **Staking Involved Consensus and Governance**: Staking-based consensus is more environmentally friendly and leaves more flexible option to the community governance. Expectedly, this consensus should enable better network performance over [proof-of-work](https://en.wikipedia.org/wiki/Proof_of_work) blockchain system, i.e., faster blocking time and higher transaction capacity. 4. **Native Cross-Chain Communication**: both BC and BSC will be implemented with native support for cross-chain communication among the two blockchains. The communication protocol should be bi-directional, decentralized, and trustless. It will concentrate on moving digital assets between BC and BSC, i.e., [BEP2](https://github.com/binance-chain/BEPs/blob/master/BEP2.md) tokens, and eventually, other BEP tokens introduced later. The protocol should care for the minimum of other items stored in the state of the blockchains, with only a few exceptions. # Consensus and Validator Quorum Based on the above design principles, the consensus protocol of BSC is to fulfill the following goals: 1. Blocking time should be shorter than Ethereum network, e.g. 5 seconds or even shorter. 2. It requires limited time to confirm the finality of transactions, e.g. around 1-min level or shorter. 3. There is no inflation of native token: BNB, the block reward is collected from transaction fees, and it will be paid in BNB. 4. It is compatible with Ethereum system as much as possible. 5. It allows modern [proof-of-stake](https://en.wikipedia.org/wiki/Proof_of_stake) blockchain network governance. ## Proof of Staked Authority Although Proof-of-Work (PoW) has been recognized as a practical mechanism to implement a decentralized network, it is not friendly to the environment and also requires a large size of participants to maintain the security. Ethereum and some other blockchain networks, such as [MATIC Bor](https://github.com/maticnetwork/bor), [TOMOChain](https://tomochain.com/), [GoChain](https://gochain.io/), [xDAI](https://xdai.io/), do use [Proof-of-Authority(PoA)](https://en.wikipedia.org/wiki/Proof_of_authority) or its variants in different scenarios, including both testnet and mainnet. PoA provides some defense to 51% attack, with improved efficiency and tolerance to certain levels of Byzantine players (malicious or hacked). It serves as an easy choice to pick as the fundamentals. Meanwhile, the PoA protocol is most criticized for being not as decentralized as PoW, as the validators, i.e. the nodes that take turns to produce blocks, have all the authorities and are prone to corruption and security attacks. Other blockchains, such as EOS and Lisk both, introduce different types of [Delegated Proof of Stake (DPoS)](https://en.bitcoinwiki.org/wiki/DPoS) to allow the token holders to vote and elect the validator set. It increases the decentralization and favors community governance. BSC here proposes to combine DPoS and PoA for consensus, so that: 1. Blocks are produced by a limited set of validators 2. Validators take turns to produce blocks in a PoA manner, similar to [Ethereum’s Clique](https://eips.ethereum.org/EIPS/eip-225) consensus design 3. Validator set are elected in and out based on a staking based governance ## Validator Quorum In the genesis stage, a few trusted nodes will run as the initial Validator Set. After the blocking starts, anyone can compete to join as candidates to elect as a validator. The staking status decides the top 21 most staked nodes to be the next validator set, and such an election will repeat every 24 hours. **BNB** is the token used to stake for BSC. In order to remain as compatible as Ethereum and upgradeable to future consensus protocols to be developed, BSC chooses to rely on the **BC** for staking management (Please refer to the below “[Staking and Governance](#staking-and-governance)” section). There is a **dedicated staking module for BSC on BC**. It will accept BSC staking from BNB holders and calculate the highest staked node set. Upon every UTC midnight, BC will issue a verifiable `ValidatorSetUpdate` cross-chain message to notify BSC to update its validator set. While producing further blocks, the existing BSC validators check whether there is a `ValidatorSetUpdate` message relayed onto BSC periodically. If there is, they will update the validator set after an **epoch period**, i.e. a predefined number of blocking time. For example, if BSC produces a block every 5 seconds, and the epoch period is 240 blocks, then the current validator set will check and update the validator set for the next epoch in 1200 seconds (20 minutes). ## Security and Finality Given there are more than ½\*N+1 validators are honest, PoA based networks usually work securely and properly. However, there are still cases where certain amount Byzantine validators may still manage to attack the network, e.g. through the “[Clone Attack](https://arxiv.org/pdf/1902.10244.pdf)”. To secure as much as BC, BSC users are encouraged to wait until receiving blocks sealed by more than ⅔\*N+1 different validators. In that way, the BSC can be trusted at a similar security level to BC and can tolerate less than ⅓\*N Byzantine validators. With 21 validators, if the block time is 5 seconds, the ⅔\*N+1 different validator seals will need a time period of (⅔\*21+1)*5 = 75 seconds. Any critical applications for BSC may have to wait for ⅔\*N+1 to ensure a relatively secure finality. However, besides such arrangement, BSC does introduce **Slashing** logic to penalize Byzantine validators for **double signing** or **inavailability**, which will be covered in the “Staking and Governance” section later. This Slashing logic will expose the malicious validators in a very short time and make the “Clone Attack” very hard or extremely non-beneficial to execute. With this enhancement, ½\*N+1 or even fewer blocks are enough as confirmation for most transactions. ## Reward All the BSC validators in the current validator set will be rewarded with transaction **fees in BNB**. As BNB is not an inflationary token, there will be no mining rewards as what Bitcoin and Ethereum network generate, and the gas fee is the major reward for validators. As BNB is also utility tokens with other use cases, delegators and validators will still enjoy other benefits of holding BNB. The reward for validators is the fees collected from transactions in each block. Validators can decide how much to give back to the delegators who stake their BNB to them, in order to attract more staking. Every validator will take turns to produce the blocks in the same probability (if they stick to 100% liveness), thus, in the long run, all the stable validators may get a similar size of the reward. Meanwhile, the stakes on each validator may be different, so this brings a counter-intuitive situation that more users trust and delegate to one validator, they potentially get less reward. So rational delegators will tend to delegate to the one with fewer stakes as long as the validator is still trustful (insecure validator may bring slashable risk). In the end, the stakes on all the validators will have less variation. This will actually prevent the stake concentration and “winner wins forever” problem seen on some other networks. Some parts of the gas fee will also be rewarded to relayers for Cross-Chain communication. Please refer to the “[Relayers](#relayers)” section below. # Token Economy BC and BSC share the same token universe for BNB and BEP2 tokens. This defines: 1. The same token can circulate on both networks, and flow between them bi-directionally via a cross-chain communication mechanism. 2. The total circulation of the same token should be managed across the two networks, i.e. the total effective supply of a token should be the sum of the token’s total effective supply on both BSC and BC. 3. The tokens can be initially created on BSC in a similar format as ERC20 token standard, or on BC as a BEP2, then created on the other. There are native ways on both networks to link the two and secure the total supply of the token. ## Native Token BNB will run on BSC in the same way as ETH runs on Ethereum so that it remains as “native token” for both BSC and BC. This means, in addition to BNB is used to pay most of the fees on Binance Chain and Binance DEX, BNB will be also used to: 1. pay “fees“ to deploy smart contracts on BSC 2. stake on selected BSC validators, and get corresponding rewards 3. perform cross-chain operations, such as transfer token assets across BC and BSC ### Seed Fund Certain amounts of BNB will be burnt on BC and minted on BSC during its genesis stage. This amount is called “Seed Fund” to circulate on BSC after the first block, which will be dispatched to the initial BC-to-BSC Relayer(described in later sections) and initial validator set introduced at genesis. These BNBs are used to pay transaction fees in the early stage to transfer more BNB from BC onto BSC via the cross-chain mechanism. The BNB cross-chain transfer is discussed in a later section, but for BC to BSC transfer, it is generally to lock BNB on BC from the source address of the transfer to a system-controlled address and unlock the corresponding amount from special contract to the target address of the transfer on BSC, or reversely, when transferring from BSC to BC, it is to lock BNB from the source address on BSC into a special contract and release locked amount on BC from the system address to the target address. The logic is related to native code on BC and a series of smart contracts on BSC. ## Other Tokens BC supports BEP2 tokens and upcoming [BEP8 tokens](https://github.com/binance-chain/BEPs/pull/69), which are native assets transferrable and tradable (if listed) via fast transactions and sub-second finality. Meanwhile, as BSC is Ethereum compatible, it is natural to support ERC20 tokens on BSC, which here is called “**BEP2E**” (with the real name to be introduced by the future BEPs,it potentially covers BEP8 as well). BEP2E may be “Enhanced” by adding a few more methods to expose more information, such as token denomination, decimal precision definition and the owner address who can decide the Token Binding across the chains. BSC and BC work together to ensure that one token can circulate in both formats with confirmed total supply and be used in different use cases. ### Token Binding BEP2 tokens will be extended to host a new attribute to associate the token with a BSC BEP2E token contract, called “**Binder**”, and this process of association is called “**Token Binding**”. Token Binding can happen at any time after BEP2 and BEP2E are ready. The token owners of either BEP2 or BEP2E don’t need to bother about the Binding, until before they really want to use the tokens on different scenarios. Issuers can either create BEP2 first or BEP2E first, and they can be bound at a later time. Of course, it is encouraged for all the issuers of BEP2 and BEP2E to set the Binding up early after the issuance. A typical procedure to bind the BEP2 and BEP2E will be like the below: 1. Ensure both the BEP2 token and the BEP2E token both exist on each blockchain, with the same total supply. BEP2E should have 3 more methods than typical ERC20 token standard: * symbol(): get token symbol * decimals(): get the number of the token decimal digits * owner(): get **BEP2E contract owner’s address.** This value should be initialized in the BEP2E contract constructor so that the further binding action can verify whether the action is from the BEP2E owner. 2. Decide the initial circulation on both blockchains. Suppose the total supply is *S*, and the expected initial circulating supply on BC is *K*, then the owner should lock S-K tokens to a system controlled address on BC. 3. Equivalently, *K* tokens is locked in the special contract on BSC, which handles major binding functions and is named as **TokenHub**. The issuer of the BEP2E token should lock the *K* amount of that token into TokenHub, resulting in *S-K* tokens to circulate on BSC. Thus the total circulation across 2 blockchains remains as *S*. 4. The issuer of BEP2 token sends the bind transaction on BC. Once the transaction is executed successfully after proper verification: * It transfers *S-K* tokens to a system-controlled address on BC. * A cross-chain bind request package will be created, waiting for Relayers to relay. 5. BSC Relayers will relay the cross-chain bind request package into **TokenHub** on BSC, and the corresponding request and information will be stored into the contract. 6. The contract owner and only the owner can run a special method of TokenHub contract, `ApproveBind`, to verify the binding request to mark it as a success. It will confirm: * the token has not been bound; * the binding is for the proper symbol, with proper total supply and decimal information; * the proper lock are done on both networks; 10. Once the `ApproveBind` method has succeeded, TokenHub will mark the two tokens are bounded and share the same circulation on BSC, and the status will be propagated back to BC. After this final confirmation, the BEP2E contract address and decimals will be written onto the BEP2 token as a new attribute on BC, and the tokens can be transferred across the two blockchains bidirectionally. If the ApproveBind fails, the failure event will also be propagated back to BC to release the locked tokens, and the above steps can be re-tried later. # Cross-Chain Transfer and Communication Cross-chain communication is the key foundation to allow the community to take advantage of the dual chain structure: * users are free to create any tokenization, financial products, and digital assets on BSC or BC as they wish * the items on BSC can be manually and programmingly traded and circulated in a stable, high throughput, lighting fast and friendly environment of BC * users can operate these in one UI and tooling ecosystem. ## Cross-Chain Transfer The cross-chain transfer is the key communication between the two blockchains. Essentially the logic is: 1. the `transfer-out` blockchain will lock the amount from source owner addresses into a system controlled address/contracts; 2. the `transfer-in` blockchain will unlock the amount from the system controlled address/contracts and send it to target addresses. The cross-chain transfer package message should allow the BSC Relayers and BC **Oracle Relayers** to verify: 1. Enough amount of token assets are removed from the source address and locked into a system controlled addresses/contracts on the source blockchain. And this can be confirmed on the target blockchain. 2. Proper amounts of token assets are released from a system controlled addresses/contracts and allocated into target addresses on the target blockchain. If this fails, it can be confirmed on source blockchain, so that the locked token can be released back (may deduct fees). 3. The sum of the total circulation of the token assets across the 2 blockchains are not changed after this transfer action completes, no matter if the transfer succeeds or not.  The architecture of cross-chain communication is as in the above diagram. To accommodate the 2 heteroid systems, communication handling is different in each direction. ## BC to BSC Architecture BC is a Tendermint-based, instant finality blockchain. Validators with at least ⅔\*N+1 of the total voting power will co-sign each block on the chain. So that it is practical to verify the block transactions and even the state value via **Block Header** and **Merkle Proof** verification. This has been researched and implemented as “**Light-Client Protocol**”, which are intensively discussed in [the Ethereum](https://github.com/ethereum/wiki/wiki/Light-client-protocol) community, studied and implemented for [Cosmos inter-chain communication](https://github.com/cosmos/ics/blob/a4173c91560567bdb7cc9abee8e61256fc3725e9/spec/ics-007-tendermint-client/README.md). BC-to-BSC communication will be verified in an “**on-chain light client**” implemented via BSC **Smart Contracts** (some of them may be **“pre-compiled”**). After some transactions and state change happen on BC, if a transaction is defined to trigger cross-chain communication,the Cross-chain “**package**” message will be created and **BSC Relayers** will pass and submit them onto BSC as data into the "build-in system contracts". The build-in system contracts will verify the package and execute the transactions if it passes the verification. The verification will be guaranteed with the below design: 1. BC blocking status will be synced to the light client contracts on BSC from time to time, via block header and pre-commits, for the below information: * block and app hash of BC that are signed by validators * current validatorset, and validator set update 2. the key-value from the blockchain state will be verified based on the Merkle Proof and information from above #1. After confirming the key-value is accurate and trustful, the build-in system contracts will execute the actions corresponding to the cross-chain packages. Some examples of such packages that can be created for BC-to-BSC are: 1. Bind: bind the BEP2 tokens and BEP2E 2. Transfer: transfer tokens after binding, this means the circulation will decrease (be locked) from BC and appear in the target address balance on BSC 3. Error Handling: to handle any timeout/failure event for BSC-to-BC communication 4. Validatorset update of BSC To ensure no duplication, proper message sequence and timely timeout, there is a “Channel” concept introduced on BC to manage any types of the communication. For relayers, please also refer to the below “Relayers” section. ## BSC to BC Architecture BSC uses Proof of Staked Authority consensus protocol, which has a chance to fork and requires confirmation of more blocks. One block only has the signature of one validator, so that it is not easy to rely on one block to verify data from BSC. To take full advantage of validator quorum of BC, an idea similar to many [Bridge ](https://github.com/poanetwork/poa-bridge)or Oracle blockchains is adopted: 1. The cross-chain communication requests from BSC will be submitted and executed onto BSC as transactions. The execution of the transanction wil emit `Events`, and such events can be observed and packaged in certain “**Oracle**” onto BC. Instead of Block Headers, Hash and Merkle Proof, this type of “Oracle” package directly contains the cross-chain information for actions, such as sender, receiver and amount for transfer. 2. To ensure the security of the Oracle, the validators of BC will form anothe quorum of “**Oracle Relayers**”. Each validator of the BC should run a **dedicated process** as the Oracle Relayer. These Oracle Relayers will submit and vote for the cross-chain communication package, like Oracle, onto BC, using the same validator keys. Any package signed by more than ⅔\*N+1 Oracle Relayers’ voting power is as secure as any block signed by ⅔\*N+1 of the same quorum of validators’ voting power. By using the same validator quorum, it saves the light client code on BC and continuous block updates onto BC. Such Oracles also have Oracle IDs and types, to ensure sequencing and proper error handling. ## Timeout and Error Handling There are scenarios that the cross-chain communication fails. For example, the relayed package cannot be executed on BSC due to some coding bug in the contracts. **Timeout and error handling logics are** used in such scenarios. For the recognizable user and system errors or any expected exceptions, the two networks should heal themselves. For example, when BC to BSC transfer fails, BSC will issue a failure event and Oracle Relayers will execute a refund on BC; when BSC to BC transfer fails, BC will issue a refund package for Relayer to relay in order to unlock the fund. However, unexpected error or exception may still happen on any step of the cross-chain communication. In such a case, the Relayers and Oracle Relayers will discover that the corresponding cross-chain channel is stuck in a particular sequence. After a Timeout period, the Relayers and Oracle Relayers can request a “SkipSequence” transaction, the stuck sequence will be marked as “Unexecutable”. A corresponding alerts will be raised, and the community has to discuss how to handle this scenario, e.g. payback via the sponsor of the validators, or event clear the fund during next network upgrade. ## Cross-Chain User Experience Ideally, users expect to use two parallel chains in the same way as they use one single chain. It requires more aggregated transaction types to be added onto the cross-chain communication to enable this, which will add great complexity, tight coupling, and maintenance burden. Here BC and BSC only implement the basic operations to enable the value flow in the initial launch and leave most of the user experience work to client side UI, such as wallets. E.g. a great wallet may allow users to sell a token directly from BSC onto BC’s DEX order book, in a secure way. ## Cross-Chain Contract Event Cross-Chain Contract Event (CCCE) is designed to allow a smart contract to trigger cross-chain transactions, directly through the contract code. This becomes possible based on: 1. Standard system contracts can be provided to serve operations callable by general smart contracts; 2. Standard events can be emitted by the standard contracts; 3. Oracle Relayers can capture the standard events, and trigger the corresponding cross-chain operations; 4. Dedicated, code-managed address (account) can be created on BC and accessed by the contracts on the BSC, here it is named as **“Contract Address on BC” (CAoB)**. Several standard operations are implemented: 1. BSC to BC transfer: this is implemented in the same way as normal BSC to BC transfer, by only triggered via standard contract. The fund can be transferred to any addresses on BC, including the corresponding CAoB of the transfer originating contract. 2. Transfer on BC: this is implemented as a special cross-chain transfer, while the real transfer is from **CAoB** to any other address (even another CAoB). 3. BC to BSC transfer: this is implemented as two-pass cross-chain communication. The first is triggered by the BSC contract and propagated onto BC, and then in the second pass, BC will start a normal BC to BSC cross-chain transfer, from **CAoB** to contract address on BSC. A special note should be paid on that the BSC contract only increases balance upon any transfer coming in on the second pass, and the error handling in the second pass is the same as the normal BC to BSC transfer. 4. IOC (Immediate-Or-Cancel) Trade Out: the primary goal of transferring assets to BC is to trade. This event will instruct to trade a certain amount of an asset in CAoB into another asset as much as possible and transfer out all the results, i.e. the left the source and the traded target tokens of the trade, back to BSC. BC will handle such relayed events by sending an “Immediate-Or-Cancel”, i.e. IOC order onto the trading pairs, once the next matching finishes, the result will be relayed back to BSC, which can be in either one or two assets. 5. Auction Trade Out: Such event will instruct BC to send an auction order to trade a certain amount of an asset in **CAoB** into another asset as much as possible and transfer out all the results back to BSC at the end of the auction. Auction function is upcoming on BC. There are some details for the Trade Out: 1. both can have a limit price (absolute or relative) for the trade; 2. the end result will be written as cross-chain packages to relay back to BSC; 3. cross-chain communication fees may be charged from the asset transferred back to BSC; 4. BSC contract maintains a mirror of the balance and outstanding orders on CAoB. No matter what error happens during the Trade Out, the final status will be propagated back to the originating contract and clear its internal state. With the above features, it simply adds the cross-chain transfer and exchange functions with high liquidity onto all the smart contracts on BSC. It will greatly add the application scenarios on Smart Contract and dApps, and make 1 chain +1 chain > 2 chains. # Staking and Governance Proof of Staked Authority brings in decentralization and community involvement. Its core logic can be summarized as the below. You may see similar ideas from other networks, especially Cosmos and EOS. 1. Token holders, including the validators, can put their tokens “**bonded**” into the stake. Token holders can **delegate** their tokens onto any validator or validator candidate, to expect it can become an actual validator, and later they can choose a different validator or candidate to **re-delegate** their tokens<sup>1</sup>. 2. All validator candidates will be ranked by the number of bonded tokens on them, and the top ones will become the real validators. 3. Validators can share (part of) their blocking reward with their delegators. 4. Validators can suffer from “**Slashing**”, a punishment for their bad behaviors, such as double sign and/or instability. 5. There is an “**unbonding period**” for validators and delegators so that the system makes sure the tokens remain bonded when bad behaviors are caught, the responsible will get slashed during this period. ## Staking on BC Ideally, such staking and reward logic should be built into the blockchain, and automatically executed as the blocking happens. Cosmos Hub, who shares the same Tendermint consensus and libraries with Binance Chain, works in this way. BC has been preparing to enable staking logic since the design days. On the other side, as BSC wants to remain compatible with Ethereum as much as possible, it is a great challenge and efforts to implement such logic on it. This is especially true when Ethereum itself may move into a different Proof of Stake consensus protocol in a short (or longer) time. In order to keep the compatibility and reuse the good foundation of BC, the staking logic of BSC is implemented on BC: 1. The staking token is BNB, as it is a native token on both blockchains anyway 2. The staking, i.e. token bond and delegation actions and records for BSC, happens on BC. 3. The BSC validator set is determined by its staking and delegation logic, via a staking module built on BC for BSC, and propagated every day UTC 00:00 from BC to BSC via Cross-Chain communication. 4. The reward distribution happens on BC around every day UTC 00:00. ## Rewarding Both the validator update and reward distribution happen every day around UTC 00:00. This is to save the cost of frequent staking updates and block reward distribution. This cost can be significant, as the blocking reward is collected on BSC and distributed on BC to BSC validators and delegators. (Please note BC blocking fees will remain rewarding to BC validators only.) A deliberate delay is introduced here to make sure the distribution is fair: 1. The blocking reward will not be sent to validator right away, instead, they will be distributed and accumulated on a contract; 2. Upon receiving the validator set update into BSC, it will trigger a few cross-chain transfers to transfer the reward to custody addresses on the corresponding validators. The custody addresses are owned by the system so that the reward cannot be spent until the promised distribution to delegators happens. 3. In order to make the synchronization simpler and allocate time to accommodate slashing, the reward for N day will be only distributed in N+2 days. After the delegators get the reward, the left will be transferred to validators’ own reward addresses. ## Slashing Slashing is part of the on-chain governance, to ensure the malicious or negative behaviors are punished. BSC slash can be submitted by anyone. The transaction submission requires **slash evidence** and cost fees but also brings a larger reward when it is successful. So far there are two slashable cases. ### Double Sign It is quite a serious error and very likely deliberate offense when a validator signs more than one block with the same height and parent block. The reference protocol implementation should already have logic to prevent this, so only the malicious code can trigger this. When Double Sign happens, the validator should be removed from the Validator **Set** right away. Anyone can submit a slash request on BC with the evidence of Double Sign of BSC, which should contain the 2 block headers with the same height and parent block, sealed by the offending validator. Upon receiving the evidence, if the BC verifies it to be valid: 1. The validator will be removed from validator set by an instance BSC validator set update Cross-Chain update; 2. A predefined amount of BNB would be slashed from the **self-delegated** BNB of the validator; Both validator and its delegators will not receive the staking rewards. 3. Part of the slashed BNB will allocate to the submitter’s address, which is a reward and larger than the cost of submitting slash request transaction 4. The rest of the slashed BNB will allocate to the other validators’ custody addresses, and distributed to all delegators in the same way as blocking reward. ### Inavailability The liveness of BSC relies on everyone in the Proof of Staked Authority validator set can produce blocks timely when it is their turn. Validators can miss their turn due to any reason, especially problems in their hardware, software, configuration or network. This instability of the operation will hurt the performance and introduce more indeterministic into the system. There can be an internal smart contract responsible for recording the missed blocking metrics of each validator. Once the metrics are above the predefined threshold, the blocking reward for validator will not be relayed to BC for distribution but shared with other better validators. In such a way, the poorly-operating validator should be gradually voted out of the validator set as their delegators will receive less or none reward. If the metrics remain above another higher level of threshold, the validator will be dropped from the rotation, and this will be propagated back to BC, then a predefined amount of BNB would be slashed from the **self-delegated** BNB of the validator. Both validators and delegators will not receive their staking rewards. ### Governance Parameters There are many system parameters to control the behavior of the BSC, e.g. slash amount, cross-chain transfer fees. All these parameters will be determined by BSC Validator Set together through a proposal-vote process based on their staking. Such the process will be carried on BC, and the new parameter values will be picked up by corresponding system contracts via a cross-chain communication. # Relayers Relayers are responsible to submit Cross-Chain Communication Packages between the two blockchains. Due to the heterogeneous parallel chain structure, two different types of Relayers are created. ## BSC Relayers Relayers for BC to BSC communication referred to as “**BSC Relayers**”, or just simply “Relayers”. Relayer is a standalone process that can be run by anyone, and anywhere, except that Relayers must register themselves onto BSC and deposit a certain refundable amount of BNB. Only relaying requests from the registered Relayers will be accepted by BSC. The package they relay will be verified by the on-chain light client on BSC. The successful relay needs to pass enough verification and costs gas fees on BSC, and thus there should be incentive reward to encourage the community to run Relayers. ### Incentives There are two major communication types: 1. Users triggered Operations, such as `token bind` or `cross chain transfer`. Users must pay additional fee to as relayer reward. The reward will be shared with the relayers who sync the referenced blockchain headers. Besides, the reward won't be paid the relayers' accounts directly. A reward distribution mechanism will be brought in to avoid monopolization. 2. System Synchronization, such as delivering `refund package`(caused by failures of most oracle relayers), special blockchain header synchronization(header contains BC validatorset update), BSC staking package. System reward contract will pay reward to relayers' accounts directly. If some Relayers have faster networks and better hardware, they can monopolize all the package relaying and leave no reward to others. Thus fewer participants will join for relaying, which encourages centralization and harms the efficiency and security of the network. Ideally, due to the decentralization and dynamic re-election of BSC validators, one Relayer can hardly be always the first to relay every message. But in order to avoid the monopolization further, the rewarding economy is also specially designed to minimize such chance: 1. The reward for Relayers will be only distributed in batches, and one batch will cover a number of successful relayed packages. 2. The reward a Relayer can get from a batch distribution is not linearly in proportion to their number of successful relayed packages. Instead, except the first a few relays, the more a Relayer relays during a batch period, the less reward it will collect. ## Oracle Relayers Relayers for BSC to BC communication are using the “Oracle” model, and so-called “**Oracle Relayers**”. Each of the validators must, and only the ones of the validator set, run Oracle Relayers. Each Oracle Relayer watches the blockchain state change. Once it catches Cross-Chain Communication Packages, it will submit to vote for the requests. After Oracle Relayers from ⅔ of the voting power of BC validators vote for the changes, the cross-chain actions will be performed. Oracle Replayers should wait for enough blocks to confirm the finality on BSC before submitting and voting for the cross-chain communication packages onto BC. The cross-chain fees will be distributed to BC validators together with the normal BC blocking rewards. Such oracle type relaying depends on all the validators to support. As all the votes for the cross-chain communication packages are recorded on the blockchain, it is not hard to have a metric system to assess the performance of the Oracle Relayers. The poorest performer may have their rewards clawed back via another Slashing logic introduced in the future. # Outlook It is hard to conclude for Binance Chain, as it has never stopped evolving. The dual-chain strategy is to open the gate for users to take advantage of the fast transferring and trading on one side, and flexible and extendable programming on the other side, but it will be one stop along the development of Binance Chain. Here below are the topics to look into so as to facilitate the community better for more usability and extensibility: 1. Add different digital asset model for different business use cases 2. Enable more data feed, especially DEX market data, to be communicated from Binance DEX to BSC 3. Provide interface and compatibility to integrate with Ethereum, including its further upgrade, and other blockchain 4. Improve client side experience to manage wallets and use blockchain more conveniently ------ [1]: BNB business practitioners may provide other benefits for BNB delegators, as they do now for long term BNB holders.
Rushikesh8983
Language Translation In this project, you’re going to take a peek into the realm of neural network machine translation. You’ll be training a sequence to sequence model on a dataset of English and French sentences that can translate new sentences from English to French. Get the Data Since translating the whole language of English to French will take lots of time to train, we have provided you with a small portion of the English corpus. """ DON'T MODIFY ANYTHING IN THIS CELL """ import helper import problem_unittests as tests source_path = 'data/small_vocab_en' target_path = 'data/small_vocab_fr' source_text = helper.load_data(source_path) target_text = helper.load_data(target_path) Explore the Data Play around with view_sentence_range to view different parts of the data. view_sentence_range = (0, 10) """ DON'T MODIFY ANYTHING IN THIS CELL """ import numpy as np print('Dataset Stats') print('Roughly the number of unique words: {}'.format(len({word: None for word in source_text.split()}))) sentences = source_text.split('\n') word_counts = [len(sentence.split()) for sentence in sentences] print('Number of sentences: {}'.format(len(sentences))) print('Average number of words in a sentence: {}'.format(np.average(word_counts))) print() print('English sentences {} to {}:'.format(*view_sentence_range)) print('\n'.join(source_text.split('\n')[view_sentence_range[0]:view_sentence_range[1]])) print() print('French sentences {} to {}:'.format(*view_sentence_range)) print('\n'.join(target_text.split('\n')[view_sentence_range[0]:view_sentence_range[1]])) Dataset Stats Roughly the number of unique words: 227 Number of sentences: 137861 Average number of words in a sentence: 13.225277634719028 English sentences 0 to 10: new jersey is sometimes quiet during autumn , and it is snowy in april . the united states is usually chilly during july , and it is usually freezing in november . california is usually quiet during march , and it is usually hot in june . the united states is sometimes mild during june , and it is cold in september . your least liked fruit is the grape , but my least liked is the apple . his favorite fruit is the orange , but my favorite is the grape . paris is relaxing during december , but it is usually chilly in july . new jersey is busy during spring , and it is never hot in march . our least liked fruit is the lemon , but my least liked is the grape . the united states is sometimes busy during january , and it is sometimes warm in november . French sentences 0 to 10: new jersey est parfois calme pendant l' automne , et il est neigeux en avril . les états-unis est généralement froid en juillet , et il gèle habituellement en novembre . california est généralement calme en mars , et il est généralement chaud en juin . les états-unis est parfois légère en juin , et il fait froid en septembre . votre moins aimé fruit est le raisin , mais mon moins aimé est la pomme . son fruit préféré est l'orange , mais mon préféré est le raisin . paris est relaxant en décembre , mais il est généralement froid en juillet . new jersey est occupé au printemps , et il est jamais chaude en mars . notre fruit est moins aimé le citron , mais mon moins aimé est le raisin . les états-unis est parfois occupé en janvier , et il est parfois chaud en novembre . Implement Preprocessing Function Text to Word Ids As you did with other RNNs, you must turn the text into a number so the computer can understand it. In the function text_to_ids(), you'll turn source_text and target_text from words to ids. However, you need to add the <EOS> word id at the end of target_text. This will help the neural network predict when the sentence should end. You can get the <EOS> word id by doing: target_vocab_to_int['<EOS>'] You can get other word ids using source_vocab_to_int and target_vocab_to_int. def text_to_ids(source_text, target_text, source_vocab_to_int, target_vocab_to_int): """ Convert source and target text to proper word ids :param source_text: String that contains all the source text. :param target_text: String that contains all the target text. :param source_vocab_to_int: Dictionary to go from the source words to an id :param target_vocab_to_int: Dictionary to go from the target words to an id :return: A tuple of lists (source_id_text, target_id_text) """ # TODO: Implement Function source_id_text = [[source_vocab_to_int[word] for word in sentence.split()] \ for sentence in source_text.split('\n')] target_id_text = [[target_vocab_to_int[word] for word in sentence.split()] + [target_vocab_to_int['<EOS>']] \ for sentence in target_text.split('\n')] return source_id_text, target_id_text """ DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE """ tests.test_text_to_ids(text_to_ids) Tests Passed Preprocess all the data and save it Running the code cell below will preprocess all the data and save it to file. """ DON'T MODIFY ANYTHING IN THIS CELL """ helper.preprocess_and_save_data(source_path, target_path, text_to_ids) Check Point This is your first checkpoint. If you ever decide to come back to this notebook or have to restart the notebook, you can start from here. The preprocessed data has been saved to disk. import problem_unittests as tests """ DON'T MODIFY ANYTHING IN THIS CELL """ import numpy as np import helper (source_int_text, target_int_text), (source_vocab_to_int, target_vocab_to_int), _ = helper.load_preprocess() Check the Version of TensorFlow and Access to GPU This will check to make sure you have the correct version of TensorFlow and access to a GPU """ DON'T MODIFY ANYTHING IN THIS CELL """ from distutils.version import LooseVersion import warnings import tensorflow as tf from tensorflow.python.layers.core import Dense # Check TensorFlow Version assert LooseVersion(tf.__version__) >= LooseVersion('1.1'), 'Please use TensorFlow version 1.1 or newer' print('TensorFlow Version: {}'.format(tf.__version__)) # Check for a GPU if not tf.test.gpu_device_name(): warnings.warn('No GPU found. Please use a GPU to train your neural network.') else: print('Default GPU Device: {}'.format(tf.test.gpu_device_name())) TensorFlow Version: 1.1.0 Default GPU Device: /gpu:0 Build the Neural Network You'll build the components necessary to build a Sequence-to-Sequence model by implementing the following functions below: model_inputs process_decoder_input encoding_layer decoding_layer_train decoding_layer_infer decoding_layer seq2seq_model Input Implement the model_inputs() function to create TF Placeholders for the Neural Network. It should create the following placeholders: Input text placeholder named "input" using the TF Placeholder name parameter with rank 2. Targets placeholder with rank 2. Learning rate placeholder with rank 0. Keep probability placeholder named "keep_prob" using the TF Placeholder name parameter with rank 0. Target sequence length placeholder named "target_sequence_length" with rank 1 Max target sequence length tensor named "max_target_len" getting its value from applying tf.reduce_max on the target_sequence_length placeholder. Rank 0. Source sequence length placeholder named "source_sequence_length" with rank 1 Return the placeholders in the following the tuple (input, targets, learning rate, keep probability, target sequence length, max target sequence length, source sequence length) def model_inputs(): """ Create TF Placeholders for input, targets, learning rate, and lengths of source and target sequences. :return: Tuple (input, targets, learning rate, keep probability, target sequence length, max target sequence length, source sequence length) """ # TODO: Implement Function inputs = tf.placeholder(tf.int32, [None, None], 'input') targets = tf.placeholder(tf.int32, [None, None]) learning_rate = tf.placeholder(tf.float32, []) keep_prob = tf.placeholder(tf.float32, [], 'keep_prob') target_sequence_length = tf.placeholder(tf.int32, [None], 'target_sequence_length') max_target_len = tf.reduce_max(target_sequence_length) source_sequence_length = tf.placeholder(tf.int32, [None], 'source_sequence_length') return inputs, targets, learning_rate, keep_prob, target_sequence_length, max_target_len, source_sequence_length """ DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE """ tests.test_model_inputs(model_inputs) Tests Passed Process Decoder Input Implement process_decoder_input by removing the last word id from each batch in target_data and concat the GO ID to the begining of each batch. def process_decoder_input(target_data, target_vocab_to_int, batch_size): """ Preprocess target data for encoding :param target_data: Target Placehoder :param target_vocab_to_int: Dictionary to go from the target words to an id :param batch_size: Batch Size :return: Preprocessed target data """ # TODO: Implement Function go = tf.constant([[target_vocab_to_int['<GO>']]]*batch_size) # end = tf.slice(target_data, [0, 0], [-1, batch_size]) end = tf.strided_slice(target_data, [0, 0], [batch_size, -1], [1, 1]) return tf.concat([go, end], 1) """ DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE """ tests.test_process_encoding_input(process_decoder_input) Tests Passed Encoding Implement encoding_layer() to create a Encoder RNN layer: Embed the encoder input using tf.contrib.layers.embed_sequence Construct a stacked tf.contrib.rnn.LSTMCell wrapped in a tf.contrib.rnn.DropoutWrapper Pass cell and embedded input to tf.nn.dynamic_rnn() from imp import reload reload(tests) def encoding_layer(rnn_inputs, rnn_size, num_layers, keep_prob, source_sequence_length, source_vocab_size, encoding_embedding_size): """ Create encoding layer :param rnn_inputs: Inputs for the RNN :param rnn_size: RNN Size :param num_layers: Number of layers :param keep_prob: Dropout keep probability :param source_sequence_length: a list of the lengths of each sequence in the batch :param source_vocab_size: vocabulary size of source data :param encoding_embedding_size: embedding size of source data :return: tuple (RNN output, RNN state) """ # TODO: Implement Function embed = tf.contrib.layers.embed_sequence(rnn_inputs, source_vocab_size, encoding_embedding_size) def lstm_cell(): lstm = tf.contrib.rnn.BasicLSTMCell(rnn_size) return tf.contrib.rnn.DropoutWrapper(lstm, keep_prob) stacked_lstm = tf.contrib.rnn.MultiRNNCell([lstm_cell() for _ in range(num_layers)]) # initial_state = stacked_lstm.zero_state(source_sequence_length, tf.float32) return tf.nn.dynamic_rnn(stacked_lstm, embed, source_sequence_length, dtype=tf.float32) # initial_state=initial_state) """ DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE """ tests.test_encoding_layer(encoding_layer) Tests Passed Decoding - Training Create a training decoding layer: Create a tf.contrib.seq2seq.TrainingHelper Create a tf.contrib.seq2seq.BasicDecoder Obtain the decoder outputs from tf.contrib.seq2seq.dynamic_decode def decoding_layer_train(encoder_state, dec_cell, dec_embed_input, target_sequence_length, max_summary_length, output_layer, keep_prob): """ Create a decoding layer for training :param encoder_state: Encoder State :param dec_cell: Decoder RNN Cell :param dec_embed_input: Decoder embedded input :param target_sequence_length: The lengths of each sequence in the target batch :param max_summary_length: The length of the longest sequence in the batch :param output_layer: Function to apply the output layer :param keep_prob: Dropout keep probability :return: BasicDecoderOutput containing training logits and sample_id """ # TODO: Implement Function helper = tf.contrib.seq2seq.TrainingHelper(dec_embed_input, target_sequence_length) decoder = tf.contrib.seq2seq.BasicDecoder(dec_cell, helper, encoder_state, output_layer) dec_train_logits, _ = tf.contrib.seq2seq.dynamic_decode(decoder, maximum_iterations=max_summary_length) # for tensorflow 1.2: # dec_train_logits, _, _ = tf.contrib.seq2seq.dynamic_decode(decoder, maximum_iterations=max_summary_length) return dec_train_logits # keep_prob/dropout not used? """ DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE """ tests.test_decoding_layer_train(decoding_layer_train) Tests Passed Decoding - Inference Create inference decoder: Create a tf.contrib.seq2seq.GreedyEmbeddingHelper Create a tf.contrib.seq2seq.BasicDecoder Obtain the decoder outputs from tf.contrib.seq2seq.dynamic_decode def decoding_layer_infer(encoder_state, dec_cell, dec_embeddings, start_of_sequence_id, end_of_sequence_id, max_target_sequence_length, vocab_size, output_layer, batch_size, keep_prob): """ Create a decoding layer for inference :param encoder_state: Encoder state :param dec_cell: Decoder RNN Cell :param dec_embeddings: Decoder embeddings :param start_of_sequence_id: GO ID :param end_of_sequence_id: EOS Id :param max_target_sequence_length: Maximum length of target sequences :param vocab_size: Size of decoder/target vocabulary :param decoding_scope: TenorFlow Variable Scope for decoding :param output_layer: Function to apply the output layer :param batch_size: Batch size :param keep_prob: Dropout keep probability :return: BasicDecoderOutput containing inference logits and sample_id """ # TODO: Implement Function start_tokens = tf.constant([start_of_sequence_id]*batch_size) helper = tf.contrib.seq2seq.GreedyEmbeddingHelper(dec_embeddings, start_tokens, end_of_sequence_id) decoder = tf.contrib.seq2seq.BasicDecoder(dec_cell, helper, encoder_state, output_layer) dec_infer_logits, _ = tf.contrib.seq2seq.dynamic_decode(decoder, maximum_iterations=max_target_sequence_length) # for tensorflow 1.2: # dec_infer_logits, _, _ = tf.contrib.seq2seq.dynamic_decode(decoder, maximum_iterations=max_target_sequence_length) return dec_infer_logits """ DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE """ tests.test_decoding_layer_infer(decoding_layer_infer)
sushruthreddygade
Purpose The purpose of this project is to apply and learn advanced software engineering concepts gathering requirements for a software application that schedules the hospital personnel and then derive use cases from them. This involves reviewing of already existing software and learning website and derive requirements and use cases based on the website primary features. The project also encompasses construction of, sequence diagram, design class diagram, Collaboration diagrams and other UML modeling diagrams based on the derived use cases. At the end, high level planning is done for the whole project based on derived use cases by Agile efforts estimation technique. Scope The project will consist of developing personnel scheduling software. Modules of the website include a login feature, a schedule checker and a schedule planner. Our innovative 100% web-based Scheduling & Open Shift Management (OSM) product can help managers efficiently schedule their staff, and also lets the staff help managers fill open shifts online, see schedules and changes, request time- off, swap shifts, etc, etc. All schedules, changes, approvals, and alerts not only happen online in real-time, but also are sent out as emails and text messages to cell phones. Our Software can cut manager time wasted on scheduling tasks by 50% or more and let them get back to MANAGING! Introduction to HMSS When workforce includes hundreds of employees, open shifts are inevitable. Without the right skills-based workforce management tools in place, nurse managers and staffing managers spend a disproportionate amount of time trying to fill scheduling gaps. Not only is this inefficient, but it leads to increased costs and reduced employee satisfaction. Advantages of having online scheduling system 2.1. ● Save Money Reduce premium labor costs by leveraging the most cost-effective, qualified staff to fill open shifts. Stop wasting time you don’t have on scheduling. Decrease the time it takes you to create a weekly schedule for your team by over 75 percent with HMSS. ● Save Time Save countless hours using instant communication strategies to fill open shifts. ● Keep Workers Happy Increase employee satisfaction by empowering them to choose when they want to work based on experience, competencies, and skills. ● Faster, Easier Scheduling Healthcare staff scheduling has never been easier. Spend minutes instead of hours organizing shifts for your nurses and other medical staff. ● Monitor Attendance Hospital Management System (Personal Scheduling System) – SWE 600 (Fall 2015) Prof. Instructors: Dr. R. Riehle & Q Asghar See which employees are coming in late or missing shifts. Send shift reminders automatically to make sure everyone is on the same page. ● Give Staff More Independence Take some work off your own plate with collaborative healthcare staff scheduling options. Allow your employees to request shift trades and swaps on their own so you don’t have to micromanage them. ● Avoid Human Error Humans make mistakes, but HMSS doesn’t. If you forget to fill a shift or overbook one, the software immediately notifies you of your error, allowing you to rectify it right away. ● Create Perfect Timesheets Export perfect timesheets to create perfect attendance and work reports. Better healthcare staff scheduling means easier payroll processing as well. To deliver the best care possible to patients, we must begin with the best possible workforce management solution for our staff. With HMSS, we help control labor costs, minimize compliance risk, improve workforce productivity, and deliver quality, cost-effective care. Here’s how: • Physician coverage scheduling enables the effective and equitable deployment of physicians and other clinician providers – your group, your rules, to build your schedules • Advanced staffing supports the safest and most appropriate assignment of caregiver staff to patients, and balances workload distribution in the best interests of patients and staff • Intelligently forecast volume to build optimal schedules helps ensure proper staff coverage for every shift, every day, across your entire organization • On-demand visibility with labor analytics controls labor costs and allows organizations to make evidence-based decisions • Mobile management supports paperless workflow and employee self-service for your on-the-go workforce
Monster-Scripts
local e=(function(n,e)return(n~=e);end)local e=(function(n,e)return(n>=e);end)local V=(function(n,e)return(n>e);end)local G=(function(n,e)return(n^e);end)local e=(function(n,e)return(n<=e);end)local a=(function(n,e)return(n==e);end)local e=(function(n,e)return(n<e);end)local N=(function(n,e)return(n-e);end)local e=(function(e,n)return(e..n);end)local M=(function(n,e)return(n%e);end)local D=(function(n,e)return(n+e);end)local x=(function(e,...)return e(...);end)local j=(function(e,n)return(e/n);end)local k=(function(e,n)return(e*n);end)for n,e in pairs({(function(c,...)_d9c022ff91464aed="This file was obfuscated using PSU Obfuscator 4.5.A | https://www.psu.dev/ & discord.gg/psu";local U=_d9c022ff91464aed local l=c.H0Qwk0iE0P;local ne=c[((#{651;}+592788173))];local oe=c[((249941293-#("this script was obfuscated using moonsec")))];local S=c.XgxDP;local ce=c.dVzJU9;local C=c[(807506878)];local i=c[((#{425;804;931;(function(...)return 928;end)()}+708256303))];local F=c[((343335178-#("strawberrys is a n-n-n-n-nn-n-n-n-n-n-n-n-nnn-n-n-n- i")))];local z=c.MQISOu;local ae=c.Ibp3hBf0;local y=c[((942953583-#("balls in yo jaws (yo jaws)")))];local n=c[((#{143;783;814;542;(function(...)return 63,570,58,...;end)(942,919,245,165)}+953720241))];local g=c[(566271629)];local xe=c.x79X9Yw;local de=c[((#{352;(function(...)return 852,573,798,347;end)()}+401278268))];local m=c['pUQwVV0'];local p=c.lBq8bnLzg;local o=c[((21591894-#("psudeobfuscator.tk")))];local te=c[((#{225;46;957;(function(...)return 795,444,844,450;end)()}+240712621))];local le=c[(305379501)];local L=c["btqlWDZBhG"];local B=c[(777371616)];local h=c[((#{767;343;790;127;(function(...)return 562,150;end)()}+149847516))];local r=c[(63487190)];local ee=c[((#{896;(function(...)return...;end)(255,381,786,221)}+860843683))];local W=c[((903466419-#("psu thighs")))];local J=c[(148932288)];local R=c[((126071811-#("nigmode")))];local X=c[((152219744-#("I love farting")))];local u=c[(167833402)];local Q=c.btCD0Ld0E6;local E=c[((537435825-#("like")))];local Z=c[((723896170-#("Noel is the best coder")))];local _=((getfenv)or(function(...)return(_ENV);end));local f,s,e=({}),(""),(_(l));local d=((e[""..c[r].."\105\116\51\50"])or(e["\98\105"..c[n]])or({}));local t=(((d)and(d["\98"..c[S]..c["x0r6Y0SDV"].."\114"]))or(function(e,n)local l,x=l,i;while((e>i)and(n>i))do local t,d=e%o,n%o;if t~=d then x=x+l;end;e,n,l=(e-t)/o,(n-d)/o,l*o;end;if e<n then e=n;end;while e>i do local n=e%o;if n>i then x=x+l;end;e,l=(e-n)/o,l*o;end;return(x);end));local b=(o^F);local w=(b-l);local I,P,v;local b=(s[""..c[Q].."\115"..c[B].."\98"]);local b=(s[""..c["uxMMflkQ"]..c[B]..c[r]]);local g=(s[""..c[r]..c[g]..c[n]..c[h]]);local K=(s[""..c[m]..c[y].."\97\114"]);local s=(e[""..c[n].."\121"..c[C].."\101"]);local O=(e[""..c[W].."\97\116"..c[y]]["\102"..c.Q0tip..c.x0r6Y0SDV.."\111"..c[u]]);local q=function(l,n,e)return e+n or l*e end;local Y=((e["\109"..c[E]..c[n]..c[y]]["\108\100"..c[h]..c[S].."\112"])or(function(e,n,...)return((e*o)^n);end));local T=(e[""..c["uxMMflkQ"]..c[h].."\108"..c[h]..c[m]..c[n]]);local s=((e["\117"..c[p]..c[C].."\97"..c[m]..c[z]])or(e[""..c[n]..c[E].."\98"..c.Q0tip.."\101"]["\117"..c[p].."\112\97"..c[m]..c[z]]));local H=(e[""..c[C]..c[E]..c["MGL80j2"]..c[u].."\115"]);local B=(e[""..c[n].."\111"..c[p]..c[B].."\109\98\101\114"]);local z=(e[""..c[C]..c[m].."\97"..c.Q0tip..c['Q0tip']]);local C=(e["\114\97\119"..c.uxMMflkQ.."\101\116"]);local C=(e["\115"..c[n].."\114\105"..c[p]..c[Q]]["\109\97\116\99\104"]);local Q=(e[""..c["uxMMflkQ"]..c[h]..c[n]..c[W]..c[h].."\116\97\116\97\98\108"..c[h]]);local W=(d[""..c[r].."\110\111"..c[n]])or(function(e,...)return(w-e);end);P=((d[""..c[u].."\115"..c[y].."\105\102"..c[n]])or(function(n,e,...)if(e<i)then return(I(n,-(e)));end;return(O(n%o^F/o^e));end));local w=(d["\98\111"..c[u]])or(function(e,n,...)return(w-v(w-e,w-n));end);I=((d[""..c.Q0tip.."\115\104\105\102\116"])or(function(n,e,...)if(e<i)then return(P(n,-(e)));end;return((n*o^e)%o^F);end));v=(d[""..c[r]..c[E]..c[p].."\100"])or(function(e,n,...)return(((e+n)-t(e,n))/o);end);if((not(e["\98"..c['MGL80j2']..c[n].."\51"..c[L]]))and(not(e[""..c[r]..c['MGL80j2']..c[n]])))then d[""..c[u].."\115\104"..c['MGL80j2'].."\102"..c[n]]=P;d[""..c[r].."\110"..c.x0r6Y0SDV..c[n]]=W;d["\98"..c[E].."\110"..c.iiq8EzS]=v;d[""..c[r].."\111\114"]=w;d["\98"..c[S].."\111"..c[u]]=t;d[""..c.Q0tip.."\115"..c[y].."\105"..c[de]..c[n]]=I;end;local o=(e["\116"..c[E].."\98\108\101"]["\105"..c[p].."\115\101"..c[u]..c[n]]);local w=(e[""..c[n]..c[E].."\98\108\101"][""..c[m].."\111"..c[p].."\99\97"..c[n]]);local p="\58"..c['qS5zSnQ0']..c[X].."\100"..c[oe].."\41"..c.omlHrPOTj;local o=(e["\116\97"..c[r]..c.Q0tip.."\101"]["\114\101\109"..c.x0r6Y0SDV.."\118\101"]);local y=(((e[""..c[n]..c[E].."\98\108\101"][""..c[m]..c[u]..c[h].."\97\116"..c[h]]))or((function(e,...)return({s({},i,e);});end)));e[""..c[r].."\105\116\51"..c[L]]=d;local e=((-R+(function()local o,n=i,l;(function(e)e(e(e))end)(function(e)if o>ae then return e end o=o+l n=(n+xe)%ee if(n%Z)>=ce then n=(n-ne)%te return e else return e(e(e and e))end return e(e(e))end)return n;end)()));local n,o=z(function(n)local e,o=n()local x,n=e(n(B),o)local o,e=e(q,i,nil,o)return B(C(e,p))-B(C(n,p))+l end,function(e)if e then return function(e)return e()end else return z,''end end) local n=(#U+le);local r,p=({}),({});for e=i,n-l do local n=K(e);r[e]=n;p[e]=n;p[n]=e;end;local E,o=(function(x)local o,t,d=g(x,o,J);if((o+t+d)~=((254-#("yo wtf"))))then e=e+(43);n=n+((227-#("Perth after saying literally the worst idea to ever exist every 5 minutes")));end;x=b(x,(5));local o,d,t=(""),(""),({});local e=l;local function c()local n=B(b(x,e,e),((#{14;687;632;}+33)));e+=l;local l=B(b(x,e,e+n-l),((#{275;535;745;(function(...)return;end)()}+33)));e+=n;return(l);end;o=p[c()];t[l]=o;while(e<#x)do local e=c();if r[e]then d=r[e];else d=o..b(o,l,l);end;r[n]=o..b(d,l,l);t[#t+l],o,n=d,d,n+l;end;return(w(t));end)("PSU|26s22U22s121022G22M1610102202131318111N21d23121a27c2361g1q1p1I101M1h2261l1022k1S1Q1r1a1n22K226121n1t161121D21l19101r17171h1l1321821b1s1d1I171t1a22521v1T21V24K24D1a27C2241z1821G21i1n141v1a1623S26L27c29e1021S1321y1527c22821D1F1q1726v21021h25224j26t25n22d25W24O2491e27c22621n1o1F171N1x21i1k141G1B1D1621P22K1427C22c21D1t1C2311H1827c239161m1N161d191l24k25V27s1022B21K1A1L1h171d1E1J1m21G21O1D1L1i191t1v2381t2aK1022Q1D101324T25g29k1022S2132181V1926z23W2a210236171r21D2181m2Av2A821m21F1P1k21L27A27C22X28R2aw1626B24127b2B521i1919161N24f26M2BY22U2bB1v1M26q2cT27c21Y21G1j1C1822c26F2651b27c2212101c161221221813131t21t26q25M2Dj102242191O1M1Q1121n21p1m27i1V22w2by22c2121j181522W2dE27c22v121h1n1h1t1S101u22U2Dy21v2c21921P2191Q1g1c1t1m1922v2901021z1y1h2102Bh1O1s1N1124L26728E1022x1Q21821O12122af111922Y1727C21V2eN111D1t1725z23Z22f25422j1326j25825w24324R2Fx1022a21f16131B131025c24l2FL22c1Z27s1B213213181925322122o27122423l24R23k25x26H2621c27C22R2AF1618122a71d151V1j24K2601p27C21w2f0171l1f2Ag21x182301X13171K1P1O1H1121w22C1r2271H1o22Y2262bT1022821R161729P1W29629829a25l24k2aS1022c21P141821x23421R1s21v2531n2292661R24E24I23r22x2662IT292181X2Dc2DE2231W2C722A21j1b1A27i2aA1h102G3191k21V21c29f1w22521926k2gf29l2871m27U1725426Z1g27C22021p1o1c1F112aY21i21P28f21021d1J1626u23t2dy2AM2Ao2132iO2991626q28z27c2Fa1h2ky2972L01W21x29f25C24q21623422B1X22e21g2122Dg23U25W26e2iG21y21B29K2142191R2AX28828A1123329f1021W141O2aj27c22u1F2LW22r21C26y26l2692692611t26224o24b2hB2f92122DE21i21I2jt2Jv1k24L25z1127C21323v2IS2cn1Q1L1927g27I26423325726x23g26L23M21t26m24O23q2jt1023727U1s2g110111B1U122bM1L2AX1d25623i2211d22U24u1x25w26z25W26N2Bq2311c1l1s25i2232261e22i25O25522c26925w26l2Cu23421l2131U151125125i2gg2NM2l82Iq2592NK22B21e1o21G2141m101i2Do21j21j2aC1G1M1726u23P2gg22v181B192fs1124m23S22o23726F1P22S1c26p26f24N23J25825f24n25825226L25U29D29F21K23c25e23v2fl22d1x1T15151t2aO1m21c2232IT2hD2b017131H1C22X2i12FY2172b0102i626325A152r11022e2gJ1n1R1t21s2352272MN2jn131k1n1M1r2202241529P1P23G2nK2jn2OD151a122B91121J2132RF2Kr1221r1T1Y26E27022K1k26D26L27025f2M223421c24R26S1v29121l1m29A21u22T21P1N22523J1y2RO2K922k2302161r1h1F1922322M2K727u24f2712Pa1022R2en142B921m2cD2cf1n21M21L1J1r1d2ly1121726h21V23O2171U23326G26e26F26G24126C21124326v26226927225R2jM21j2hG2t71z21F2tU2tW21s1c1y27n27P27r27T27v27x27z28128322K21Y141t1h2872172P92b928428V21V22M22S2Fl22E21R1q161K2Hj1J1v182Fw27c2Rl2rn2rp230122cu21w1x171G1R1q1U2vf2AT112QL2qn2Qp22Y1S2By2222111d21721925826029f2341F21r22H2WC27c22t2Ac1S1P22x1J2f82Lr2LW2mR2971j1N22X1r29F23k2611p2192vq1022321A1s2tn1b2PS22K1u1f22923d2pZ26P25723O2lC24u21a24T23W21e22j22w25625424u26r22a2Eu27C21x2101I29P1921G2132bI191A25H24T26c21o25G25X2182651f23k26d24G25M25s1O22723R2l62FL21T21g1H2aG1z2931K26724q2CU22P18142hv1R26024h2iG2oB1A1e21M214152rf28K1E1925N24u2x725i1624r2d22L42mP1821524n26g2gn2Nl28326v25c25R22q22Z25Q21124a25t23E2Lb29F21f23723n2sk29F2201822J26i23m23J2301r1x25a26322a2xc21w1D2F12f31m24V2o927c22b21I2Tl2ox2Gg2eW2C322H22X1D26G24o2Bq2qU1j26u2661X1u24a21z26K24627121026q25v2211j21C23Y21S24h26f1r22K23825w24x22R21o26M2432N22iU2102os2Ou1122c22t310J29e21M23E132Rj2Dk2131o1P141e2X1142x31V22Z2cu22I1j2132Jq1t1w22a2F82eL1H1Y21f2FH2Vj1125e2Gq27c22S2kk1c2nu1p151922P2vw2FY2dR2Dt21T22X21G24721V2112711P24l2692122Wq2ti1F132NR23S25o23s25U22j23a22625u26t22V2231j2EK2em2172172802971521n21i1D2nR1Q2QO1d21o1v21H25121X1d21S22v23U2722bx311a1z27x2NR1122725r22921f26c26423V2qb2m222v312x2g92dk21m21e26L24p2Ec2gT101B25C2zu29f21l23d25z24c2dY2vh2vJ2Vl21U22O21b2JJ1Y2mN22w2fx141d2TT2TV2891122w2cu27C22o101W1322A2nk2352ad1G1G21m21C28b2171h2CX1L1V2892PK2Gg2kw1C21I2191n257310o29e26o25R24125e21u21326H1U2371y2402Ge2GG2361n2Pg2PI2491I25A24M21K24q26d22326C22a2W51023b2ZO2v5131F313v23I26T21j25T26u22w1I21Q23p22v22L2BY22B21n111R161P2y62tI1h1J1I1r1R2AW31332d022E25I22j21y2371Z26025Z24m22U25O24G2301c2211P24c24O24E2Fl22p1k31971S28G28F22I2142cu2321R2a62a822x23d23021k2Ms1F25Z26U2121v2cU2jF10287266313O2ti1C11181j1f27t1924z2Di27C21T21b1D1b28R1y2ij2IL24F26d2C7313Q161H2PP1421h21E2Uw2ez26R2l3102dL2DN122152192I11921B2252C7313g1N31az31672cz316w1t24w317s27c2271f21W2EJ2ih2J13155316w21722t1z23P21222J22522U26N21N2QW27C21U1z1j24931191022f21e19182712492X726F21321922x2bq2eW2XI2692xs29E22o1D21921y316Z2go24I1Y24T2QC29E1822024625U2bq22D1H219142572jd2dA2Ls192142P91r24P25l2It2212131q1Y21j1D1P1G1831dg27C231182rp24R22525Z23d24g2El22l23R25923Q2bQ22F1M2X326h2z927N31b21a1b1226s1b23Y22y23A21S21124U26S315h2bY2db2dd1826u2622222GN22u2332361w22x2181w23a31G22321W23222T23c23831G42382332332302371w22s2331A1w31go1W22r31G023323923822x31GA21A23b23622P23421431gN31gP31h522u23923222r31gV23323221421531h431H531Hh1W23023322R22p2301W21u22831g421u21Z31g421y1w21p31G521a22822722b22E21a22E31HN23922T31g423a21a21Z22h22a22731i431I623031I831hG31Hi31GP31hK31hM31ho22p31Ia31GH31Hx1W2Cc1w21C31iL31iM1w23b22w22X23022T31g522x31gj31gL31iz31J031gP23a31IT31hY31GF31Gh23722J1Z31jh31GI22l21a22022P23222S31J521A22B31GT31jS31i023022p23D22q22P22R22Z22431GT22s31ga23731gj21b1W23722t23223731jb31jc1W23623331IU23122P23822W21A31H022S21422P1W31KD21e1W2171w21422X1W21631l321f21I21C31ky1W31jL31gg31Gi21531lh31kj31Jc31Hw31HY21v21Y31h023122T21A31gA23b21431Gf23623723331I023323722X31HB23221531L61w31LN31lp31lR21t23222v31j523721421c31G431Km31G421c31M631L731M922p31lq31lS22T31lU31mi31iX31is31HO31l223322u22u31kf23831hf31kk31HI31Hq31m031M231M431iu21y21A23431LJ31j031ht21A31MP31LQ31Iu31Nk31LR31Lt21431NI22822p23631kg23831N931m322x31Hc31ge31g031lY31NX31nb31L222E22t31HA31g021f31ms31mU21831gv23023821731KP31kr21A31m231Hd21931jE2t521E21521831MM31N531N631h531kX31hY31kx31l223723422T22T22s31Lc21e21a21H31ng31IM22V31mq22T21M21Z22t23822b22t23623a22X22R22T2141y22A31H831PK31pm31po22t1y21531Jp22T31nt23822Q31Q223821M23B22p31m331He31pb31HI31iB31JQ31Js31JU31o731io31M323D31Iu31O731o923631oB31Np31mV31MV21f31mM31QD31hh31qf31Jr31jt31mB31kB22t23122q23023d22431gW31Q223631QJ31Hl31Ql31QN31O831lW31Qr31mt21431Qv31Ot31Ot31ov31kk31kG22s31Lj31Rr31Il21531Qc31RU31H521C2jZ29f22B1J23l2oY31B82z22AG2121d215318L23B28q1h1s2De1E1h218313e29L2fe22H22p31S81626w2432Bq2Iv151O2311G2gR31661B21P21m2vN2232132FL21Y2151c2cE21r1z1S1724s2Wk29F2682671F22g23Z25e25h22u25j24L26321l31dr26823z21b24831tj27C26O23M21E26K2p331sn1d2Vw1d2Qw27H27j31402DU24x23S2f82Z12Z31621t316L2dE25n25w25J22i1o21525t26b311031er27D213121826f23L310622T1M2dt2xc22R31C81B2cz26223R24K22y26w24J24b25D26124324g2mN2371i1N2dd28R2Ht2HV1621221z2bq29m2od23p31dW1021c21W21g25e23o2Cu31Fs2DE1M21i312q29G218218219318l22B21C2eN316721521E1S2342wX2l431wt21M2kz29A24K25T2kd1021v21b1931332122An1c21n1x31HE31tc2zX21325326o26023222c24b2722sj2X726D2111o22N2Gg22u1k1T2s91l1525x2d92f92141r1s192qz2RA22p29o1T182Zc21v31AC31CF215101L27u2332x629E22821921P21W2rA2vY161c2XI1N23A1e2f8317m21321c122az1123z26Y2nk2242sS2Su2Sw2SY2T02T22bA26P31wc2Fy21A1921231D131D32bq2321B2AO2182282iT31Z431T51V24z25T2gG22s2192ot2Ov22C23c22527x2iU21P31Sx22C2hy2i02i22i42i62I82Ia2oD24w2571621826g25t22M23y26622v2262th22f2bk1F313S1831PI1R31Gh1P2St162vj1431f81N21v31Dr1021h23921W313Y31Ay2G12S222i2112dY31BW2do21321j2mY1R1121g21T26e25J312S22P26x26521L1R2621f318N26f25926721n2Ra224321A29A2VJ23H215317l21d1n102eF1722w21225l1624022E1N26126021l26d1521k1x24c1p25E23r2oO2Cu22031e51d2Ff1531362FY152ji1826Q2402GG2fN21821p28I1l25r316A27C23K25r1F25G31Dl29e21N23F24R2OP314U1h2cZ1221021x2CU21U321x28f112542642f82HD2Ag2Hg2kJ161o21O31wI1021O23G21b22424o24n24s21Y24E26f23k22A22r2C72qU2t9121g152cz31EN2pH26C23o314T2NL27U314w314Y14315031523154315624231D422B2161n1D25R311m2a3316m31v423U2iT2NM2mt172JW31zl2cU2Iv1T1O101926q24x2122ut27q27S27u27W27Y2802822842862Tw21D21h1v1o1T21B21F1d1F1A2222Vc24X23r2by31Wv31Z71023L22t21923625K24121J22h267259327A27c22e31em31EO21R23a21923f24L1i24723v26m27225h2bQ21Z310124z25s2CU2Ew2EQ1B1n21631sm2iU31xb21I324I321Z21S21631Dh2R31L21d24L22022h21A24o26r22R260318K2fL21U21931zV21r2152v51624z25v2bY2eL2gV21921O22B2DY22B2131H316s22423821N2bU1v24Y31EG31Cz2gt1m21h2kQ1625331CE21S1j1J22H1u2Gg31ul31S921926E23Y2mN31yW31YY1121x22x32081124926O21K2162261V23o1H26S1h322O324a1j2fS1O26024O24c25v25L23W21o26v26W22v2m72B5320121R22I2M2221191q23125u21V21L1d23621u24D25931v62ek2PO26R31y421v316o1831Vu1c323K2DZ2E12e31126b316F2aL31xB1Z2111J2Jt1l31Z931052cN2IL2331q25421i1G24O22Z24126Q2ug2c7317M2182XA152Zr27g1b1q236321I21q23I1O2292Fl31Zd321b2Sv2sx26z2651v231314n21424e23r27021L21z23721D26s21m26125Z22A22P2mn22b21O2V021j31X02HF2XC326e326g1922F1s31YI325m31Bl2Ca26K2c62l431y631y81C21q21i2zc2af27g32bu2cU32862de31WL23h314d2372qx1M1p26K245322r102191d2252OC2r52902W7321E1632Dn31WP1r312z2EN22k32E9237171628G31d82301I25G23923b26K26y27223g22c32F127o326N2UW1T1D22M27X1o28h2qm2r92aK1c25923V21E26s26h25q26p23S24o22v31Zy32C8317G317I2KS326631s731um21t22v1D25c27025e26B24m1E24Y21925t1H21j22221g26W1k27224b25t26f2Cm2M31x31yx2Xi22R21725626Z24s25S1n25o26S31TW2m221e23621B1k23325626H24M24B23E21s31U12X725f1322j22825Z24k22G21z23H310Z23G29J32C8141c1u22W31yp323z2671V1Q25u21n1425Z25921222r24N26H32042R219325C31Z932492iH2Fe2FG22K316O27c2251y1B1h1P1931la1H32fe1424F26B2It2FA2s118324B1b21m2Qs2912111e1F1s2JV1823T21q26R22Z2641Q22u2671h21o2B432Dx29P324b21i21e1f313C32eK1432EM1822O2111X2SR32da31ZG2sz2t12k82bA22k22z320j1k102I422I2TC31ZJ21j22131uk31SR215323N323p2GG329i28j31yL1121o22f31b32Gh21J2Rz2s12s31y21b321Z1721D31WI22o31vz246328931b82T12bM1J22P102bQ22121631Az21G32bD29f21823022H1E32fY2uu326o2eP32G332g532G72Qm32fk32Fk317E2IT23831Y732fK32FM23G32Iq2Y71524r2682Dy2342NU2t72cz21721k1i31WU2ar329t31V32T731V323331Cj22521028h1431331V21232Ik1032Jg2vj1m23y26A2fl2302RT171i318R191m23B321n22021532752gy22d31yx31IY23024t22f24p2722dx311A21332FL326a21D327s1g2Zt29f21s21931DP21u31wv1721324Z22v26k315V29F22p1X23l25N2F8316h32ou321Y1122625331Su2da2151132bh2BP2ek31yx1832bc2M221G2382462fk32J532A22872EN26j25Y24325S24S22026d24i2402411s31kt32at2391J23Z32J32GG22832L02k926C23w31yP2vy2i12i31O21j328p2132161A28i1821a328p21d21F1j32D01724e31w625c2431j21W1F2dY32ad2Xi1z323n22R31dr21s26726732432WL1521H22H32PR2DZ215131i24s1h1X152192HA26532aS31C027c2372cz1F23J32Kh31wp1T2Gn21A31d121221O111A2Eg1B2pA1u32dV27c22D2WC21129P21k32C32E423622225r24f22k23525g1H26332B02Dy2a431aG1N1w21f325C21r26323626Q21t2471W21s23s27021023p23e1724D1622226P21n31cj316H21H323N212312V1032922f427i2CC2Ds2DU26631W61021r23J1Q26621J2421126z2t125T24M31DB29E25C2401G321m2CU23A21r32AI231314D31E331e522n26P24e1B21O26i23y1124g24025924231x431X6151p1321j1x1m1G162jP1529o17265323y27c31ls2sM2M22241C2wP329B2EM1j32IM31hc21322X24b22y1C26a25W31Bi2l42Fb21C32vQ32Vs32VU32Vw22l328N313Z2C324431W623K25H1521w182Mn2GS2GU21p32e11823F2Th31D031V32oc1T2v021C2ee32Kn2qx2x32aF1Q25x24n2DY32682Cz325Q2xI2s222131s12m223131v023B1M181T22i32Kg27c32F31j23d181a22W2391s22x22s32Vq1q2zR328D24926k32qM32jb2fh22Y31ww328h2AO21j31Ug21t24x32GR10313G2r532Im1U22L321S327q2vI2VK1d21632rm21r2211B21n26g1c23j26c26F31U21023k25o1c23n21X25j23S25225y21d23C26723E1N23u25m26Q25A26l22g2GD25831x422r2fR2aF31wZ171o325z152hJ2b921p31xv32z51Q1Q1b2zr26f2pl32CH18172HB1222Z31Z22m82ma2RO32YH32J61d26z23R31x432ny2Av321W32PI22n239217312y2542632ig22t1h2jT2Az13191s22f2qO1723J315z2Iu21N317i32C1316h32z722w2Az32M62881V1N2s331dA32oy1L1L26K31AX22F31521721k315K2nQ24y31E132K029P32182M222a1I1322n2Er31X52LS32sp223329N22722R2Ex22H320631152F421W32Ah1o317i1H2591G1w26B22Z26S23832Bo3192327B1228g1q26b31bu32ki28I1632KL32kn24R32ZK2YT21631dV2m221c2342192Rw32jf1y32nz331a324j22n32hX2s01821F22g29E24731Bu313G330n319J318A31W622O1421031Hd2cU22721m11325q28b25724i23g24g25x25u22926h32OO321t32aI21n219181F2CZ21a2502441t21326U2IN24F26H31B72dZ21L1K21e2mS2JU326a1k333w2m231dQ21b21S25O21h26h23Z24s26w26325u21U25q23K24E26X2381j2661h32z42DZ1Z313s1D21R32FD312z32JQ2it329231zv21Q21q31zV21T32AU1022i21H2Hh1B31tc23b31CY1031zU1I25225q32lq2Am32gO2892l72iP16269242327625L25Z25N1N24r22a32C129M32xJ1Q21a32mh323Z32H51321T27731bV1d25i31f5311A21M171B27022521e23123825o24i22226c22v329g32Sb2CE2PI2TQ2fq2BT22W1B32LQ313G162Be1Q32JV332a2zQ31d832Su31X5218328c32tg21F330g1S1626C25232Kv2c832Mo2uw326q2uZ326T285287316W2cC141U1421V2Vc26o24j23u21826x22R26322626u32uT2M221I23A13220316G21r3198112VL21L2122Aw2X52lC2471N32RS29E21C21u21E32a42pm2em2cZ1b1O24g2MX27c1A22132NW313q2A81i23U32wW25c1022H3237326M2UV326p2UY326s2V1326V339o326Y327022M2vc22k2m129e23k25M1A32d62Fl32dX2892E62e81n26432Vz31fm21123L315I2B521N332226M23N2My1021A24S330R2rB2Rd2rf21T24k31A32hc2f332xD2w7338A26922u26l1p24623w1y25k26124O24a2Ig226317e1332701P2dq1j1p32Mm1v23a31yp32Fz33bd2Ux326r2v028432BD1T2dA2vc26j32zK1w22631NE32Xv29G31lH1522L22w324727025m21X26k21N192iG33092fS1D21m317P2OD31UA1624k25k2fL22832yN31bP1s2362401k21Z23c1L21v22Y1z21p31uJ2HQ21i2bm228329n329p267326232ja323h24227032MN32g027U32g232G41032G6172Qm2Hf2901b26x31s62c831881431A81N2Jk2c73138313a2w721m2Ye191N31ar1T24K324M32Oq329K1D21K329o131v267330732C82kx32OR2Bp1E2dQ32Ue33Ck31bU331z2vl152vN1N23825F21v24j1523525S23025U24324j32Lq33EK33EF31uc2N71n31Xa2Ao26B33d22At1R2nt1t32nC1n32NE32nG25J24V23q25k25r25d1626F335m335o21U21C2971A1x2112ik29p24l31E81022U316u2TW21931C42fY1y1F330E1I1Z31CL2qO28A25e32Xn291336L31Z721O32yN21d2222fl21W33F01v21033gb1V24l329A27C238339221233a931u91o22h233334V334X22I31T82vR21N32K21S21f21h32Fe26424m2f823133ea1f1V1U319F1t26C31Bu27E33HI1J32cE2n41D2bW2By22S2Bg323h23j25l22624N21225I23n26D24f25w32cg1021Y191p24732oP31Y531y731Y921B21a31uA1821D337y31B81124t24K24R25o26M25V24P22P26c27232pE27C22F21K1t2i42QX2vw21525Q33eY31x533ie33ig1w32BB22V24c1y1z2462272542721f24o24y23e32nn25p21Q273310I2x725j1721931dN31CZ217171A2R92Zr32TH32r81Q26L32Uu27C2341D21p2322122it2Ew2772kI28321732B92bo32Sp22j2481121421t23024n25e26u2Lo2iG21v21i2Fx1n32D021j32bx31vU26U24f2It32sW1A33961S328D33KI2iT2KF2KH324r1d23J32N41w22221626K33h42Y72y92yb1Z2lv2Lx316W24v33eI327Q141132E124z32q02f921H1j1321I33j024r24D25J111S24S25021z2732411522J27225Q24r23O1425w27225y32f121y1Z1127i1J1D31511I335A1n1N29S1032Fl328D111h223336J2L532Qx111531EU33nj23932N4234333T334029E26823U2162M62Bq2382az1l32Ox31dM1V21R25Z31Y42TJ297330I32hg31Ta2Bm2oC24932UH2251d24632J432Ba330O15326A24X25X31062341s1u24X24921C22C22m1U26221u26132Gl2it32a716227311J21532X8315j315L32x02hZ32qu320l2I72I92iB1O26g25o2iG33h62FF1n22A23833OP1L2eM251328432k033cr27321522V22d23L22221y25u23G32JZ31BV2132G32hu2ag2Ai2BQ32XZ1J1s21I32lp31CZ21932ub2A9320121H21l2ep2N633Bp27c25C2451l23424325323u23l25B21x23b24T21232Rx2382Ik1G21r24022x1x24D25A21N1824T21N338u27C318n2rF1h21m21o318r27R2bC2BE23z32o233gg1C32T031C125c33F632xa1826H32Ee33kM21b33mH32lW32LY33Pz33q126e24h1z33bc32mp339j33bG326U339n28a21d21K314v2161533BM28w26D332L2m321d151l29C2M222G1O22j23m1h22k2171B27124N24132U22It2aU2Aw1M33vK1L23C32yq22A2s632x52P12l131bu2ZJ1E331n33h924X31cE1021D23526K33jp33Sf1b32P01c33JJ26L26S21s23M25s2541923024d21N2zK31cZ21c1R335C21p33Ag181O21121F32g226p23W22o22C27025826e23b25u24133c2331k31Dq32oy21221226K33F6225218330t21I32HG2FN2hu313V18334533I7331016318r32sP2Kj331k2cZ2rF2EA319431CX28F26O1d26123H219252320426724K2691G1K25D23O2331726K335n329h21i31ZV31cm1V317I1d1Z33L023k25k1831M532qm33vj1031uC1926d327P319c31bn26o25Q22l22g21C26221i1f24J25924a326g32bA2m51p2Bi316w21o33991d339b31TE336M1931Wl21322b31X422D33aG1N21n32aI337H2l026926722F21b23G22w32cp26Q32hu29f21022S310n2M222H33cV33R62VR21F1o1x330k33OO313432G22422zz32c231C131Ks21627c22w2ER1422227x334G33B922k32G233WF1n22E32f51221u22632MP22J1g22E1D22h31VE13122GN32Vu1726o25u325L2C92cB2To338p2Tr33I9316W316Y2m221P23h2zy2bY22T322r2Qo26624w332u32F32312181o31a9102102192bL1B32O72jq33s7237336p142En26631FB32hh31Yf2rP217338227C22n1o23Q31x331E931Sx2en32FM1Y217314F2zR31z92lp27c2WE33i3172In33WB23I32N433fG2601M33VH22C33GB21b324F2DA323n22e33dq29f24g25H21126m25224r32TN22A25w23025X333K2HQ32hI31z726G324427c21J23b341032oY1024625I31x433Uo32xC2v02c133GM24K23p2b433xy33DA31sj33FR33Ef31322L033SW2Y721731aF26Y24633cc23G25S31aX23B33d71o33lj1622D21B1V21124l25M21R25e23s33Xp2M21O22G31Wm2FL27E2sQ2NW21C33mG26V23T22H24H22F22C2P627225724D1R26n1I1223P24T26i31Fq31b831Bq27u32v42BY321u1225l33UN316624l25j2nk313g2No2BT2NR33HH1V2Nw2AY25631Ce23K25Y1M25Z245338331Ei26i24u346S24t23K23O24225y24o33qn31bM31x81r336y311f33961N1Y31wt27232c732lr2uk1H33mL32D021822e2C731WO2eP2gN33r3192jH31FT25n25Q23f26623e1a33eu31D1332d33lg33li2V6161W1P22626n24D22c25P21R2NC22v21033V2339i33bF33Dk339M326W21l2Bb10348Y2212vC26D33oN21t2uS2Av1032K432jX343L1032sW1h31932M81a2gN1t21d32NW31x6131s2D72a133Ui2E121932cx2n62PO1q24i33R021x343W13343y2WJ2m21k22C24T1R23L23c1F25321K21t26P33m929f26O33ro33J32nL34Am2QN22i32Ws318M33GR1H23A31Kq25r25F21x21N23m26422v32d732GS2ag1X326423F316t2nQ33CC29e1134272M21U1c1j1122a22B2mY2272262mY2Fr32P021I2101H312u34Cn1022722L1m141K32CE34Cw22L1n1526a26A31cf22l1K1624L24K34CL22L1l1725c25D34DF338Z23C23c34D91R1923R23r34d91O1a21o21p34dF1p33742mn34cX34cF23f23e34dF1v1D23N23n34d91s32mm32F134CX1t1F26j26j34d9325d32Sp27734Cx2qX21C21E34Eo22l2pb22922b34eT111J24U316a34cX2vK25p25o34DF2Ht22022034D9321e21131V234d3151N22q22q34D933Bt34dS34D91b1P21L21L34d9181q22c22C34d9191R23423434d91e1s26f26e34DF32KN26p26p34D932IN2ro34df1d1v23U23V34df31L0142DO34D321F1x22122034DF21c1y31eC34d921d1z31J334dF34Cr26D26d34d921j31Fn24v34DF2lK342834dF21H21324W24X34Df2ZM25I33Ow34D321N31oS21934dF32am24A24B34DF21L21726R26Q34Df21Q21822y22z34DF21R21925S25T34dF21O21a26M26M34D921P21b34ie34d91y21C2Z534D91z21d2i434dF1W21E22e22F34DF1x21f21k21k34d921221g23H23h31cF2262nq2FR21g21G34e834ct24g24h34DF34cz26L2qC34cx34D532CC34ET34dB21f21e34df34dh23523434DL1821621734Df34dq327434et34dv26526534D934E021a21b34dF34CF22m22K34et34e824724734eC1e23I23J34Df34eh21W21Y34eT325D32y934et2Qx1F32lq34Cx2PB21M319634d334Ez25w25x34df2VK21H21H34d92HT24O24O34Fb1m22J22H34eT34fG26J26i34Df33bT22322234Df34Fo26q26R34Df34FT25u25V34DF34Fy27027134df34G323723634g71t21721634DF32In23p23O34gE1v21U21S34et31L022e22e34d934GO21H21J34eT34GT25r25q34DF34GX26826834D934Cr21S21s34h421122B22934ET2lk22322334D934Hc24m24n34Hg21422N22n34d934HL31hC34ho21633Z734d934hT21J337234D334hY26m26n34i22f01Q34d934i821321134et34ID22522734ET34iH21F21f34iK21D34fI34d934Ip24C24d34iT21F2AW34DF34IZ22922934J3342734J634J81d34ct21l21N34eT34cZ22h22j34eT34D525y33AY34CX34dB24c24C34D934Dh33xU34d9338z25g25G34dp1922a22834jz1a26c26d34dz33wq21934D934Cf26Y26y34d934e826w26W34KF25D25C34Kj1F25725634DF325d21921834DF2qx2gW34d92pb2fR34D934ez21e31z634D32vK24624734f71l21421634eT321e1u1s34LE31vu325L34cX33Bt2gy34LM1P26h26g34Lq1q26326234LU1r25b25B34g21S24424534M224Q24q34Gb1U23o31dl34CX34Gf25F310O34cX31l023L23l34mI1x22722734d934Gt21w21w34Gw32Rl21H34h021031kb34my25a25a34D92lK23123034hB2131I34CH34d32Zm21321234DF34Hl23i23i34d932am27127134nK21722W22W34D934hy21p21r34eT34i3314G34et34I824D24c34df34ID21821A34O333X631YP34cX34IL23823834oa21E2MG34D934iU25425534OH21g21U21U34j3342834on34j91324I24i34d934CZ22r22q34Df34D522i22J34Df34DB16334t34DG1721t21S34js21921B34Et34Dq21z21x34Pg23V23v34K31b32ns34PN1c21R21Q34E71d24K24k34kf21V21u34pY26R26R34eL1g24r24Q34Q61h23Y23Z34dF2Pb23N23m34dF34Ez24j24J34d92vK24E24f34qK2eq34dF321E1i1g34QS34in34d333bt2Jp34qY24024034fS1Q1A2F834cX34FY24B24a34lY1S21P32SN34d332kN2CX34rH21I21G34et34Gf317i34me1W25225334Df34GO22222034mm1y26F26F34S126W26X34S432fK34dF34H51O1Q34N233tq33DN34D334hC31GU34NA32Qd34SM2151K32L634D332am23Z23z34su21r21R34Sy21826I26I34d934i325Z25Y34i721a23H23G34T921B21M21m34ig21c22M22M34o725725734tk23w23W34tn21f25M25m34IY21g31YF34J3151434Tx34OP1326u26V34cl226325q2fR2dS33jU2My2DS27c325d34CZ23P23p34J32MY2QM33PH23522r34Db34zC31CF25O23R1426E26E27C21k26N25z27C2ya1834l02mY1q21N2181D31YF31yF22x22W2MY2Cx2ds34zI34dV23K23L34PK34kW35001834cf34l427c350123t24o1C350q2Qz23f34E834ZL34cW34Cv1E1e2fR22z22y2My350Q350Y2Eq1D350r2fR23b23a2my1b2dY34Gx34Cf31S034j3351734W934w934WH2My31yF34W91723o34zO25z34Zv1021f25w34X32Pb34cZ34Zz10350126X26032ns32ns350734zf2R91334ZI34dB24v24u34Z12MY32ns34uC2ht34Cz21D21d350m32bY32VV1E352g32mb2BQ21d25123p334w1434V72At23p26O34ZW34Cz1k1M277338Z34d51F352R350w352h2Bq34GT352l352N3522352p25r25r34ZE352T27C352v352x32ns34pP2at23m26v353434d03537353j34d5353l353N34uU31w71Y34CZ21s21T350i3541353M353d353o33Wk1z34d52Bm35381834db21D317c354d2qm353p352w33Q02Qm33oj1031GU2nQ2pB34D523T23t352O34DB21z21Z34p51724R24R353N32mu28H2nw1534gq350033E62zn32G821t22B34dH34M0352S355B1T21o26R25V325q2Qm22x23F34db355F3522355H34uc34UC355K338z355n354d34Uc31yF355Q355s32fk34uC22X22022y222356C16355w34DH355z350131EB28H28H355k34dq356634cM2My28H2CX355Q21j2PI356P34uG356v2Gg34gx338Z356M355H350518355k34DV356t34CV351o1a356A25V31D83506356F2222gy357K356g2jp3506350831672xi1123823935132MN357W2My1d2ig358010350Y31yF34CR34EH33Ph34V922422434d92qx25825934vh1i24o24p34vL1j1E313S34qg1K22g22I34eT2hT24Y24Z34VV1M26O3533350w2NQ350Y2k833z82kj33cc1U1v2MY317933J4357x2r52nK35841I2B4358432a232a221Z21y2mY34XN33PH358433911l359N2MY2k834z9325e1N24x24w34li1o31HE34qy350v22725O244340J334V1021K1e324I2bK32FE1o355G22322Y319g319G352834A72801q34jq321Y31Yp354M2812k8319G21924u35AA328J2MY32tI34dy33Pr1727I1N34qB2Iu22C2k8121Q3463310634cF34fo357731eB1P35BN1P355K34fy21T21V34eo34cv35bn319g33Hi2r9330m354434FV33po33Fg326g35bn1i34ft24524531Es23j34FT34T4356025824c2w2330m355w34fy34rn353n330M353p1Z34Fy35ce350135cG28135Ao23f34g334RF353n319g35CP34g335CS21N35CG2Eq1S32Yd23f32Kn26i26J352s35d835cP32xH11353835d524C32k42QO355W32iN35Cz354d2QO35Cp32IN35D435Cg33jU1U1u355W34Gf35Dc352S35DY35cp34gF35dv24C359933z7355w31l02pP35bu2My34nj354f31l035e71x31Gp355W34Go35eD354d31Go35cP34go35e71w1x35eV355w34GT261261353N35ev35cP34gt35e71z1y35F7355W34GX35Ez353n35f735cP34gX35E733lV2Z5355W34cR34rj353n34ij354F34CR35E721121035Fs355W34H535e2354D35Fs35CP34H535E721021135G3355W2lK246246353n35g335cP2lK35E734sk33Xu355W34hc26v353w354d34P7354F34hC35e72122GW32wC23F2zM35FW356u1034q8354F2zM35E731Rw31ec355W34Hl35gi353N34GV354f34hl35E731HE31Lh355w32Am35gU34Cv31LH35cP32aM35E734M4216216355W34ht35H5354d35HM35cP34HT35e734jU314w355W34hY35hf2MY314w35cp34hY35E734q431Wk355w34i335hq35gV31WK35CP34t335Di35cF24c31wl32p0355w34i835i032F234pm354f34i835E733Kv21A21a355W34id35IA34cV35IT35CP34id35e734k534iE355W34ih35IM34if354F34IH35e7354m31s0355W34IL35dQ35GV351H354f34iL35e721c352m21D355W34Ip35im352m35cP34IP35e734Jm21e21e355W34IU35jg34cv35JX35Cp34iu35E721E34o521F355w34iZ35im34o535cp34iz35E732u534j7355w21321H35K12My34j735cp35Kk35e721G34L421H355W21021I35fl354d350L354F35kw35e732E02mR355W21121J35iM2Mr35CP35l735E7328J2Pe355w21621K35im2PE35cP35LH35E721l34IW21k355W21721l35iX2mY34iw35cp35lS35E721K34FQ21L355W21421m35iM34fq35cp35m435E721N34Ya21M355w21521n35kY35gV34Ya35Cp35Mf35E734KW21N21N355w21A32Vc35Dd354D35MO35cP35MR35e734wH33IR355w21B21P35Mh34Cv33Ir35cp35n235e734Dx21P21p355W21821q35iM35NB35CP35NE35E734ux336v355w21921R35N42My336V35Cp35no35e721Q34xu21R355w22A21s35Im34XU35cp35O035e734ug34MW355w22b21t35NQ29g34mx354f35oa35e7354821T314223F22821u35Im35Oj35CP35OM35e734V434tt355W2292u034rk34Cv34tT35cP35OW35e721U339t21V355W22e21w35im339T35cP35p835E721x34rZ333723f22f21x35Lu2m334s0354f35Pj35e721w21x35ps355w22C21Y35iM35PS35CP35pv35E7359N21Y21y355w22D21Z35oC35q335cP35q635E721Y355421Z355w22I22035IM355435CP35Qh35E734gq34F9355W22j32ZC2PQ354D34f935cP35qr35e722022135R0355W22G22235pl35R035CP35R335e734LK222222355w22H22335Im35rb35Cp35Re35e722234N4223355w22m22435PL34n435CP35rp35e7225358C31R923F22n22535im358c35cp35s035E722422535S8355w28535kM32NX22535cp28535E734Cm226226355W22L22735Im35sj35Cp35sM35E722634rV33rO23F31hq22c22e35eE34cw34rw354F31Hq35E722922835T7355W21V22922g22h352S35T735cP35tA35E722834Oj229355W21s22a35sc34oJ35cp35tN35e722B22a35TV355W355K35sC35tV35Cp355k35E734CJ22b22B355w21Y22C35Im35u535cp35U835e722D34Fv22C355w21Z22D35EO35GV34Fv35CP35uJ35E722c22d35US355w21W22E35Pl35US35CP35uV35E722F34mg22e355W21x22f35iM34mg35cP35v635e734IR22F22F355w22222g35sc35ve35CP35VH35E722H22G35vP355w22322h35sy35T035vp35cp35vs35E735Tc22h311i23F22022I35im35W135cp35W435E722J22i35Wc355w22122j35TC352S35wC35CP35wF35e734u822J22j355W22622k35sc35WO35cp35wR35E722L22k35wz355W34cX35pL35Wz35CP34EP35IF35Ct24C22k22L35Xb355W22422m35iM35xB35cP35Xe35e722N34yE22m355W22522N35pL34yE35cP35xP35E722m34nc22N355W23622O35Im34NC35CP35Y035E722P22O35y8355W23722P35pL35Y835cP35Yb35e722o22p35Yj355W23422q35iM35yJ35Cp35ym35E734u434fi355W34zi35PL34O9354f34Zi35E722q22R35z3355w23a22S35Im35Z335Cp35Z635e731p522S22s355w23b22t35wH354d35ZE35cp35Zh35e722s31p422T355W23822u35sc31p435cp35ZT35E722V31N122u355w23922v35SC31N135Cp360435E722U22v360c355w23E22w35Im360c35cp360F35E7350734Sw355W23F22X35uL34cv34Sw35cp360P35e731J322X360y23F23c22y360r2my360Y35cp361135e7351122Y22y355W23d22Z35pL361A35cP361d35e734I022z22Z355w23i23035iM361l35cp361o35e734sC230230355W23j23135im361w35cP361Z35e72302313627355W23g23235SC362735cp362A35E731hc232232355W23h23335sC362I35Cp362l35E723231gG233355w22q23435im31Gg35Cp362W35e734JQ34G0355W22r23535pL34g035cP363635e7234235363e355w22O23635im363E35cP363h35e734m0236236355w22P23736132c823635cp363S35e731lx31Kb355W22u23835IM34S6354f364335E731GU34Ti355W22v23935pl34tI35Cp364D35e7357w239239355w22s23a35iM364l35cp364o35e7351A23A31pN23F31Mt363U364w35CP31Mt35e723A23b3656355w22Y23C35G7353n365635cp365935E723d34DN23c355w22Z23D35pL34dn35CP365L35E723C23D365T355w22w23E35iM365t35cP365w35e734E523e23E355w355W363u366435cP355W35E723e23F366E355W23223G365b354d366e35cp366H35E734Y623g23G355W23323H35sC366q35Cp366t35E723g34j123H355w23023I35iM34J135Cp367435E723J34so23I355W23123J363U34so35Cp367F35E734kH23j23J355w24223k35SC367n35cP367q35e723L23k367y355W24323l35im367Y35cP368135e7350e34RR355W24023M363u34RR35cP368B35E734vj23M23M355W24123n363u368j35cp368m35e723m34EA23n355W24623o363U34eA35cP368X35e734m834RJ355W24723p363u35ky34GX369735E723O34zc23P355W24423Q35pl350v34GX369I35e723R23Q369q355w24523r363U369Q35Cp369T35E723Q34DS2JB23f24A23s363U34FM354f36a435e723T23s36ac355w24B2Ku35qt35gv36aC35CP36af35E723s355023t355w24823U35SC355035Cp36AR35e723v23U36az355w24923V35oC36Az35cp36B235e734gH34uq355w24e23w35im34UQ35Cp36bC35e723x34YK23w355w24F23X363u34yk35cP36BN35e723w23x36bV355w24c23Y35IM36bV35cp36by35E723Z23Y36c6355w24d23z35pL36C635CP36c935e734vF34xR355w23M24035IM34XR35CP36cJ35E724134w533tw23F23n24135Pl34W535cP36cU35E732qD241241355w23K24235Im36d235CP36d535E724324236dd355W23l2Uc35gj35gv36Dd35CP36Dg35e724224336dP355w23Q24435iM36dP353P1022Z33VO33mn26l34iZ36Ds357723722824624436e822x23c23p244330M34Jb22I22136dS34Mc35DJ26E25i24536e8244356E26226y36En36e936Eb36eD1Q25j25I22i22Y2191U1p1r34Jf2122jO35cV36ef36eh244364G356026H25k36eo36EP23F23r245362Z34D323O24636Fm34CX23P24736Fq34CV36e834kd2aO36EC319g21s21u22h22y23421T319G31p521321g36Ds34U4355G35CG36ET36fi36fk35py36FN246363d34dF36fS35k334d323u24836GL354d36e824824836Fy244319G24924935Qr36gB34u535Ig36gF355W36fk36gs34CX36fo35U034d336fs36h922l36gq24s24s353n36gU36gw1C36FZ1r325q22I2221a31y71s36eF22y24q24B2QO36f621J36Ht2Qo36FA36Ds36Fd350136ff36fh36H736fl33BP36ha36fp36id22l36Fs36fu2My36fw24736GX2QO36G136g336G52Qo36G836Ga24436gC36H536EO36iB36HF36hB22a34D936He23534dF36hH36HJ36gt24436gV36IN2bP1536F021e2dt1t363E36f72F335DY36hw26626N33Z736I12f333z736I536FC34tJ36fE36fG36IY36Fj24525125134D936fo36k236j324736k636J936fx36HN24433Z736ip36Fb362S34DF36fK35A722634rC33z736E835nO36h336GD24c36h636K036aB34dF36FO36HF36fs28136j636gR36j536J936jB36kc33z736h036H236IV36h435x836Kt36h836L336IE1634YV36Hd24736Hf36GQ26G26g36Hk36jA36hm36eC33Z736hq36fB35qZ36KI24536ej353J36FO36lW350w24724635c935C935zh36FO26426534z136m436M6245351A36km1v36KO21R36ds28h34D936FK26426434j336Mh36MJ36i6359E34CX36Fk36i721N36FF36mE355W36FO369e36gM24736n436gp24836K935GV35c936Jb34Rb24536KN24436Kp24425u25u36mn24535Zl350w36MS36nH36MK244351736LX36Lz338z36fo36Nu36m336m536m636m824635UR36mC36O136m723A36nQ36Ni319E34cl22M36EC31Go34Jf22j2222f331go36ju36mY36i936jZ36Fk36Na22L36K536K336lJ36nA36fV24436KB36OF32TQ36G236Kg23336lX36Kk34rC31gO36Mt36LA36Kr36lD36MF23b36k436gK36lf36IH24736L036n836h936Ox36l536P036l836fb36Iw36lc36OP24536J024626Y26Z36N536Ll24836lN36lp36po24431GO36Lu36dS36m236mW36lY34MD36m024636QA22636mD36o222t36M936Mb36o036Me36mg24536p836NR36mL2gG36qB24n24N36Mr36QQ1W36P9358436QB36ON25K36N123f36OT36k736OR36Gq36Ow2mY36NC36gw36ne36Qr36Ni36Nk36nM36No34cm36P736r036Qs36nt31C836qB36nW1836nY36rR36qH36O736mF36qK36O422d36O636qO36O936qz36P935NW36Od36eC35Ev36OH36oj1T35EV36OM36JW36i836JY36e936k036or36R836ov36OU35gv36Il36Gx35EV36kf36DS36KH34D336FK34z836NP24535EV36p936ps35DK36PC26p26O36kW36pg36n5361R36pL36lF36pN36LR24435ev36PQ36Kq36iX36Sk36le36T935Nh36Lj36Q136Tp36sQ36Lq36ss1x36Q824422322134eT36FK25H25G34Z134rc36T236rP22K2TC34cw36OE24435f736sC2F335f736sg350M36MZ36sJ36Gg36k136sp36OS24636oR36fS36RC1036Sr36KC35f736su24436Sw36QB36Sz36rm24535f736T336Lb36t536pu25N25m36T936KY24726o26P36L136pM36Ik36Tu36Uw1Y36TJ36pa36Tl36uM36PW36Ts36PI36tR2kN36l436tg35f736Tx36Tz36U124535lO36U536V41Y36p9331k36Nm36R436r636sn36Fr36lK36PH36GQ36Vi1036re2eq34rC36v536rP25s25s31cF36uc2Z536uf1T2z536UI36jx36ia36K0360036t936x036lj36X236tt36oz2442Z536uy36v031f224524Z24Z36qY2Z536P935xW36Lx36wA36m636n224626K26l36n536XO36L136Xr354D36Wj36NE36Xg36rP36T436Ge36PU25X25X36pf36vD22022234Et36WG36Te36Vj36Q52Z536vn36xz36Ks36pU36pw368p36tq36Wf24821q2fQ36vW36gX2z536tX36QA36Xb36RT36M122136s336Qj36FO36Ay36yy36O834RC36xx36nI25325336W936sh36uk36wb24632fe34ET36fs36ze36n836Zh36NB24536ND36z41Z36p925o25P36LX2u636w436Z536ns36Mm36Sx24536C536Zu36ZO36rp36R236xB36XK35c936XM36UR36K836uO36rB36Sp34cV36XV36ZN36P936RJ36ZY360b370136P925L25k36xJ36Za36n036Xl36r736UQ36uo36uS370b36N9370d36rD36Zl36Rf370g36nH21O21e1z35Fs36Ju32E036S924435g336sc371635g336ju36xA36kj34ZD36T035g336v636PB36pu366l36gj36vd26S26s34D936y9352s36HL36GX35g336Ye36v736y036tm245365Z371R36pH36FS263263371V36l2371X36Vk36eC35G336VZ36u036zy2w236w4371M36rP36W836Zy370624536XM36zj36PI372u36Gq36zJ370E371136Wk245372n36Ni25625636wQ36eC33xU36wt33xu36Ww36si36Wy36OQ36uo36Wc36pI36ut36Uv373821236x936p436zY36p624533Xu371n36VP36ib369W372736N5360736TD372E36q533xu3721371O372436pw369P36q036Yl26C26c36q436tg33XU36ys36yX36Zy36YV36qf374H34Cm36QI36M736s01L31A636qN36o236S5373s36Rp36Zx36Qb373536Qy374V36nI370436mX370Q36r5370s373h370W372c36Ut370F373r212370h36nl370j22v36W4375121O21j35gp21336Ju25m25n371b31ec36wT31EC373c36Uk373e36Ic36PF36FQ36pi36IJ36uU36oy36Im36kC31Ec373N36P5371k36V331ec36xh22N370p36uj370r3707370t374b36K735mB36L124z24y352s375c376d36xY372236yG372435W7373X36lJ35Gp36vh36Ya376436q531eC3744373U36K0374723q374936L1376l36Yp3767214374G36nv36qd36nX374K36z236rz36fO374Q377n36QP376T36NI374x36XB375Q36w4377T36NS3753245372R36xm32U536n5378536n8378736Zk36ZM245377Z36dS370i36qb370K36T0377T21O21L35hB36jU36dk36Ub36Ec35HM36wT35HM375W36OO3724376136Fo376136iI36Id36OX36X635hm3769373p376B36Kl24535Hm373T36PT372435R6376Z36wD255255372c36WH371Y36KC35hm3777379c36vq36PH36Fo26b26B36K736Q1377E36tt36q535hM377I374i377k36RU377M374S374O377p374r374M36RY36qP379a374w36qu36xB378O36v337AD375236MV3705375536ZC378936PI37aP36gq3789372z378b37aj36ns378F36xB378h37AI21636KO21o21N35hW36JU25p25p373724431wk36wT31wK378u36Ul36iB378x36IF36K73763373k37BB218379536qB373Q31Wk379b36v8372436y236Y437282472482493772374136tG31wk379O37bU379q36T924h24G377C36N8379X36Tf36gX31wK37A136Rs37A336yW377R374P37A936rX36s434RC37bS37ae36Nm37B836qY37cS37Ak376g36JX37AO21g378637D2378837D4378A371224537cX37aX375g378G375i36t037cx34DX35ii36ju35TF378p24435iT36Wt35It37bf375Y37bI378z36FT379136vJ36X635IT37Bp36Xb373Q35iT37BT372336um27127036vc37By250250379j3773379l36EC35It37C637E436Iz379R24636GV379v374A374c377F37ef21A37Ci36yU37CK37a537AA36Qo37Cn377r36S537e237CT36zY35Ns36T037F237cy372Q37an375724637Ap36FS37aR24837AT3710378b37f737db36Nm37b0379837F721o21r35j336Ju34cc34eO36Uc31S036Wt31S037Dq36PU36N736IE37g2373i370z376436X631S036UY36xI37f9376H3756376J36N3352X36LJ37g4370c353n375c31S037E3376W36UM35RW37e836n535Yi37C237EQ24431S037eH37gP37ej36T935Y737CC34cX36Gq36KK36Yb36Tg31S036tx24n24m36Lx34u036UJ35cg34RC37Gf36TA36LJ21721535t035C936fx36NE352M37B31x35jm21D36jU25d25D37bA35JX36Sc36HT35jX37g0378W36ig378Y36iG379036lP36X635JX36Ip22i36Vj359r22t36eC35jX31p536EG36tK379p37H1379f36Pi24A24A37eC37c336Gx35JX37gz36PC36Pw26v26u37H436hg24835hH37GW35jx36hQ2221Z35K721F36jU3655371b34j736sc37jB34j737I536Um37ds37i937Du37iB376636eC34J736uy36YF36Pc31k434ET36KX37by36q1379K372f24434J737iy36Yh37ek37j137j336GQ37j6379Y36Tg34j736tx3670376R35Ca10357w34Rc34j736p927327337BA34l436sc21135Ks21H36ju36E836nm35P035ig37HI372S370T36xd36K737l536Xu24537hq34rC34l436R13755375Y34yU36t937LG36lj37LI36X537jR24434L437GA376F37gC37d037FB36M436N537lu36n837lw37d7373137lc376U374536UM22122337JY37HK36wd36DC37gV37Kd36gX34l437k6374637Ek24s24t37Ka24836tS37cF36kc34l437et36FK374J36qG374N377O24625L25l34J337Mu36Qp37m136z636z837lR36Si36Zc372u36zg1p36Y8248372y37FI37D837N236ns36ZQ36lX27227336W437Ng36QT36nM370036T037nN36FC37Al375437gd36ZC370936ra370Y37gl373036ne37ns37ay36FK35m037Nm21H37b329S2mR36ef2wE21g2pE36Ju26K26K37bA34iw37kT21g34IW37JL36IB37lk36Up37or36FS37lK379237LM34IW37LP37cz37N637Fb37Ot24737OR36gQ37ov37ne373134iw37GO36pC35MV37Iq36fs25925937IU37gW34iW37Mf37C836gj37mI37Mk24Q24R37Iv36KC34IW37mq36qC354j37cl37a637Mv37Mx37mz37AB36s537PA37F336qB37Oi36qy37q537F836r337Fa37Hj37nY370x375b37o234RC37Qa37Fl36zY37O736t037QK36Ds37HC37He34U137l137fb36Vd21y321m37L837LA36w221L37B321535m021L371H23237Ba34yA37OM34YA37op36k037oR36fO37P337P737g737LM34yA37OZ37N536zb37lT345W36Lj37Ly37J437LY37aU37d834YA37pB36PU35Vk37Pe24735dF374037gW34ya37PL37Ip36iE1g347236YK36l137pQ37Ps36Ec34Ya37Pv37MS374l37cP36yZ37mW37mY37PZ36QP37RX36rP36Z736Z937NW37fb37N8247372W37nc37NA37L8378B37sr36nI37Ni36ZY35eQ36T037t436ZW37af36fk37NQ36v337ta36MU37P037rO37Qe370v370a375a37g6375c37tG36nJ37dc36XB37Qn37Tf21M370M370o37rn376I37L337rg354u36wD37p524837Ri37tP37Tw36rP37qR36zy37hf37qu37HJ37qw37Qy36zK37R035mO37B321735mN36jU25N25N37BA33Ir37oM33IR37Rd36Fk37Rf24637rh37U337ow36GX33ir37Ju376v36PC1931ff37S125625737mb37mn36EC33IR37S7377937ek37SA36zF36wE37Sd37Pr37gW33iR36Tx25h25h37o1359d34RC33iR36p936Yt37mR37Ev37mt37AB36s035jM37f037vv21O36P937st37Tz37gE37U136zd37t136wD37Sz37ND36wI37qi24537Vw36RP37T636QB35E436t037wL377U37TC36zZ32vE37wQ37W7370337NU378237qD37WC37Qf37Tn37O1378b37Wr37ql36qB36BJ36W437X736DS31fe37kI359R23937w636P937UB36qB37uD35x837L236xm37UG37Ho37L936im36nE35Nb36p926U26U37bA35NB36sC329E35nB36jU1y1w37fV36Ec336V37OM336v37Uv24537ux37Uz372e36x6336V37V437M336Ib37V737m736Vd21O21Q37NB37K236Q5336V37vg36tn36Gj37Vj37sc36n837Se37gW336v37Vq37vS37l837Vu245336V37VX374l37EU37PX37eW37sL37A724637W437SP36S537z937SS37N437qC37Sv37HJ37Sx37Wg37wE37RV373137zl37T536ZR36zy22428636T037ZW37TB37nP37Wv36v3380337Th37WA37nx37TL37nZ37Qh378b380837TR36NM37xA380221Q36p937xe37L837xG34RC380G37xk36xb37xM35dK37xo370T37XQ37qZ37xt34RC34xU37xw37Xy37dL34xU36sC21b35NW21R36jU366937Dl34MW37om34mW37YC37ye37u336pI37RI37Bm34Mw37Yj377836fK37Ym37s126226237Pi37MC36kc34mW37yV36pV37vI37Sb36wD36Q137Z1381w36EC34mw37z437vT37Kk37xH24534Mw37Za377J37Zd37w137eY36FO37ZI37EX374T34RC382e37zM37sU37LS37ZQ37wE372V382u372X37zt37P836ne382P37zx36lX27327236w43831380436Zy37TE37983837380937zo382s37X2380C37QG37To37WJ383C380H36zY380J36V3383L380N36zk380P382d21s37XJ37hD37uC37qT37Xn37Qv37By37qX37XR37r035OJ381337Ba35OJ36sc22935oI36Ju24W24W37BA34tT37OM34tt381H381J37u236n5381L376536Gx34tt381o37IO36K025b25A37gs36lJ366d37vC37h8384q21U381z36PW27227237en36L137mm385136KC34Tt37kG23H37ki37Z734tt36P937Vr382a37kl36LY21U382F37a2382H37SK37n037W321d37W5385N37W837zn37Am37ZP37WC37Zr382W37t037XR378B385i37WM37ZY36Qb25w25W36qY386837Ws380536W4386F378037wz3783370t37X336N8380e37d8386J378e37ts36Fk383O3798386s244383r372Z383t386Y36nz37Cj37zd387437ZF37mV36o537ZJ34rC386y380s36fK380u37Hh384136N53843380z3731339T384737dL339t36SC22b35P421V36ju359v37dL34RZ37oM34Rz384k37LH381j37ou37V037dW37lM34rZ384s37C736IB37PD36Ie36vD24933N637S4382624434RZ3854382137Vk36Vu374D36gX34rz37si37w0385S37W2382k385v387b24534rz36P9377V36fK35s836qY389037wY37tI37U03708383h37X437t237D8389636Ri386u24535f636W4389F36nS387e245387g24C380W37jz387J37Uh372z37R035PS387O22736UC35ps36sC22d35Pr21X371921j37ba35Q337om35Q3388136Gj37Yf36kA37LM35Q3388937EI36K0381R388d37bY2662673850377436tg35Q3388l36t937yY382336yL382537vD24435q3388s385R37cM388W385W35Q3385Y382r37p1382t37VK37zS386637d838b8386936lx31AU35bu34Rc38bH386g38393806379838bN386K389837wb389a36r9383i37X538bg21Y375F380i23W36W438Bs37XD2XI380O357V382c38C6244389N389p389R37M836pI387K37ui38102453554389y36uc355436sc22F35qD21Z37OD37ku34F937yC36sm370u38bx37jQ36gX34f937dZ371J36QY34f937ry376X22g384X36wD36Cc388h38B034f938AU36GJ37h337yz37H524835Rl37sF24434f938B336qe382i37sM377Q388Y38d837q636Xb35ga36T038Dy37Qb3860383f38Bw36sO389c37LZ36ne38e337X837TT21L36w438ec36dS35Z2371B35R037Om35r038Ac36iE38aE37Ll36gx35r037Rm383e38Bb37Wc38EQ37J437U737wJ35r038d936um35xA38Dc36PI24K24L38aq37Ee24435r038Di37s9382236Vt38aY37vn388I35R038Ds377l38du37ZG37q1388y38f238dZ36FK25g25H36w438fs38e437nv38e6386n389B386p383J378b38fy38Ed37o638eF36T038fY21O22G22135RB36JU35sp37DL34N437OM34n438EO37oS388337P4388537RJ36gx34N438ai37h036k033FI37yN37by35pF38fa37k334n438fE36Up38aw38fH37Vm38Dp34n438fm37a438fo37mv382L387836Qp34N4389137Wt35PB36T038HJ3897380A37fB386o38Dm386q373138ho389G36Nm389J38Hn223383w37QS37hg389q387i36Lj38cj389V38CL358C38cO36eC358C36sC22i223358c36Ju33WS37y724435s837oM35S837yC35YE36gJ38iR36wD38IT37v136KC35S838Gv36pc35la37S125I25I381v38B035S838h536FO35VW38DL37J425125038DP35s837J922K22535sJ38GH227371B34Rv36SC38Ji34rV36JU35B338c9385M34rv37ld37GD375y35Fr36T935iC37Rr37rq38er36kC34rv38d5245373q38JW37M2381P36T1339F38Am36n535Eu38h236q534RV38J824638ja38ax36L1366w37gW34rv36tx25T25S36nV34Tu37Ue37wc380Y38Ck373138kb36nI35v236Lx36pm34Rc38L436nS36A0371B35T736SC22m22735T736Ju250251382g36QE38lK38B5246359i37Q237cq24535T736P921021236W138cf38i636WD37h737wI37R038lv36rP29F389Z36Ec34oJ38Jp22534oj38CY373g38d038e838Af36GX34oj38k8373Q34OJ38F337s836UP25925837Mk21r21p35t038fB34oJ385e385G382b34rC38mO36rP35Wy371B35tv36SC21S22935tv37Yc37JN37Bk37dV38gs36Kc35tV38iz36PU35S738f636FS24p24P38J5385B36EC35Tv38KM26t26S37MK367T37gW35tv36TX37xx37Ba35u536Sc21V35U436jU21a21838il34fv38o622A34fV38mf36Pf38HS38iw36EC34Fv38mm379734RC34fV38Mp36k025Q25R38nN24726A26B38kj36tG34FV38kM25A25b37mK2Nw38mx37k334Fv36tX36v236Uc34fv363e36l937VY37PW38dt388u382J37ZH388X382m36Z324538oq38fT245368436t038pQ38fz37x0386138E736wd380D38G537D838pv38G8389i1y36W438Q436DS34ZQ37bA35US38OE35us38nD37i737bJ36Lj37bl384p36Kc35uS38nk37MG38Ov38Ox38oZ36gX35US38Nv38Nx38jb36GQ351t388P38qM22D38HC37Py38pn38hf38pM38HH36S535US38HK386H36T038Ra38Hp38EV37tJ383G38D138g438bZ373138re38hX37qm38gA36v338rn389m383x37xl383z380V38m136PI22N22l384438cL34MG38iC24434MG36Sc21W22d34mg37y42Us37dL35vE37ji21E35vE38qG376037JO38QK36x635vE36Uy33r336w138l824535vE38or36FK37JX37S137k137Ed37K335VE38kM36HC38kP36N838nw38dp35Ve38n037Z638n238St22F36P935xh37Dl35VP36sC21y22f35VP38jS324I383S38ca34rc35vP38JX36Wx36pu38Ne38qJ38Ng37Bm35vP38sP1738sr36tE38TR22G38SV2452IK38oV21221037yr38t036Q535vP38KM25o25O3858386p38je37GW35vP38ku38KW374i38ky384037UF37BY24G24g37o137R038tS36rp38L636zy38ss38V036Ni38cE38rW387H38UU36n521621438s2373135w137B322135W037OD38Vi35Wc38lj38LL385q38LN38Vo38R536o338lr388y35Wc38LW38lY383y38i438cg36vd21k21M38ve36Ne38VW36rP31d8371b35wo38Tj22F35wO38oH36GJ38oj388636gx35Wo38ON36Qy35WO38u736D837s1354p38dF38Ns24435Wo38Km25225238UK38DM37cE38WT35wO36tX267266371b35wZ36sc22222J35WZ37yc38K236Ie38xe36Pi38xe38OK24435WZ38qo36uM1w1Y38gZ36N52mY38qS36Kc35wz38kM35BG388N36yl385A38aR36Gx35wz38R337zE385t38b6388y35Wz38rB36zy22E22C38bL24538Y938rF38E538EW38PZ37g538E937zu36NE38Yg38Ro36qB37tU379838YP38RT38I338KZ37xP37By24H24h38Uy38CL35XB38S535Xb36sc22535xa22L36JU35yp37dl34ye38X922j34YE38xD21836pF38Xg36fS38xi38WI36Kc34Ye38xM36IB24p24O38OV1c315338wS38y138Zp22m38xW1O38Xy385936Vv388I34yE38y438HE36O338HG37n036S534ye38yA36qB26t26T36qY390F38YH38g038yj38G238rJ38ht38Q23731390l38Yq38ee36w4390U38Yv38VZ38yX380x38yZ38Z1387L36nE34nC38S534Nc36SC389Z34nC36jU3511371B35Y838ZF35Y837kx24437kZ38uS38Rx37Hj37l736WD391P38I9373135y838tt373D36Pu38XG36Fo38zl24738zN38NH36EC35Y838ZR36K035iz37S135RH38zy38fB35y83902390436n838y0392C334P36je36LV37Zb37vz38B437SP385u385W391U38pR361536T0392s38pw386M375837TM38RK389d391t22O38c238rp36w4392W390Z38Rv38w038ry36FS38z038z2373135Yj38s535YJ36sc23535Yi22p36ju38FV371B34FI38zf34fi38zI38zK38zj36Lj392237bm34Fi392636fk22822A38Xq36Lj21521738Ud38dp34fI392E38qx37Ml390638b034fI390938pJ37sm390c37q334rc34Fi390G36Xb24v24v36qY394o390M38Px38G1392z38q138RL36nE394u390v38g936w439523939380t38V838i538vA36Lj393e391534rC35z338s535z336SC23735Z222R36ju38Lc37dl35ze38Zf35ze36ju35i238Vp377L395U38vs36s0260261385W35ze36p938lO395V37A43965395Y36fO38vu38vS36S5396336Rp38lX38lZ395938w137bY38S038w534rC396E36Ni38M836Uc31p438WC31P438Wf36IE38Wh392324431P438wl36T031p438U731rw38OV38sZ38Dp31P438Km26s26t37mK365S397822t38Ta36zK37Z7397336rp35k7371B31N136sc23822t31N137YC26B26a36T9397U36n5397X38MJ36kc31N13941245342738ov22o22q394937GW31n138kM35Tu37Mk362638dp31n137hb38Ru3958393b395b36wd38i8371037R0360c38s5360C36Sc23B360B22V36ju24t24T37BA34sW398u22u34SW396v36Up396x37bm34SW397136v334sW38U732k438Ov26Q26Q38nR38zz36EC34sw38kM35fy394D386W38wT34SW394i38lP394L38lT399d38pr359936W4399x392X37x136XM36cQ36N539a536n839a738eA34Rc39A138Q5386W39aB22W380M38c838tp385m39AC36Ds387437ZC36QE387738y636S1385w39Al396Z2el37DL360y3993360y3996394Y37g637bm360Y399b3798360Y38u735p438OV26926838xT36EC360y38kM35pr37mK399q399k36EP31dg392k36Q9392M38Ph38FN394j37ZG399V382N372S22x394p36Fk25425436Qy39b8394V392y24624f24F36K739c8372c39CB393236Ne39C4395338q636W439cg36Ns39AN392n39ap36RW39Ar387A396C34rc39ck36Ds350Y37bA361a3993361A38Sj36gJ37DT38SM37LM361a398326626637bX36N535Ko392b37K3361A38km35TJ37MK32r638P736q5361a399T392p38y739Cs245361A39BZ24539Cw36T039dS39C539A3390p38Mi390r395034RC39Dx39Ch39ae39Dr22Y38I2391038UT38l03842389u398P38cL361l38S5361L36Sc23f361K37oD38TK361w36jU21M33VA37Dl362738Sg362739D136IE39d338TY38qL36Ec3627398338sx38kg394d37YS36tg362738T336j2394D38T737Gw362736tX25k25L371B362I36SC23G231362i37YC1Z1X37M739fS37VK39FV398036ec362I3983362237s135x439dD36Q5362I38Km26d26c37Mk35xl38DP362i37J923j362s23336jU26N26m371b34G036sC39gG34G0391J391L398l37WC391P36PI391r39Eg373134G0391V375x36PU26526436t939h436N539H739fy24434G038eU38yI38RH38YK3759393139aA36Pv23438u735z937S1364R39G536TG34g038kM382538h836n838Do37GW34g039Dn396924624E24e38LS39Bw39h038pr383a34rc39I739a238py39E038T538dm36wh375C39IB38q538Ys39IA39hL371431h1363E37OD39gG363P39b138MH38Q039B339f2244363P39b634Rc363P38U734z637S122d22f3989388I363P38km226224392f38Dm32k238dP363p36Tx36h936uC363P38PE392L38LM39Bs38Lp38fQ39dQ39J338pR27027036qy39Jv39ic394X39IV38YL39Hi38YN39j2236393538YR38Rq379839K0324x23131kb36Ju25V25U371B34Ti39fN338F23839fR39FT36gJ39fX36WD39Ks38Xj34Ti398336EN38Ov362d39Hq36gx34tI39G839GA394d39GC37gW34tI39I038Hh36s036Z1388y34ti36p91m1K36W135G236W439lF39i838bq34rc39Lm39K1390o389S39f83773375c39Lq39IK39kb39LP23836p939cm39BR37a439aq388V39AS39Le39M1371431PI364l37od31PI364w39iU399839iY364w39j1245364W39j41U38OV39J739j938B0364w39JC39JE394D39jH37gW364w39jk36LF36uC364w39jO39bP39JQ38Hd39bT37Q037sO39DQ39Mn38pR25F25e36w439ND39lr39HF39Ie39k439E239CE34rc39NI39Ly39NH36O939MB2383656371H373O37bQ38Oo36pD36p938SQ38V338u439o138Kc384t36fk277394536wd24M24M399j38Fb365638KM36VS36j4390538r036eC3656372I36w121b21938yE365636P929538iL34dN39KM34dn39Kp39fu39Kq39kT39p338XJ34DN398326226338Ov35AP39ig38uE36tg34dn39l439Gb22m38dp34dn39la39AR39lD39DQ34dN39lG39li36zy39Lk36t039pQ39Ln36W439pw39nj3899391237Mk39ih37wj39pz39nr39pv23C39m236rr39ao377l39m638PK39cR38r834rC39PZ21o36Ea365t37od36Ea366439Mh38G338K536EC366439ml366438U724f24e38ov25E25f39bE244366438kM39ks39Hv39jG2Kj37gW366439N1371B366439N538DQ39bQ37sj39JS39Nb39Qh24539QW38pR39Ow36T039RO39q038Bv39nl39hH39nn39HJ39Rs39q736V339RS39qK23C366e39nx376a36Qy366E39O238U239o436W439s939O7388a36k036f439OB36PI37GR39l136kC366E39Oi390639r837J4392h37k3366e39OP36zY39oR38Ye39sE36ni359c37dL366Q38Sg366q39eY36up39f038D236kc366Q398337j037J2394D36bU38dP366q37j9231367023h37Od39tL34sO39qq390q38Xj34SO39mL34so38u735Uf38Ov332639ms38Wt34So38kM24T24s37mK393Y37k334sO39Pm39M736mA385W39tW38PR25Y25Y36QY39Uf39RT380B390Q38Jc390S36nE39uK38Q538QZ36t039uk21O39tL367N37Yc37G437gG36N5373j39iy367N39Hd390N39Nk39V137GI37gH39rx39K6245367N38U722F22d39Sj36Fs26g26H39R3367n38km25c33b839lu38DP367N398I38yW39EC38YY36N537hm396m38pS23K37B323223j367y39TO23g34Rr39Tr39e138XJ34Rr39Ml34RR38u7319D39vJ24735n639sM36ec34Rr38KM35uY39l639Pj37Gw34rR39Ub38pk38dw39dQ39wG38PR21v343l36v339Wz39Ul37FB37G436fs37gj37O039NO24539X436ns25q25Q37O1383T39Xd386T36NM39hx39x323l39aH37xf38tQ39xC39xO36rP39M3374J39Qe37sm39qG390D34rC39x439Uw23G368j39wb39Iw39Ta36eC368j39ML368j38u735ZP38OV26X26X39Of37K3368j39wp22d38wZ37j439L7388i368j39wv38DV37CO39y024539YC39x039X2379839yX39x537hj39x736n639vb39uo39e339Yw23M36P939Xf39Xh39Xr39z138q539xM39Z039zA36RP38703710383t39zF39am39Qb39cn39Qd39cP39M739xZ394M39z937B339tl34EA39Y639nM38xj34EA39ML34ea38U721x21z39Wj1x1Z39u139Bl34eA38KM39z436Q139uT388i34Ea39YS37zg39uD388Y3a0638PR1O340036v33A0q39Z238ri39e139z739XB3A0V38q538P636t03a1139ZP39N736RV38LP39ZV38lt3A0v39y334Rj3A0139rW38xj34Rj39ML34rj38U735Wb38OV36C139wM24434rJ3A0g39z639Ok36N83A0j38B034rJ3A0M37mv3A0O39dQ3a1k38PR360I36t03a233a0W39Hg393039vc382Z34rC3A273a1235bA3A2623o39qa3a1724639XX37zg3A1a39bw3a2E36DS332A37BA34zc36sc39tL34zC3a1f3a2A38xj34zc39mL34zc38U732rQ39dA36lj35bN39Yi36q534Zc38KM24d24d39YN36Gq39my388i34zC3A1z36O339Jt39rm3a3338pr36aN36W43A3O3a28370T38Kr36Wd3A3V37J43A3V39vD3a3S39S037983A4136ds370n38BU39Um36ov38UM39pD37Ki378b3A3S39y3369q3a2y39v336x6369q39ml369q38U736B537S1351a39R3369Q38km35Q9394D3a1w38WT369Q3A3k36s03a3m39yv3a4M38Pr31lX36w43A533a3T36fO3A3X36fS3a3x36gQ3A3Z3A2C2453A573A2f38ye3a5h3a1639663A1839Do39m839Dq3a5739Y334Ds3a4h39ix36X634ds39Ml34Ds3a4N23U3A3636WD33Kv39r334Ds3A4t21Y3a3F2483A4W39Bl34dS3a4z36fO3a5139ZW3A5z3A0R1P36W43A6i3a582463a5A2473a5C2483a5E37wi378B3a6m3A5I36T03a6W3A5l387539Co3a1936s2388Y3a6m39Y336aC3a5U39y824436aC39Ml36AC3A603a6236PI22s22u3a0D38fb36aC3A673A693A6b3a7l23s3A6E37sN39i538Po3a7e38pR21F21D38Ye3a7W3a6N3a6p3A6r3a6T375C3A813A6X36v33A873a7039Qc39m539ZT39Qf3a7439dQ3A8a24435T6371b355038Sg355039t737i838NF3A7A355038U138u336W4355038u739f636up36vD397737GW355039FC3A6937kc38b0355036tx25v25V37Ba36aZ36SC24823T36aZ37YC398F36gJ3A9K36WD3A9m38xj36az3983365h38Ov1g2i63A1P36aZ38km25E25e3A6925j25j39Om24436aZ3a7s39Bv38pO36Az38b938hq39Z33a1T39z536L138hu36NE3AAA38bi36zy34c936t03aAJ38bO36Qb39I92453AAo38Bt3AAC3A0X39y739k53a5F3aat39XK36Zy3a1336V33AB0386z39ai387139XR3aB538V739GT39Vy38i739Ef38M438cL34UQ38s534uQ36Sc24B36b9378N243371b34Yk3a9f23T34Yk37Yc35Zw36gj3aBW36wd3aby38XJ34Yk398326h26h3a7G36FS33lv39r334yk3A4T21Z37mk36yn39Dk36tG34Yk3aa738R739yV34yk39dT24I24j36W43aCl39dY39ID39b238YM3A5f3acq39cH39zH34rC3acW36Ns22l22N36W1374j3AD235Bu39AR367x385w3AD037qq398j387f396i393C247398O3ABG373136BV38s536BV36sc24D36BU23X36Ju35ek371b36C63abS36c63a9J23136T93a9M36Pi3a9O38zo36EC36C6398335hS37s136aJ3A1P36C638KM3aA23a693A3H38b036C63AcI385w36C639DT3aDt36t03AeL3ACr39k239Z439X93aaH34RC3AEp39Ch3Ab337983aEW39573AdE3ABC39Q23ABE39W134Xr38s534xR36sc24F36Cg36Ju351D37bA34W53AbS34w53ADY3AE03ADZ36lJ3Ae3396Y34W53AE7341i37s11H1g39r334w538KM21N21l39JF37j43Aeg38Wt34w53AeJ388Y34W539Dt392u36V33AG73AEq39ls368X3Aae3aET39up34rc3AGb3aex3a2G3AGA24039EA393a391139Lt398n3Abf37hP38cl36D238s536d236sC23L36d136Ju3232371b36DD3Abs36Dd3afJ3a9l3Afl3a9N3AHa38xj36DD3AFq3Ac624735wU3a1P36dD3aed3Aa339mX39rA388I36dd3AG539dq36DD39DT25x25w36w43AHT3agc39v83AgE36n53AGG39Z83AHY3AGk38yE3Ai53af1389o3aDF398m38cI3agT37xs373136dp38s536dP36sc23n36dO31vp24H22i22L35b836e838wr34fv35eV1i36fK255254350I36fO31hM3aD737q32my35g736E835at37wi353P354N35C927C1c32r11135c934uc2al22c35F71I36Fo3aiy350i36FS3aJ2350w34Qi35G735g73A4Q1034Kd35c93aJ8366j354M3aJ535G8103aJE35B835g736zX34fV33XU1i36Fs3aJo353J36Gq3aJr34CM388F34kd34kD3ajW36gv35g73aJ834KD3AJA2mY3akQ3ak53AJF34KD34YS35Bc31eC33b52483Ake338Z23v2493AkH22637C036GV36gv3ajW36h034KD3AJ837EM33wK354n3aLF3Ak61136Gv34Wl35BC35Hm1i3Al43AL21823S24a3Al634WD36H036H03aJW37iS36gv3aJ836H03AKr103AM33AkU35b836H034w93aJJ31WK1I3aLt3aLr23T24b3al634HQ37is37iS3AjW24b24B36H03aJ837IS3Am43AMR3Am71137Is3afe35bc35It1I3aMg3ALR23Y24c3AL634T73AMN3amN3AJw34p337iS3aj83Amn3aM43and3aMU3Amn350q3AJJ34iW1I3AN33alr23z24d3AL634OC34P334P33AjW3a3d3aMn3Aj834P33AM43Any3amU34p335823AJj34ya1i3ANO3ALr23w24E3Al639qy3a3D3A3d3Ajw39I334P33AJ83a3D3aM43AoJ3aMu3a3D39Dv34Fv34J71i3Ao93aLR23x24f3aL634vr39I339I33AJw39c83a3D3aJ839i33am43aP43amU39I334kS3AjJ34g01i3aoU3aLr24y24g3Al637ca39C839c83AjW38uw39i33aj839Cd3ak21039Cd3alJ39C839T234FV34ti1I3Apf3ALr24Z24H3aL634jB38Uw38Uw3AJw38z039c83aJ838Uw3am43AQb3amU38uw372p34fV34dN1i3aq13aLR24W24I3AL624J24i38Z038z03Ajw34U038UW3aJ8395d3APQ395d3alJ38Z038Vu34fV34zC1i3AQM3AlR24x24J3Al63AcN34u034u03ajw34VN38Z03aj837Ud3APQ37UD3alJ34u032A23Ajj319g1I3aR83alR25224K3AL634dD34Vn34vN3aJW34V134U03aj834VN3aM43As33AK51E33fI34XN27c1U32g61134Vn3A2S35Bc34W93ArQ24j368T2mY367f3aR824y24y34j33acn34vN35Q335zH25324L25825834J338f83Arx24j21L21R34yV24l24l359X35Bc35q934zG2My34Vn3At62hT3Asn3ASp350w3asr24J34MW3ASU3AsW3ASY350w3aT03ARX3At335B83at635C335Bc34mW358A3aTD24l3Atf24J3ASO3ASq3ArX336V3Atm3aSX3Asz24l3AT13ATS2fI24l3a0s3Ajj336v3aTy24j3ATE1l3atG3aU434VN33iR3Au73ato34cM3ATQ34vN3AUc3aT63a3835bC33IR3aUI3aUK3aUM3aTi3aRx34Tt3AUQ3au93AUb21R3ATt24L35Co35bc34Tt3aV03AU01135B834Vn35D135bC31yF3aSi35uB1023122Z3AvI24j37s334Fv3AsH3AR83AT631Es3AVR3aSd24j35dS3avL183aVN22B3avZ3Avs37wP34fV3avm3aR82Hv2773AsM3au23AtH34CM3aTJ2z53aV63Atp3AUa3aTR21R13153AT635Eg34fV34iJ3ao334wL354P31yf3AvF3AU1367B34z13ATj35wZ3AWM3aUs3AWO3AUu21r2R93at637T834fv35vK39Cw34Ks3Ax13aul24J3aX33Av334Vn34ye3ax72263AUT3AT23aXb133AT635f235bc3AXG2a23AXi3atC3Auj3Au03AxK3axm3aWj3aRx34fI3Axq3axs3At33AXc24l35FD35bC38Lr35d134fI3AxJ3ar83Ay62263AtJ35Y83AYa3ax93aT221n24N24L35fn399Z103atZ3ax223I3ax43ArX36C63aYQ3AV83AT524L399o34fV36bQ36aZ3aYK3AXL3az13axn24J34W53az53aWP3AvA38E13aZA38C43aY23aV13AZE3az234VN36Dd3AZj3aXA12143at635gl34fV359c35d136bQ36dd3azd3548350i3aRT3542354D3As53aPQ35T734Vn34Zi3AR825t25T350m321z1034V135t73aJ83At63AT621z31yu1026025m326o2fH1034L835T7391e1038np3B1123D25424Q35A725o21724O25z25h27S21k24R23L27S318C24s38iK350w39u536hI34j735ZH25b399029E34cM37mI36Hi36hi35Zh25824U3651350w352e3B1x24s36W31036HI35CP3b1s38N6350w37mi398z3B1y22T3b2038qb3B2334F124u398z23b22E23b22f24u24V36QW355K24j24X36rL34Cv394R24X24X2ao25A352E24u36OH2213B2038oa35bU3b353b2m24t35zH25924v374X2323b2q35A13B2u22b24g24y3B2Y2mY384E3ASo34EH3B3o22q22o35Bu376p384e384e34ht3B3O253252352s3B3S24Y34eH3B2w36kk34hE3B4024w351A35a134F1394r35NO3B203b1m34cm3B3c3B1Q22T3B3g35ST34Z13b2s3b2L24u398V25B24U36Hi36fa3b2037kH354D394r37xG3B2S36HI34f13b4j24u3B4L2263b4N21g3B3F24V3b4R350W3B4T3B2L3B5F26826934DF24I24W36YF35a1384e355W3B2w36hF3b3o36wH36xD3B1524M25036pM358w36xd37EA35re3B6136wh384e37eA2eq3b4g3B2S24v3b593b5B3b5d3b5f3B5h34cm3b5J34F13b5l3b5n34d33b5p3B5r3b403b5u24x3B5w24Y3B5y24z3b60250396L350w38Jd36Xd36xd35yb3B6836Te3b6424Z37ea35MR3B783b4624w3B6B1s3b6d3B4i24U3B1B368127S21F26j3B0w1023O23q1234VN3aNO27S21127025N3B1J3ayl3azf3ay734vn34n43azv3axT3AYd35Gx34fv35tf35kO332A3azD3b0I352O3ART3b5b34DD34V13b4o3asv3B6k3axr3B8L34V13b2o22322Z3b8r34UG38f834v127C2152162gn26q268326o21J22k23h34L83b3M3B1735pL34L834RF1T2492XS34l826p26b27s1o26r26X3b1J25624o3AyM38zT3B9a24n35ZH3b173au8350w34Vb34L834l83at334yV34RF35H734Fv3a2S36Qw358a3b9e24q34x81039OD27c1r24f3b7U34vN26f26T3B7y25y2693b823azr3AzG34rZ3B883At33AvH3At637J63ba827X3aMa34MW324w21o1035NS35P034L43AX11524H24j3aE834cf3AR826x26w3aSL2333bbC395U3bbF24j363P31Es3bBk24j38k23BBn36dv3avP3BbR32p03AsA1C3ar826Z26Z35cB3B833AZs24J35r03BaV3at4123At6392834fv350L3ax03aZP3AY43aSv3B313AV724j319G34hT3aSV36Yf38F83At6355W25024m36HF25124n38t422l3b9R36Hf25724p39u5352s3at638NP34eh3bcU36rT3bcX26l26k34z134n839oD39Od35zh3BcX22722535BU3BDg3bDH3bdJ24N36RT3B9r35Wj350w38zt36qW36QW35Zh3B9R3AQP34Z13BdW3bdX3BDZ24o39GX3B13358l38Ca3ay238Np3Bae29f22f26a25135J82M23544358a29f38xs3aaM1034Ju38xs33cC31p534cA33LE39VI29F32cX2DY22g22c32x231t233wA337i26Q32pM1034AZ31aF21H331u33791O33Tc29F1P31ar2fy322Q2tL1H23g32YQ2l5340M29A31eQ2bQ22v32PT25l33IN3bf833oA326a2yd2yF31w031w22fe22F1x32lQ2y82ya326a33oc2lW31CA28A23b31t02Al31T22GW2GY23A2hP3beo34cb2x3325f2CU350121032g82Qm355k34DH38m834CV355P21o211355U3bgw34uh1036zX34Zi338z3AmA35603A0C357935ap2cX34ZH22R34Dv3beL350121233Mh351K35073427351K1a35zH34e03BhK21N21437V7351D1B350734283bHz1B35Zh34cF36v234cV3Ao337Kk22U34eD3Bi7351n1835152NO326H31x8143aJ82Qm356x21O2152eg355j3BH638WR37zI3bEe22g32Lq27C35Di310624s33f622V34dB2a934V532W034M52bY23033D631Vt23d2dy3beL34cB31ld123bel35723Beo21D1g32kv33pH33Ph355k34ct3BeL22722135B835442aL3A74358a33Ph32ns355q3A0c3bjp113bJK33ph2fr380n3bEL3bet2m222F22A2OV33CC3BEn33Cd27M27C36ZX3BjF3bIY354x3Bel34U83Ber33PH23b26r352x33pH38WR239317734zW34sh3b1U34CV3bel34LK3BEu31d53bEW34CB34Cd1025y33I621133zI1D35xB22l22923532B93BJ32cz22T2Gg3BKN2nq31GO3bJP31B822B34ct38M822536lh29f3ayx3bk12V43biH3bL534lL3bKd3BKF3bEl33q02BQ21a34Bp311O24k32m52NL32N1326A22p321i33421333SQ32mZ319732Tf23C2F83BlR34eZ34CH3bhV3BJO3bJP355W34Vy36sZ36PK36sz34zI34Cz35bb35gv2Fr32ns36Nz3BEl34v43bER2wR313Q3Bm82BY3biy2eQ27c25D25F33832181C25n26h338321C22021n21w2Gg2142371539S423A121p33dv1031DY24R25N1w341J341l132Rs341o27c22H341r2BC13341U341w341Y34201a1Q24333F63bnV34F924332J931vc321P1L347b31Es2oc33Nj21C23531Yk10341K32MB1322127X21V2Gn1321v22H2x332pP28A22335Ba21W1R22235Ba22932MP32L93A0S227327v22h21L32rH34782uW1W34351l31Wl26e32Br2Nl2cZ26832Vj27c22m21R32mp123Bpk313l2bb3bPJ217327b32aw2BT33603106311J22h24Q33NP33j432N032Os192103BMP321Z31Af2a71n31ZS330Z33mh26r33He339G33FC32mq33fF25233mp31u325r26H2602c72l52101Y1t32jI2aw21P2gx1926w2422By33j534b1326I323Q2ke3bb51433NL1H34g13BFt32PT22332E931872Hg1P1J26q34KE27C2792CU2F73bp41b25A33Ay1021P2413bj23Bj41C37R83BgO3bko3BNf31Au314G38BK34Z93bT236sz3BKR352T33PH3Bt738Wr3bt73AjI103bIl2by38DK35443a9K36sz3b5H27c350B29m1G36sz355k34d538wr34P116396B34cv28h37xG34z72I128R3B9h2BU3BoM32F11O192Nk1X21M1R3BtQ22b3btS2by3btu3BjT34Cv2DS34Uc34VU29E350b23634292dy1m21J3Bub3Bud34d5372p3BtU3bi935gv3buk16355q3BUu2Ds33813Bue34yu2bq3BTU3AuF354D3BV1355Q21k32vn3bV53BtR153bN834z2352A2QM22422731fY22U27c3BUS3BJM28h356322b34DQ3avc34cX34dV3btw351c357U358428h351D3B9g23n1731Yf39281037J634zx3aP935602171a2cx356322o21f1I351d28H34iR35093bhy36NZ3akx22625m2XS28h373Z32qw21B27C35fL31yF3bX031mH34ZW34DQ3as935603bJM2CX2cX35Ap34w92fr3aJ8351D31yf3aJ82cX3Bw7249352X2Cx373Z23933ng3bX82jw34Xo35013BXc3Bxd3Bxf2Jq113bxi1B3bxk34JR3BIi3bxN3bxp193bXR2213Bb53aAM2cX35102223bWn3bxD1934Ir31D82FR2cx2191c3BHm3bwk31un22B34e03AMX35Gv3Bxm31ZV3bu32CX35s333Fg22J21V3bXu3bWg338z34DV3AT8350121g1l3BHr355k34Cf3Akx35GV35823bY538Zw350R1c351M1034W9350Q36NZ3aLM3bWw23X357j3bz21Z233358D2PB3BX93bXW21N3bxy3BXE357s34W934ZH3By63BxJ183BXl3Bhy3B9g3by93bxR21339Fd319f31y92Mn36pK3BXG1222I23F21E2wx3bHo357s351d2Fr3bT7350q3by52jP2cx350q22425K2xs3bxQ3BVR33FG21t22h3bX32xs34W93BX021u32mh31xE3BHy34W922X25p24N2gL1B373Z1k22022k34ZW34E03BxA35012963bI335ap350q3C093Bw327C37zi351d33Ph22z3bYH3BWo3BHz35P834cf39dv36Pk3BZj3c0c3by63aNi3alG36NU2nR33wq24p352X2Ds35fn21121U22V34Zw34cT3c1w340K2GK3bv535ap32NS3bHH34D53BgZ3BU02qm380N36SZ3bKC3beE32ml2m23btD1p1q3106337924c32Yl313Z351c2cz2603Bfx292336m336o32Jn312Z21J344g2iH2KQ33Nj1Q24f31Zb33463348328k11334b332w1832nn31Eh33Ss31vx2Ag22X2Mn3bmv319E349Y2by3501339f29e355w34ch3BVk34Co33833bT734z92nU21O1Y314G33cC356e3BH33bk5356e1w3bK53bk621Z35B836sZ3Ajj3bIy3BEr2dS3BEd29e22F22B33Oj34Ca3BxA35KY3c2433ap2613BRH2b532RF32MB345S31aF21431WI2wM21R33Mu2It32np32NR32nT18337t3c3y32d026U338732nx33XZ33z032f0349q33FD32mr33fg32Mt33fk316726m335O3bg92Yb3Bg12N522338OB312w26K3bQ9337923232v531e41422n21732rX22b33891b33eh2Fl3c611732nS2vn1126R3brX2DK2DM2dO26q33cM2iu3BF3320121P33t23BFY3bgA193BGC33Oe28A26V34Rg31Tk26k34bG2M221a21L33FB33Dh33fe32mS33fi2qm31v32a723521T3C5B2m234Ez27S3Bi91q24e37Gh103AyF23933a73c8e3C5b35zt3c8h2ZI34sD2M23C0q3BGu29F356E3c8Y3c4N2203c912cN3c933BNJ2fm27E31Dr356e21A3biX10355k34vy3aMx35013BWi2fr2Fr355w34cT396b34Cy1436v234D4153c9O34Db3buI3c4r3bul1F34CT35bB3BXx3BTp3C302203BHX3BV513355w3BN7338335013bIP352614356e3byp3CAe355w3BUw2NK35Gv34UC3bTz29e352J28a3c8W23f3C943c983CaU3c502Bq2cN22G1Y325L350Y2122112gN3Bb327t3B0Y29f3c8s3BLG31ES3C8V29F3c8X3C973C903cBH3C963c8z3Cbk3C9232OR3cBl3C9c29f3C9F2FS2DY3C9I2s13C9K3C9M32S02B434cX34CZ3C9R34D53c9u31DR3BN92Vw3bV23c9z34om36Uj3BJM3ca7356e3CA63C3032x834Yv3cab34Hl2zC35263CAg1c3CaI23F3CAk353n3CAn3bea3CaP2Ik3cAR3CBF3cAT3cbJ3CAW2203BH33C8Z22g33NH27C3CB32133Bl722f2282gg31DX2It24S2K533953c3m1n31aB2cU337U3c3z24I347J3C4333193c453c47334D23632Ni33Sr33St31vy3bF62bQ33xy330T26X3c7f332v34am1m31B62Dy3c3Q31z73c3S32jO21J29h27c337922S325l3C4h27s3BN321n3BHm3c8z23f34cH3BTD3cc727C3c4t38bK355Q3C543bEl3c533c553cBI3C522203c5435bB3cf33c9K123cFA3CBX3Cf735Di3CFE3bH33cfb356E3a0C2ds33Ph356E32KV3Ca721t31w11238Wr3c5a3C4u358A2DS32Mu3CcY3C5F2292lZ29e39T232Kq3Bg83BfZ3C7s33od3BGE34CC2eb32SV3C6Z22n23531w13c5t1o21v34BP3C74338A3cE233u632y01T2312vl3bgI2Gu35nw28033Ik1125c3A3E3c7Y32P92m221V3bNy344Y2pi3BV21M26M347Z312w21i32b93ce41723B3c3G3cEj343721b32HG3CDo32D023626Y22d22g1z24F21B21E233346F34bh33RO3c6M3cG83C6P1923e2Sq3bSY3bKP3CaS3BYP3CBL3cIc3C923Cie3C953cIg3C983bWi3cbL3CAu3cbS3bhv21631ff3cBX23F34CT3BuZ3c9P377V34d539dv3btu374x34cV2fR3c9Y3ca03CCK3cFp3cA43Ccg2ds3CA93ccJ36uJ3C9C3CAi2203c4X3CcQ34D53cev34CV3cCU358427C352j2Bj354E338Z3Ceu334T34CV29F3Biu34C93C0q3bIp3cBR3bh63CjV388X3BEe3CDD2M236Zx247348m3Ced336n343c1p22T3c4b3Ce02ag22321q331733473Cdt331B331D312y3chj3C3H3437237321N3chP27Q2xc2eW3cDk26u2432nK33181M3349321Z3cDv32SP22a34fr3CI93C8G3BEO35013c4x3cEs3Bl2353n35BB3ceY2fR355Q3C513C4z2203bK43bn03C963bk53CfR3C5831063CfV3bk034cc2I13cb43C5I3C953clq3Cfn3CLS3BJp3CLU3ClZ3bEL35uN3AaM33pH3C5D3Cm13Cf23c993cf63bGu3CLt3c573cLz35bB3Cmb3cLY3cME3Cln3C9532or3CMi3BKG3BJQ3cML3Ca73cLX3C5C3CM03cmr3c983cmt3Clr3cMJ3cm73cMX1335C134fW3cMc3CLz173CmF3CLo3CN43cm53Cn63cmw3clV3aIT3CNB3CmP3cN13cm23cn32lZ3cNi3CmV3c563cLV3Btd3cmo3cn03CnE3CN2356e3cNH113cF53CN73clv3ak93cNN3CnZ3cnf3cMs3CNS3co43cM63cnK3CLZ3aKx3Cny34c93cMQ3cnq3co23COD3cO53CoG2Ds3Alm3coj3CMd2I13Cg033LE3C5h3BHB2PB2B42Cj2iG32X331673cgx31cm28A22y321N31We31Eu24Y33Se32BA338A345R3bF8345t35a4324V34BI23i33Kr3c6n3Bg02ye2n523y33Kl337926524Q23m2KU330L32z732Z931Ft32Li311A343c1721c2243cG73C7r3c7t3cGb26I345229E3AVq3Cdn3c6634AW33R0316h330n2ZR35nY2m226831U733zM32V63C7021i34gM33sr22Y3c5s318m3CgR21G35oE3BMv354X3Ccz3CII3Cco3CId2mN3C953C543CBl3CJz3C923c4M3Blv34Vy3bz73C2y3cfJ3CiS3Cn93bv93c9P3bYw3C9s3CrR34dB3ByW3CJ13Cc834Eh34ct3CEP3BWI3cCe2203ccD3cCh3cc231063BgT3BV835273CLp3azX3ccN3CCR32Cx2c73CAM2LZ3CjM33pr2Ik3cjp372P3CJR113ciy3CJu33AN3ck329E3c0Q3CR8323F3cRB3C983cSW3CRd3C923Crf3Caz3Cd73BLg37713CiB3CsY3cR93c923BHX3CBl3crh3c9E340f2HH32Lq350132or3CrM34Ct35443cC132KQ2dy34Jh153CrT32Vt3Ctq3crw3cj33Bv536uJ3cS13cA43Cs43cj93cCI3cep3bgu3CJe3A0c3cJH3csf3CCt3CSi359E3cJN3csl27s3Csn31b13CSp3csG3cSR3C243cST3cEx23f3csw3CSW3cTc3c4N3cD62gG35823CT73Ck43cde27c372p3bj12bq3BF91O21h32B932XZ32y125125E3CKr1i22H3cGM3C7523I2143Cqq26k27225J31wd323N1m26724u34802133CQE2m227c26j32N833O93c7R3Ci51822Q3CQa33oB3Cga2tw2393BQ929l26U22c22Y24T343G3CpB22c1v1z3Cp331T23Cp63Cgz26K3cqT3CgF26C3bMh3CkV23132A5330l3cQN1933PF3c8q34cb3cR63Csu23f3CBq3C923cX53C953CX73CaV3CBJ3Cr822g21M2Dy317934Iz27s3BhK3cUI3bHB35gv3Ck23bl73c0q3Cx93c9B3c9d3cxr3CiL3CXb3ct922035033CBr3ctg3C2e21n3a0c3Ctl3bU134U2143cIW33r337aF34DB3cj03C9X3cC93blX29e35013Cj83cA83c993cCE3cci29f3CAC3CCm3csA3Cjg3CsD34d53cTN3cjk3cuc34CA3CAq3cDb3CK529F372P21a336j3cPP2yc3cpR1924k337c3Cvz3Cw53bGD2tw25E33f63cv421h22d3CWk3CGW33iJ316W23d1N358S3CVS23N39d93C7Y26h34143378343726r3Cqf27c1P3C733c753C643CVn31fT1M22l336z3CQm330O1933Vm3cI127033sQ2JF34902dE23Y32J93CwT3c6y32v721I3Cr03Cv81t22f33v13CLB3cx23cuO21b2C73c953D0Z3cbL3d123c923CiK3c923Cxy3c923CLF29E3cbS3cRK3bHm3cY43c2j3CTo3BZh3C9s3D1i34DB3bZh3cTw3CyE3ccb35603c543Cs23BGu3cYl3Caa36Uj32kV3CjE3bhx3cU93Cjj2MY3CJl3cUD3csk2hT27s39t23csO3D2133413cuN337023f3d143d113D103C983D2F3cIj2f83C953D183CAZ21H2bQ351d3cUX3C5f3cZ029e372p3bdU2m23aVK317t22723I33S33cgv3cP53cZM28a3czs3Cvj26H2613CW43bGb3CW6316W23P3cPu343726331643cge32v726R3cPE3d0S311E3cWw3d0c3D0529l3cqj3c682bq3Cgn1b23G3bWo3cZb3cpQ2yf32883D062De327r3cPa3cvo24a26h2473Chd33sR3czf3cv33CpJ2263d0v3cR53cXO23F3CUs3c953D4o3C983d4q356e3D2n3CsZ3CXw3a0c3CXz34VY3btd3CS83Cy43BJT3C9p38M83c9s3D5534db3c3538BK3ctx3D2821N3Bh33cs23c9C3D1U317836Uj3cip3cJe3BWI3CU93bId3Csk3Cao3cUE3D263bh72GG3CSO3D5o3cXN3CAs3d4S3CA52fL3d4p3d613C983d4u3ctA3caz21R2c731Yf3d2S33le3d2U3Cv02nK3Bmd3d3X3C753bFW32RI32HI32aE32rL31FT2la3cvV3am53C7X33q931U73CPZ3C7Q3C6O3CZ722P3377337925233fo3D0B33MK3CPl2272143D4E31eI3d4G3cgq32Y122i3BG73D423cg93CZd316W21B21T26j341E3Cqu332T34BP3CV42383CgU3c7L3cZL3CgY316w2193C3W3ckV2603CWF3cvO2283d4K3bL73bKI3cx33CXq2203D893D893bJm3Cbl3CT13d2g3d4y123C2j3d513ciR34cT377V3d1v34d334d53bN834DA2DO33833CC73cTx3c8I21N3Cu03Cj932OD183D5h3D8X3Bh33cJE3D1X3CYs352a3CuB3d5q3D253cJp3ALm3d5V31063CXm3CSS3D4m3d8b3CxS3D8A3D9L3D8D3C923D8f2FM3CxD2DY34UC3d6B31D53d6D322S325L25f24J23P21h26Q26x32Ur22a2323Cvc23733E73d341b3cWM316W21S32e92eW33Gm23A2oN22521J265336f23Z2723bNO312w22W34l53C7y25933Cg31xx31XZ21r31Y11132LD33UI32yt33GM344k33Q931tz33qd3cGj25d3bfx3cz53cI53cgp3cPf1b22p33q03D3l3c7024w23x3d3c3d7h3c7U1126x31y43Ckv32M03D6Q2aK2Bq224211338a22334bP27E31V32fA3Cx03bSZ3Cas3d9K3cbl3bWn3Clg3ClZ36uj3Bhm3c5223f34Vy3alm34cX34CT3Dcm3c9p3dcM3BL4352Y2aO3AfU27C31YF3a1M3DcB3d9L3d8931wP3CbL3d4X3d1B3CTg3D8X3Cf83D8L3cRO3Cy639t23CtR3d57163ddC3d1n3CRY133BhB35013D0Z3d1S352A3CU334Cz3Ddk37b534ut3ccn3cSx3D203cjt3D223CYW3CcW3c5e3d6c3cuZ3cSk3bNM33oh354V2w72qM2QO31tC21732hG3dAI314126O31Ce32m221233ar2M831xY31Y01524p3d0M3cQJ333p31Z331xB3DB6314121q2Ig3d4l3CAS3cd43C923DF13c953cTE3C4O3bLu35603c4x3DcJ34VY3d8r3CJ43cY63C4q34C93bk21C3dCv3C4J3dcY3BEe3bkf3C3d328A3DB432YR1c3DEv2DU2343c3W3dEe31uh3DAY3Dem3Db11525i34523deI32M43cQi337V22I21032PF32Z633Gq33gs23j3DEy3D863D0x3d2D3Df33c983dgk3cbi3DCf3BHv3cm43co43dCK34283d9G22l3crz3DGU3cS6353n3bM33dcU3BEu3dFL3c5f3dfN29f3Btd3CqH3D3u337v24I33g63dFr3dFT21t1T336z3DaZ3deN2303dAh32YU24x33Cg32rJ27I26U3dg431VZ33qx3dC93CiA3ccz3df52203DHy3DgM3CeT3dCG3Bhc3BJI3bn03Dgs3Btt3dGV3awR3BUG3c9p3Btt3DCS3dfh3DFj33PH3DH333le3Dh53CcW3C1C29F3dei24R2693DET32Ys32yU26032j931aT28732m0328A32YU34mL3dG73C3Z22i3dHH3dg031y12273DGg3C8f3DgI3c0q3dgM3cD33caY3C983Dd42cn3DI23cu53cNu3bN1338334D93cyF3cy63D593dh03DfI3Bkh113DiI31d53dIk3BKl2gg32jK3ckk3c443cKn331e32Vn319b3CKA3CEF312Z26B2nj3cds3CL43Cdu334c32SP23K3C3K3CDJ31C91n26024v3cvc2683bQW3CdZ3c4d1625L343g3CkV2253CLa3cen3C4j36Uj3Di13bmx33CC3CEw337034u929E3CLL21o3CN43Df434c93Cm53df93co63dI33CMZ3COk3cm03dLc3C983Bmz3dLf3C4y3COQ3c4y3DlJ3COU3cne3dlm3CfK3dI53DLP3cmk3ClV3cmn3CO93DlK3DLV3Cg33DjG3DlY3cOE3Dlg3DLr36sZ3COT3Cnd35gP3dM63Dlx3CF63dmA3CNv3Clz3CNa3c8e3DLU3DMF3CMG3dgq356E3dMJ3CM83cFY2ec3Dm33DMo3dLw3csb3Dmi3dlQ3DmK3bV13dlT3DMe3dmz3DMr3cjf3dn23Dmu3cy535bC3DMN3dN63Dmg3Dn03ClR3DMT3cN83cOi3DmX3dNF3DMq3dm83dms3dnA3cn83Cos3dnm3C5d3Cow31d53Coy3d2l38vU24s3D823d0722y3cwV2B53cQ62483Dkj3D7431D83Da83cHl1I21g3CGI3CPi31aF32c13D3026y324V3d013bFi3c3x337V26u3DBP3D7g3cQC2Tw22Y3daB3d7U3D353D7W28A26k31zm33km344I24x23k3cvS3dau3CVj22a3cGd34Ab3cgF24E33F63D3Y23Y3CVy3D6W3d432n524x25w32xx33SX3cR23CR43dgh3D4M3Cer3c923DpV3c953Dpx3DLN2m2356e3D163d623D8h3D8X3c4X3cY43DI834Cz3cEv3C9s3Dqb34ub3DdX3d5A3d1o35443cYO3cs23cIp3D5h3Dqi21n3cJD3ddU3D0z3CU93d1g3CYv3d9b3cJO3cug2nk3cSO3DQT3bl73CJw3CUO3dPz356e3dr42203Dr63DHY3DQ33d9r1X31x42fr3D9v3C0Q3DR63DR63D9Q3cCf3d633cBS3dq634oM3C9l3Crn3dq934gL34ud3CJI34Ud3DqE3Cli3CrX3Cca3dqN3Bip3DqK2GM3Cs535263CJc1f3cJE3DQR3D983dR03D5p3CcV3D5r3CSM3dqy3cUi3Dsb3d5X3CCz3dRh3cuz3CF33Cd53DrC3C4U3D9V3cDC3dE3372p35CM3Cvv26J26C3DBq3DOu316W3cP93d4631eU26521g3cLw2IH31ap3DO53DOa33j733aA316i32z8323n26f23Z3cZK3Doz3cP7112193DoG3D3Y2703d6s27C3Cqr31CX3cVC1q2333cVS3cqZ3DpQ32Y121J32nw3d7o24Y23L25z33Vh3cv424s3cPo3Ci43cZ723g3dOO3ckv3d0u3dhV3D873CUo3D9o3C953DUl3c983dUn3dLX3CXU3cd52bh27C32nS3cXH357t352O34Ch3d5w3D9i3CAs3dUP3cs331x43dum3dv53dm73dUR3cBN31Dr3cBs3D8J3BHw2PQ3Dd93d5534cZ3D553c343B1u3d8S3d593cJ23d1O3Cy13d1R3cA43d8Z3ca83cci3cy13DQp3CsA3Bhm3cU93D1M3ddY3DQv3CcX3CYZ3dsT2Nk3cY73CvC26T3C693CV421N22E25y3cQL2VI3CwX22D3dT7103cQR1F3bo734BI25u3DPC3D7o21g321I3cVW31d43D0s2183cHo3CQJ2513DUB3cW03cZ723Y32Jr33IO2jG323n3dKv3dT31M1U3cw33doT3d3E3DP13dTI3dAc3DaE33il3DpG3C7532563CvS2253d853DJa3d4M3D5z3dXU3d633d663C983CIP3D133d2h3Cbs3d5031XD38bk3dRP34cT3drr3cY8377v3CYB36QU3DDH3cCA3BHv35033Cs23cu23dvU34cZ3bHv3D5M3ddu3dVX3CAf3cSe3cyu3dw23DsD3d9C27s3AKx3CsO3dYr3D2B3dXt3dxw3d603CBl3d5Z3cSW3DxZ3CUT21F33832DS3dsR3d9X372P25Y3CZW337932Tb3D4H345u3bF73D3Y3DBK2By3d7O31Z624731y43Cwg2623DpJ3dBf3Dx43Deq337v3dwy3DXB33A63cVJ24o3Bf73D0S26O3cqF34BI1J33o83dpK3DBR3CgB23P3DO93dWh3d0C2703C5P2fY2IF3dxJ3D3633ok358t312W3DXQ3DUI3djb23f3DSl3CbL3Dr63cT33Cxa3CBP3c9D3Cbs3ceP32kV3CY43cRR34cz3CIY3c9s3e1834dB3CSQ3CYd3DdI3Bhv3bYP3Dyh3cA33dDP3cNQ3CtJ36LH3DDU3cu83d983Dcr3dYS3Csj3DqW3BZP2f83cSo3e1Q3dyZ3caS3e0v3dpW3dsm3D913dV93D2o2Bq3cUW3cDa3bKD3DZC2Nk3Am632xW2xc3DoA31v53dw93dxI3doY3DaD3E0n26m23k3DO13DXb26C348M3DHp3D6N2De25L3d3K3DPd32v71s3CVF338a3Ceb3D7g3cI524k3CPE3cV421A3CQ93DxF3D7i28A25433VH3D0s3DHr3Dj232d0335m3CVs21723A3cVj3CI03d3024c3Dxr3bem3E0t3d653CXx2Ig3d2m3E3W3E0Z3dva3cBL3D1A3crI1236zX35013cY33dd93ddC3D543DVL3DVK34D93d583bL33E1d3CCa3DDr3dQl3Ca43ddm3ds43ddR3D1z3ddu3caD3D983BwG3csh3DW33D5S3d8J3CUI3e4s3CUL31W73d2c3c0q3E3U3E533E3y3dGN3e403CUt3d2p3c5b3Dzb3DE33BTD3cV22ke31v21834473dIN31VZ33ZF3DEl3Db031y134KM3DIZ33Gm21J330Y3dHd32yU26d3cws3CQJ23D3dJ93e3S3D4m3Cd23Cd23DF53dJJ3CS73cY23dNP3Dgs3D533BJs3dl53C9P3C9W3Dfg2v43dJt3DuU143djW3BKe3c973DE43AVp2F73Db532Yu3Db8317031vz23l3cVM313z33Gm3DIU3E3h3CQK31xw3dJ61521B318L357x2w83Dea1m23i3e603cx13d4m3E423C983e7g3e563DjI3c4P3CCK3Cln3CFn3E6A3e6d3e6c3CY63E6f3dJS3dFj27c3e6l3dJy3D9y32W03BQn3dBm34nc33mE3E2j3DXk1123923F3Da23dA432UR2433Dbe3dUC2Yf3CpH3Dc1338a24k33LD3e5U33gm21H3dwU33CD3d7f3e0b3dt028a3E0E3e733e5N33r331WI31tY21b24T25o317W1q2Nc1X26R34os3e7121832B93d3Y24K3Das3d4F33wo2rB3dgC2vM332522Z3dOO3DFx21T35dq3D6T32bQ3CVC3dZh3Cgj22738sD3Dez3CcZ3Dz63c953ea03D2I3d2H3df63CRK3BIP3DFa123DCP3dco2fl3cto3e1x3E7U33CC2QM3DJw3c0Q3Ea2356E3EAk3dJe3d8e3BEu3Cbs3cyn21N31Wp3cy43cXl3c9P3dqb3D8Q3d8u3d8s3D2a3DvO3dDi38VU3BHL2qW3ca43dYg3Ds43Eb421N3CyR3cSA3Cah3D983Ddg3e1r3D243CYy3e293e5c2Cu2473bS233I73e741732M131vZ24r3dkJ3dhp27j3d7z3Cqj1P3E6q3e8M31413dJ13e6Y3DEw3e7D3dcA3CCZ3e7i3dN93Dd33dJn2fm3di238wR3C4L3dlE3dGr34Vy3e6b3Dls34D33DyK3DL53DiE3E6h3Dfj32ns3e7X3E6N3bTD3Ch63e8w3dEn31y33E5Q314131uI3DiR3Dfs3dJ03CKu3cqJ3d8131AS29331Au35A03deH3Dht3Ec73Dhw3cX33ECa3ecA3dl33df73ECh3eA83dI83DY73diB34Cz3dId3BeR3diF33CC2FR3ecU3cK62GG25d329s3DKS33su33eG33KR3Dk8343C22i32sa3CZX1I3ckT3e712rv3CL23Ckl3Dke331b3dkg1827033163dkD3Cl53C463cKo32Ey33Cg3CKY3dKL3DKy3DUi3c4I3eAR3DjH3ece3dL43DRX3cex3dL83c4U355q3dLg3C953cnj3COe3CO33dnB29F3dmD3cmE3eF83cXA3cf63eFC3CN83cMa3dNU3cm03efH3cax3eFj3cod3dnB3dM23DNE3eFg3eCM3eFQ3CLR3EFK3Clv3DmC3EfN3Cne3efP3dje3eFR3dm03DmL31sV3eG32123eG53e7N3EFb3efs3cN83CNM3eFv3eFo3EfX3eg63EFZ3EgG3Cnw326d3EgB3EGD3c5i3cm53Eg03CND317L3Egr3EGl3egE3Con3eg82ds3dNl3EgJ3eg43EGZ3eGt3egF3eh2331N2gR3Eg33DNw3c5g143COZ38Vu3cpY2Dy3DZV2yf26225B25y33Vh3dZl3D0R3Cgr2513e6X3DoP3c3z2183e0P33sR22M3bO73D013dO5348v32Jo172673dKo3doD21z3dwk3cqr336i3DtD3Cq132U63CH73E9I330M3D0c22d3Dwo2272703c3W3CPb3D083e8R3CZ53E8T1121S3E813E2x3c703E2z3dZi3cgK3CwJ3E0M3dP01121A3DpS3dXs3dF03DJF3Cax3Cbl3Djd3E3U3DRa356e3Dd23dd53CrJ3cti3CcL3D1F34E23Eaw3drt3Bgr3e4D35623dRx3d5b31X43DDl33wf3ca43d1T3DS43d5c3D973cSA3E1o35273cSe3e1X3d233cYX3cUf3Bu43duy2fU3EAC3E4Z3Dr23DgJ3EJc3eaN3df23ekK3ejG3d2L3D9r354N357t3DrF23f3DJd3djD3dr63EJJ3e433EA62hg3DD93D1G3ejQ34d93DRU3Ejt3EB13dRy34CT3D5c3E4L3D903eK13e1j3Ek3352t3Ek53Csc3Ek734d53ek93DDz3DSE3cEO3cs73cUI3E1x3DSj3CX33EkV3EKk3DR433Zs33CC3d2R3E283cUy2m2372P1P3dTa3e0G2ZR2D83E7126L3C593dt83DTU3dOD22h3eJ43E853e0n26K3dwB3cPJ2381M3dsz3dXG3dTM3EIQ3CvO26P3CWP32V72173D413e0B3Ci53BG33D7C1T22r1m25E35913D6T31SK3Cvs3Cvu3cVv32iM2JE2933D0J1832mA3D6h338A3cWZ3d0W3d4m3dRJ3cFF3eAo3e0W3E223CXQ3d9S29f3DUw3DdK3CUI3dfF3ELt3CUo3eNO3eO23bEU3dR53EnS3D9l3dgK3CBs3DyW3EBb3DrO3cFc3CRN3E183E173CsG3e193Eoh3E1B3cUK3e4g3eDQ36Uj32Or3CS23eb83E1J3ecg3Dve3cje3BJm3dQS34E23dqu3DYT3EBj3EM23Cz12Nk26j3DZx3C3z3ed9344h3d0722L3EIy3D7O1S3eEa337924J25W21x3E3M3c7y33NE3eJ53Dtl3DP23dT322e22z338m3eMZ3cz73cpH3du93cPe3d3y3c493CVs3Ca83du01T26b3eBo3DOa31Dk3dBy33U53E8S3EmQ24T33wJ34BI3e3q3E0S3D4M3DHY3eQJ3dq13EnP3e213CBl3cbo3ejk3C9K36uJ3DQ73e4831X43ctO3E183cIX3eoJ163E1c3Dqg3DDi3D9e3DQo314F3ca43E4J3e1j3ER43E4q3csA3dYm3ELk32G83d9A3ep03EkC3e4w34cH3eDt3E1Y3dHX3EQL3Eqk3Enq3eqn3e583E261d3e5b3em32Nk21V33J83EPU2yf3ENI3En224D26h2313DTX312W3DBu3dXb2173bFC34373c3j2gg3doa3BfS33883e8j3cZA3eQb3E3b3e873CvI3CZu3bmH3cWg24m3DBv3ebz3e843Cp43e2K3EJ623N32Uh34Bi23g33wj3E803DzN3cgf3CgH3ej23D4J3EqH3cas3Eam3etc2Dy3c953dJd3Ejh3CSX3d8H3Crk3BGU3CY43CiU3eOG3eL53CuA34D33eok3eJV3d1O3d5c3ds13ca43c4x3D5h3eLg3cjE3dvZ3E1p3EKg3eBh3EKB3D5s3CXj34Ch3ELs3dv13E9Z3eTE3dxy3EUd3EAL3euF3eKL3c953EJH22g3Dz83cUE3ERV3eP32fy3eiI3esG319b3e2S32rm3DaV3d6T25W3bnt312W3dtn3eq32183c7P3eiu3emQ25e3dO231Wf35dZ3ej224S3EHv3cWt3D7T3esW3E8621I3EPt3EHL2n525932zk1034bi24M3cHk3eEb1Q31V03D3Y33qi2m21P3D0O3c7026326h35fN3e9y3cX33E0Y356e3EW63e233e573cRC3eo43Dz23EQq3Crk3byp3E153ctq3c9P3eqX3eTQ3bTU3eR13eb23ccA3E4521N3ELe3CyJ3ETy3Ds43Ewq3erD3cAf3e3V3CU93Dff3EkA3DE03cJP3Dqi3EnY3d8u3EKh3E5123F3ew83EXb2iT3CoC3eRQ3CaZ3DSP29e3Euo3dIL3Blc3bMh3E9O22M2XC3Dhi3DG122h32n43DEi346d3ed43DHE2343Dog3DC61821p3DWZ337v3e5Z3eta3cCz3E633cbj3edL3EAR3CF13di63dfB3eaZ3dfD3Ecn3CjB354d3eAF3Btm32Ia37IF3bNi3dfo2FY3dfQ317M3dHe26q3EHV3e9O21J2ra3EXq31Y13dhK3e7133mr2fL3E783de92QP32rB3E5J2123DHu3ENm3cAS3edj3dt73ejD3c4n3DI23dGp3e6934VY3eDp3dIa3CY63eRl3EYk29E3EDy3dh62cu25y3dHc3eYs32YU22z3eY33C3Z24f3diq3cq03dgd332532fH3ED12du1333DV3dEI31XU3ecy3DG13Dj83ey63cx33eO33Ecc3dcf3dJK3Ea83ctn3Di93f0o34CZ3DYY3eZq3E7w3EYn3Dfm3ECV2cu3D2Z103DIO32J93e9O26q3E8L3EzX3e5R31YV3D6L31YZ343f3E713dJ43F0e3dj73eDG3DUJ3eKj3ejE3Ekk3e7i3ezi33Cc3Cs83ea83d553djp3EyH3djR3DCt3E6i38Bk3Ezs29e3ARn32mb321n3f133e363cPj3C5v31tk31TZ25g25K23F25A25K1X23p21P322e3e2I3EvG3E0N25C25Q3e8A3Da51N25t24O2443cVC22H32e93DiW33g23dWR3cGF24w3dP33CKV2333eSO3D6T23g3DtO3c7522p3E5t3F163DEF3eT31026J31d43E8i3d3z3Emy3Evk3CZ83e9F31ei21s3EIt3cg83EIV21S3Dj53e8X22O3E9x3DpT3D5y3Dz13D5z3DR43Di23EAr3Bwn3ea83DFc3D1p3cTo3dFf3EZq350Q3EaI3d4n3F3Y3Dz13D2J3ezg3E433eOa3CTK3dD93c9R34cz3cIu3BuF3EjT3BUz3dyd3e7r356031wp3E1h3D5H3bHV3Dyo3EuG3CU93CXL3EOZ3e1s3Dw43ebk3EDZ32W0336J3EE73C3t143DKN3dtv3C653DhA3cdr32nX3eEh3eEp3cL71825j312I31Ei3CKG2AH34193eeU31VE1N26b3een3F5h3dk3334a3eeR22F3dkZ3D863C4i3dQN3DRJ3F413E4F3bt33dl734ca3dLa3CLQ3COc3cmU3EHa3EFe3egB3f6d3cNr3F6f3dLh3cFM33CC3EFF3cm03F6j3dnq3f6L3dlR3EfU3CNC3CMe3F6r3dN93f6t3DN33cTY3DND3f6W3F6q3Di53C953dMJ3cop3F713Dmm3f743Cne3F6y3F783cOf3F713EGi3f7C31Zq3F763E7H3Dn23F793dnB3cnX3F6I3F7L3F6S3Cn53Cnu3dnB3cO83EH53F7K3cMG3f7F3EFA3DnB3Eh43f7J3F7e3F7N3f7g3dnb3DnT3Eh53eHE3Dny29E38VU25Y3ci33Dx32yF23g3d033cGo3esT337v2311R3CvS3CkQ3DOd2523d333emi3eJ624v3EsK3eV53Esm31W53DxB3eMU3Et532v735xY3eQ32WM3eIf2vL3cq231uQ3ch23En83d0a3Em73br035OB3e0733ro3DU83cPj123BFf29E22G34193Ei5312Z1721F3ej93e613cas3EF03DuQ3C923Fa03DR73E223eTh3CIm3CtG3Eoa3cfi3Dd93EoF3D5I3D8p153e4934Db3EbG3er23cCa3crk3Eop3EtX3CA73DYj2zd3EJM3ek43Ewy3C543cu93CrV3eu53EX327S3D9e3cui3FaW3eRM3cX33Fa33Fb53ECd3Eo53Cbl3EUk3DuT3aK53byQ3EM13fb43Fb73cSb3CBl3EKY3e3z3F4h2it35013FAa3dY634B13Eoh34Cz3E4934d53fAG3DdF3eqv3f4R318Q3EJM3faM3D903Ewu3e1J3CRk3FAs3Cf33FAV3ctv3fAX3eLO3Bii3Eke3FB23EO03D2D3Fb63FBI2nK3cAZ3FBb350Q3exJ3D6e2Fy3f363cgo3e043CGr321R3d6k32hJ113e2T31yf3Doc3eEb21b3CZj3EPn3CGZ3d383C7y1H3epc3CgF24L348m3F3j32033EsF3F9h3esH3DoH1O26N3dp7312w26m368232j93eir26V1U3dt722826u21034483cVW3dsy3e3a3dBS2543e5X337V3DuH3eZC3Ccz3dv33FE83dV73DXX3Fa13cAZ3cXE3Dcw183DuW3Eu82g12Ig3D9H3Cum3d4M3FE93cbL3dV33cSw3fa33EO83cTG3dy33Eqt3FBp3fAc3ewK3E1a3eR03Eol3FAj3eAB3dS63cs23Dvt3CJA3Er43EU23Csa3fc63Cse3ERl3eX23d5R3eHE3E2a27c23m3DP33eIr26I3E0j27832Gm336K3dX831ft21P3ehz31Ei2193eUr3F9H26f3D6v3f3j3d6Z3CVC22j21831r53emp3Esm35123F953c7035kS3cvj340W3d3022X3EhQ3c753Dbh3DU93eVD3CQJ2343DOX3F2I3ej63eMK3Eq33Fe53EW43d0Y3EA42203f4f3fGy3Fgx3Dhy3FA33Cx93CBS3Er43F4J3fbp3e163cNQ3cTR3d533C9V3ECp3eOm133d8x3ETw3fc23fAo3cja3d8X3CU63dDu3ebe3ErE3f513fCa3dyu103d283cXK34wa3Ex83d4m3fGz3fI03fh13eQL3fa03CuU3E6J3FcN359f31ES3eSV3cwL3e0N24V3d733f9H3EY23dXb1U3FD03DzG3dKw3der3Fdc3E8F3EvL3EVN34BI21p3EMV3c7026732uh2FY3e393ESl3dBs3eq23EsI31fi3fDP344I24z348637n43D6t24O3D79213328M3Ej22Fm3fgT3e3R3E7E3ejB3F1j3fjk3FA23fbG3eaM3CTE3CBS3EWQ3few3eOD34cT3dQb34cZ3d1I34d53d1K2Hf2IT3D8v3d1O3CRK3CYI356E3elc3Fap3eTK3cs93EWy3EwX3CAJ330g3feK3f523Ebi3eKC3FhV34cH3f4q3dr13eX93ELV3fJL3cM33fjN3euf22G21P3C4g113fi7372p33oj3fgb22N351A3CvJ2123EVF3fIb3Ej63f923DH93C3z32D23d6Q3c3f3Cvc22O1n21A3F3O3Cqb3emq3FL83DP431fT22C2623EUZ33Sr31Fm3Ehk3fIo193EQ83Ci122c3dWW3Cgr24i3F9M31af25D3CDI3e2f3c693d3y3fIG3ep931Wf3D843F0H3CUo3ezE3e413EzF3DV43cRE3exd3dv83eQQ3EAr3ETl3DD93FH93F0o3CYt3CrP34DB3DYy3EWo3cIT2ig3EB53cs23FK53ccI3d8X3FKC3D9m3Cu93E6F3FFf3FHT3ERJ3df73fel3E503E7f3FMH3fMf3c923dV33Ew622g21j2cu3Cd93dw53eYP3E6o3E6U2123F0D3E5m3dEN25c33Ln3f3A2dU22Z32B93EY024K3Fgm337V32Na3f0821T3dEX3fMd3f1I3ekM3FmG3DCf3Eot3eYC3E7o34Vy3F1Q3DT73cto3F1t3EDV3C4U3f1X3cUe31es3ExP3E742443Exm32YU3dFV3f1c3Dga3e6r345g3C7k3EZ52W931Tc31wh3EZ93EZb3fGV3fCg3fbg3FES3ejc3F1m3d1w3EcI3Djm3EzM3DRR3EZP3F1u3DFJ2Ds3FOp3e6o3ep53fO722M3Ec13fNY21T3fPS3DGB3dTe33gR332533Wi3EZ92xb3F1E1525C3f303e5y3f1G3E0T3ey83f0K3EZh3cLH35603eh03DgS3c9R3DgW3Cy63d5o3eZQ3DiH3F0V3dh43E6n3f1z23O25121l24K24w21Y21q23V25S26h3EzW3DEu3dhM3fq7337v1p3fos3e8X25X3DzK3C7521234aa3ffW3eiI3eBw24z3dx23D6x2YF25n3DT629F23C2662433eI93EEB2353e8p3FkZ3e823f973Dbc3E0a3f903dBS113c1T3fd73emH3FgQ3ePO3c693f3g3BSb3fo724d32Vz3e9022q3f3V3eJA3CCZ3FCH3ewa3eF133pU3dqy3eob3ea83c9o3c9n3CC03c9P3bw23E6G3Dh13c5b3F4B3fsk3DV63e103d8h3c9h3DVe3cy43D1i3ddq34WA3D563DVl34dB3FHr3fF3133DVD3Eor3CYJ3Ews3CJa3dVd3ffA3EWY3D953D983eR13FN83eP13D2t3EBl3ei33FQ432Af3E713c3V3Eda2AS31AV3E9h3fPU34ni3FSc32vz3DEi3fP83f3w3ccz3f0j3fJM3dCF3DQn3DlO3ECJ3cfT3dIb3Eon3eYh3fPK3Fon3bu43FpO36zx26j3d3H1I26T3BQd3f5x3CKM3F5z3dK53fE23E7124F3Dpj3F5932jo3eeF3eEO3DKf3c4825j3CDi3F5s3c3N3F5N3C4C3Ee422k3f623c8f3C4i3Dy33E653DUz3D9g3Crw3Ef43f6b3c4v3F6y3fog3COe3F823CN83f6h3F7y3FVT3CF43F883efl3F6O3F7R3CMg3EH03FW23dM133833f6p3F7d3F7S3eGm3cNt3EHA3eG23fvz3fwd3Fw73Fvw3CLv3f7b3cno3FWc3FW63eh83F7o3EGh3Dmw3Fwi3FwQ3f703f7P3EgQ3fWV3CLO3fWk3f7V3CN83f7x3F853FwJ3FWr3fW83COh31zZ3FW53fX13Fx83fWl3clZ3F8A3F7C3f8c3EhG3dnz2B436Fm3d302703e0L3f8W3dTl3CzO2473F2R3dod24H33r03F9t3cy726C2483FG83dBS24v3F233C5U3epk3d6t21N3Bq13eij3Eig31Ft313X3dxb21c3fRE21331693D6Q25D3fie3EiK2zR3fSb3FL932d033sd3eq324i34bk3D7O3d3n3eNJ3c763Frj3Dpl192113f9x3fjI3Ccz3e543cBL3E3u3D5z3ew83d9Q3D1c3ejm3FJS3Cby3dVh3cTp3etp3CTt3fb23Fmw133DY33FtJ2203fF73CCI3Dy331WP3EoV1g3Cu93cyC3DSC3f533D5s3c2E3CUI3FzZ3fCF3e523E553e3v3fz93g083Fzb3fMK22x3eUl33833fCm3FBe3cUo3Fz83foC3D9P3EaP3Ctg3cRk3fZG3crN3fZI3CRr34d53fzL3FC93FTe3FZp3ddo3CYJ3FZs3DqA3Bgs3EaS329K3ddu3EoW3d983fZz3FtR3eKc3g0334CH3G053eub3CX33G0K3ETf3EJc3G0F3ajd3fBd3fnO3euP3F3D31d43cv421V3Fli3Czc3dbs23b3f8l31T33ffv31de3cEi3eEb21g3EMS31FT22e3fU53Fma31eu21122F24t3fm53f9H3dXA3fYr1Q2zg3DtJ3eSX3dtl3EVI3Flt3F8I2N524k33C63d7O34283CVj2o83EQ321d2673fDT26U2xr3D6q3eW33FuA3cX33dXv3Dz33DZ13EQp3eF93CBH3Fi53BO83FeG21g27s3G1c113e4y3Fkm3dZ03G373g3M3fsl3e7j3d2K3d8H3dVD3FbO3FJT133e493Fbs3Eqv3c9s3Fbv3fAi3fzn3eYb3cLZ3FHJ3D5H3EAr3D5K3e1N3elJ3dyP34d53FKl3G003fKH3dE13d9W3dw63Bah3f333dTs33Xw3Eq63f9H3E353Fyz3D6P3CI13Fgh3fJE3fIa3d7V3DtL13319B3fg231cJ3d0I323N2212183FPq3g281M36Q23cVc21b3g1z2M03FLc3eVz22n24l3Fy23fe03CgB23b3DuF3CQj34BO3fJg3fOA3CXp3DD03G5S3g3N3dpy3e223fA734VY3fN33CBW3Fbp3f4L32im3EJp34D53EL334dB3dSB3FZn3dqn3FK73eUg3dqM2BQ3e1L3cU73g4A3Fkd3D593G1A3d5S3FkJ3Beu3fnc3Eki3G5r3ft23cX63D9l3F3Z3dSm22g21l2It33PH3Fkx2NK39fp3DW93c693d0S33mO3D6Q3f0z3evo2272553EuW3G4l32833fYZ3cW23fy33CgB1332C13cwG26D25w143fgP3fL63ePo3FG13FLU25L3G2D3fYo31Zp3fyI23B3G5F24e3ev831eU326c3g2G26B3bf73cV43et93fe63D883g5t3g6s3dy03enr3G5U3CtF3g5Y3fmY3Dy43Cy43g623d8R3eay3ejt3DFf3FZn3D5C3fc13cYJ3e1G3Ek23EJx3d8Y1A3CJE3FHN3erE3dYY3G6k3cJP3FEi3dYy3G063CX43g8C3cx83d9L3FGz3eLx3G6x27C3eM03g1n3d2V2Nk34F12M234BI2703Ffy3G7W23S3CZt3D6t22a3EVU3f373G7p3g4w3cGZ25E3FS03f3P3ev63FIL337v3ceH3CvC310w3d6Q3BsK3G573EPB3fL03D0Q3EQ322I3c6S33SR26K3d6V3euU31fT3d403g2n3FrK2n521021T23M3Eml31Af3g893Fp93c0q3g393cNR3EQO3C9A3eWd3E3x3Fkp3G8h123ddR3D1E3dVG3DVl3fJW3fK13d1j3gBD3D1l3fk13FBY3d5C3Fzq3G8v3ElF3G8X3DS93CyQ3cRo3ere3EX13ElN3FHt3C9h3eX6353N3G983gaZ3con3gB13g8G3D4T3E5522G21Q32Lq3g6z3g0i3G4H3Fnp3G9L31Dm31vz2193Fpt3fR333GM24F3CdI3EYz3e7532C13eyW3Cr03FO23fO43c3z3Ey53G8a3cUo3Fqb3g0L3E7k3dI33E463EzK3eCd3dCn3FOK3e4a3dGZ3FPl3DJu3fPO3f1Z21X23I26c24025E3e9523S26126h3fOV3e5r3g9x3DTk3cgz21G22x3D3933ON3fP33E7a217328g3fPu32UG3FYL33fO3GcL113dOg3f3g3g4p3FJ224k3cVB3Dod1Q3DxE3FIz3CgB2172383fQu3fQW3fQY25S3Fdw3F2621B23l3FY6326G3f5E3C3Z2513g2r3CwQ3f8h3GaP3f3k3CVs2243fsH3f9Y3CCZ3dcC3gCx3fSm3BhV3DCi3eYD31z73feK3di93etn316S3FkF3Edu3ECR3EaG33p43fQO3cUo3GF33c953EW83EF03cbS3D5C3C9j3gBa3cY63eax153G663EJU354D3fZn3CY13eR83CYj3Bwn3d5H3cY13FZv3dDu3e4o3ErE3D5o3G6k3Ffh3FtU3F3d3f033ec22du3Exo3ftW3dFW32yU33Bo3ez933qM3E7126u33lN33Gp3e9K1n3dgf3g5Q3eku3ekK3Djd3CAW3dI23cA121n3fVU3DJm3fqI3F723cTO3fqL3Gd729f3fpo3DH731123f1927I2163f0032d02603GcK3e741o33L03Dei133ggk33gM3f143eXW32Yu3Fo93GcU3D2d3fuC3DLD3fuE3g6E3e683Ea83gH63G623Gh93fUn3eAh3GFJ3djx3f0X32w03F3S3ECZ31Y43f2V26O3fNX3GCh314124Q3BRH3DEi3GGO3G2g3Fo63eC52dU3Ghw3GaX3gGX3gB53dsn3FQD354S3Fpf3GI43DgU3fQJ3EYh3gI73Gfg3foo3GiA3e6M3FNP38o73eEG3F5y3Cl63Eek24q3gcr3E3i3DKJ3fvc1N2aQ3CKf3DKT3E2G3fXW335O3FV4312Z23C3FKv3fVJ3elP3dL23Fpd3ERk3bUg3FvP3F6a3Dl93c4V3eYC3dlD3Cf63DGQ35BS34CC3BM1359a3Dm43Fxj3bjF35BB32r4333l333n1p3dPc327C2bt3AVr3eEX2b43Cyg3CUi3BHk326g3ecd3bM233CC38DK29f36oC3BKD22C3eCm3cbC32MB3FyB3CKA33Ir323H2Fg24z33fO33s52Fg1122y32RX344d2bu25c3e2w2342ar321z21C22E320D2lr33Uu32LX3avh33uX1837hm21131ba27s26C3ce732ki282346a2Dy33Py34JV33Q12Aw33Fm3e0434Br22X32rx3BFu2de21P34c231Ay2qO2e42g33DBJ337722131611p3gmM21V2R332q22eo328e32b9337U356j34xf3DL03bN33cuI3EOa3gH43dHZ3FPG2203ciP3Eg73cm73bH63Bel35y73Blb27c21S3bPf28f31Yp3bUS3bwI354t143BGx38U23ex7352928H3B9g2xs2Qm3aVc2E22C733I1355U32ns3gnu3dSb3bH13BH33Bgv3GNU3Erl355P3BU33Go134Nu33fg2bI34zw3ElL2Fl3Eb53BgV31NZ35B83bTD3ajj3C3235293am438wR38zW3Bu03BaH3bAJ33833Bhb21121L332u3bLr22F22N27h34Ca3alM3fYm32Ym323h1G326A1a32Xy3cGr24f31D43gn322I21n3GlT33ut1A33UV3GlX3gmB3glz2153Gm128p34A73F9p3cvW26f32x22IW1821H3e0N23r26h36eN25Z34bk3gM61a23C3Gp63G343FmE3DT73Cbs3eNz3CEz3C4W3GqK3Fa83GBh3FVr1t2183FnL3EnV3g3F3Cld3B0L29F3goy3ezd3gqP3EyE3gBX3GqN3e7g3EO93GQr3gK53gqt3E593c4J3EKt3Gr73ctg3GqM3Dla3grf34vY3dW13gra2183CT527C3DsR3Gl43ERW3bnM3Ge83EvS325932WK1h32wM32vr32vT33mi32WQ33jg33Km31Tb31tD31tF173dzz3G2G26u3bQ93GMT21E22g3eMy3gl932YN24k344c33Gb24T3cPe3GMj183299327B3GLp2TX3ffq3f5o3Dkt223336Z3GLF2FH22l3FOz2f92fb3bFq33ht33ln22d33u42wT2HP32ce26r3C7K3Gmx193gMZ32fG33Mv2aL312K32ai22c2102ra3BOZ3DKl2313gsh33IP3CKb3f5a22E3gF03bgp3FAZ3gOn3dy43dcf3G413C4S3ef53CEz1F3G1D3D5u3dds3Clt3BLw3Ddj3Fhx3CN0355Q3eFa3dnQ3Cf93dn93cFJ3Fh03Gun3cFl34oM3CXr3cFQ3CfS3cFU35BC358a2Fr3cFx3diA2hT34Ct3eOA35033goU3Fc735263BJK354435y7325q36SZ3GNm2GN37t83BUs3BH331yf356Q22B34dv3D2A357F3gNZ3G3D37t81o33FR27c1x3byp3Gvi173cXr357935BS32y93BEL3ayX357F1723N3b7U2Ds3bvB3Bh3339F3Gp722k3ciq29e3Amx24S31Vq2AL3Gq53Gq73eJ63fga311a32dy28226r34AP3gT43gRy32wN3gS132vV29P26V3E0725R2Yz32q132Aw3GN026d3ce73GlO18321Z31Jo29E3e5e3cR132Y13ckd32My3bR332Tf21D3doG317M24F33kl3GSe22h34003dL03Ecg3B0L3bkq3Ggx3gK93DM83bk73GKZ22o3gNK29g3gnN372p3gnq33mi3bv83gnu3e6f3gOf3go015372P1O1k2mN31vT33q13FBM3b0l3CcU3c0Q3BHx3562356J357s38WR21d1W1k3bV83E7w2673B7U3FeF27C35L72b438lR3e453cui3dv03FeM34cB1122I22Z3gQV3biI3DSR3Gp93C8f33cc3D7m3BqO327D22x2BY3dL03cyn34633beu3AyX3fcF39Vh3f7l3BEO3D023F982bQ3Gzo3CYg3GQZ29e3gR13bEe3Bl93gWF2DY25Y25w3383343n143EII332E31vU1M21o1x2543BSq22G327V3d9G31Yk22q3d703D3I3c3p3gTv3DK91426U32Yx316h21e31x72PP23Y272320D329231au2Hv1N3h0I332a32WP1q213332i1123H3Cdy3gSw3ee425l37Mj3Boi26T3e9h3H0f2Be3H1037V72FV3gC73F633dyv3FbM3d5d3gk03Gj03GfY3gu63gQS3gU93Beu1Q2173dz833Ph3d9U2DC3H2621736Jg3bk534Iz3fQe3h2721K1933Ph34W93h2H3h2D3H2f3AVh3Dlv3CDb3gRr29f39dV21V3G2133793evT3Bs92de3C7j346K31E52Kr2Pi2tL3fcU33Io3c3r343c3GJN312w3F5P2123eII2p0337I24z3H0A343M1o26j3E9H33w81r3bf42l03gsy348g3cDk21834ae34BL1h32EX3d7y3fV134LH2hc23s3C423fuW3EEI334a3eeK21P22E3auX3DL03fuf3Dq13E663eF33gk43EF63H253D502172BH33Ph3D2R3h2C3bhv3f823gUE3fzz3cOU3BK33dnp3D913cLt21V3GKc29e3gkY3C5d1l3Eu93GON31TG3cFG3efM3dNe3c243fD83By13ciH31Az3CLr3Ea73cm73h523D1p3h553COv3CDb3C5H3C5939dV2473gX73gST24Y3DE63gtG3Gti1N24b26g24t3cVR3H3m21v3gL83GTv3GLa33s63gLd3Gpe33S63Alk3DX627D2Kg2kI2kk1d24Y3bRL31E93glV33uW3GpV25k33F6318N32cc26Q3c693GsP32O12FL22V3H57132rP329P2173gMM346133LH3463349d21P3EPT3GMa33Q033q233fM3C7k31Vc3gmO33Cq1B32uK3GkR3FCC35603CD23dJd3Eno3dpZ3Dy23DQF3H4L3fVN3CtZ3bY13CFN25p24M3Di53AUX1K1v2dy3c5l3auX3Gyf3GYH3H2I183C9g3Cbu335a313S3C9K3BjK35bB35y734hA33Cc3GvD35c43bvs34D02AY3G8J3BiP3GyP31nZ34Yv36Zx3AJJ3CFu358a3Btd3APQ3bTD3GR135443BAi3b7u33pH38vU21121o3bgN3gP73gp93BJf36SZ3gaT31Sv33gB113Fd03GSe22g3BgH3BF821g33Fr1p33IZ2bU22v3bJe3gqI3GhY3g0N3foi3F683Ef63bu333az2F81o1U2CU3bjF3bT923F3gfO3bh63clJ3Gu72Fr3G4G346u3DwK3C2J3H9J3en221834193GcL2443H3l10343N32AH3h703h723H7433Gc32vY33291L21w3f393gIk2dU3Ec43eHw32d026s23l354M2m2354921923h345b3bhD345D282345f31411t3Dhl33Gm3deg3gEL2323bKk3h003B0K3bL721M25a32443bby33FG1s2bQ38lR3Gh23E7I25p24j3d5u3goi1k1j3blq3d4m3gbZ3di23ddr3gh43Dgs3d1i3gv23GbD3gBc3Gd63GI83gfi3HCF3c9a3hCh3e1v3GH33CF43Dgs3f0o3ctM3CrP34Cz3FB23Ezq2cx35Wg2GN3BEL34oG3cAs3hcG34Ch3hci3HCX3h8F3djo3c1O3cY63hd33GHa3dfK3GIA3Gay3HCt3Hdc3hCv3HcJ3grK3gBd3HCM3CY63gRL3Hd4193Hd63beO3Hd93F0W2M235Bb3BNn3h0B1O25s3C7k3h7133oQ3haZ2bN3hCE3GjX2M23cso3g433c52357S3bk5387S3DIg3dJV3gj93H063FoQ31X53erz3gjt143cDq3gJD3fuX3gjF3C482593dzf3cHM3GsV3Fvf31VY3d453GSB3eET34Q53DkL3gJv3h7O3cep3fa03F673h4j3clk3c4V3CO13cFF3FWX3H5M3gKd3CNZ3gKG34ca3aMX3eRY3cEc3H6932yN3e3M3H9k2bu25633R03GT011329R336s3bhD32nl1816318l3h5z3Gx42EN24z3gru3gSe315C2fL33LF3H7934643DC43H31183Fo33E7124I3h6N3gwt3GrZ32wo3gs229p3Gac33MQ3GsT22z3GXr3h1W3E1u3eKe3eWq3dn83fUG3F7T3Cm53bhx3ClT3Gnh3Gy03gY23H8p3at83bUs3bgU3gNs3GY93FHE3C4j3GnY3GOg153AT83GO33Gol3CY936uJ3a0C3GoP3GNb3hHx3Gob32G836eA3GYV32NS3DCX22134d53EWQ32Or3gOp23C3hI32iX310r3gYY3gP22f821121E32F13H9f3fMk1035eg21a336z22N21o153HCc3E2u3E9h3BFP32E13eiM2X7347W26K343G21v323M31FT26F3Cl13Fv73eeJ3c482m13Hgn23G314D23832S031673H0k33Cc22q33P73H6d3GlG3g593Dod2323DOO23328E31YM1h3dX13HFu336m3h6a2fG2163epT3hEu3eP83C9E3h1132O9318n33Cc22R2513czw2361J1524Y33R03gJL26B3CE732MZ329P26P3c6922s32741026c33CB33MQ22m34bp3Bja1E1525M32vZ29E26J3dKJ22N28N3glb1n3GSk2oA2oc1s32vD357Z1R34iW1t1u29431BF1q317k27n2rO32EW1p23b32yQ22N2tS2uO31cb3Hb134bH25r25W3H6g3h1j31vY3D0L3E712513e8L3H7132fE21f21232d02En21e3fZ53bIy3c4i37S33CYH3dXw3Di23g683h233GrA3h253CeP3hhb3gf83AsF3gd33hmu3C9P3aVk35gv3DH01f3bn23e6735033Cy43aTv35013d5G3dS43dff36SZ34gx34CZ3HMw34D53hMu3cRW3De91s39853bjp35wf34cH37Wp367F3h7Y356035033EA83hmW34cT3hmW3HnD320d3Hmz3DCT3H253bhb34sC3H8N359y3EzL3c4K3hCW3cFb355K3hcO3h223bK221o3CiP3cFJ33W63di532A234LC31Au3bM13gu93DI528H3hOk3F7L2xL32Aw33Ph350Y35qr34Ch3At83HO33EcM33833EQR2ES3HoN33Ph35BN3hoq36SZ3hos3di5331k3HOq35443HP933PH34XN3hOW32Pp3gOI3HoZ3BEL3HP138Wr3HpE11359i3HOQ3Btd3Hpo3a0s3Hoq36Zx3HPo34UC3HPh29f23122421o1T3fwW3ClR3bjm3H5134cC3aKx3H5o3HaJ3CG23aLM354e24s24I2c73Glu3gPs3GLw173Gly21333sQ33uO3hG721x3Hiq3Hl733s623a2oV33mQ23c3G6y3hH33HC63FMH3Fjp3cTG3e6F3c4u380N29F3c3a3c5F3h2u3bUN31063Em52gg3hl628o33S626d37rq1023424m33On3HGB32q333gT3hAa3Hh33G433FQc2CN357S29f3Bl63bkd3hEq32L73Bgn24s3E2w32ev3h401P24v3EHV32jg3BSF21D21N25f34603462346426f3C69226326423g3DtA33ci31uH23m29E33PO3hFT33X533HZ33I1344326p3C6v3ckS3hQX3hrM2143Hf43f5P33om2fl3HRq3gN022z32RX3gn326b2Mm2Al32XG32SI319d33NJ311421m32nw32JG2Xi2YC3H3Y344D3hQ41S23M3et025r22833TC23I26Y24q23326l3CDi3hRH3hL821d33iC33US3h6P3gpU3H7F2223gt332Bw1F34Q4348X315332dv33Nx3H6I33o023Z2KC2Fy31X7313321F34pM21b3gPV3gmd21I35tD3h453H6G318731v93HS821d23034O63Clb3c4I3EbA2963c8Z3hrY312R2143E7l36UJ3c0S3gud3fsS36uJ3fK53dn93cce3hek3CLZ3gvo3hou2C71o32R83Bl13h263gkW3HFO3bEo21c25032443F1Z330e32LQ1X3Gf731b83hHD3h5E356Z3bjJ3HwC35453HdP36uj3H5k3fOH123e183eyg36Pk3H4x3Hn13Gb73Hcv3BIp3Cy43Hng353E3C2238bK3bK23e4H3Hwt3d923Ds43go93bKg3Aj83dmV3GQT21535Aj3clz2121N3gc63CA73Hxd3drc2DS3cuw21G34Cz3eBA3GG83CAf23c3aFu32Ns351D22J22y21G3G0z3HXD3Fnl2DS34xN3BhM3faU3c5I355K3FmU3gi23H8V3562356K28i3cAL22l338Z3BuX22L34dQ3BUX3Cyv2cx36nZ35443Gl23beE22l3h5g27C3alm3gxd3HsM2dE23g35aJ33mQ21633l03dwL327n33uR3Hqj3GPT3HQM3gPv23H3Do53Hu733S62663Bfx33Hx3Hsx33I22il1724833uH318M3hsi349d3En13gXe1t2343ht331hA3hIk3HH33gz53HVI354D3cjv1y27s3Ds03g0D3Hvf27C2Zm3cjS3EQS3Dna3Gue3F653G443cYJ3Cj63CJ93hVr32Ue3BXo33cC3aT81l1R2C738lR3feV3gr33csc36Uj3dD83C9L3GnB3CFj3HVF3DLa3CIM3ck13G1F3COX3djF3FcX38Sd25Y34BK3gLK33gc2673CdI2Vy3ch92f424v34Bk3Gx8321Z2673HIw3gT532E126F3doS3de73e793157215357j32r921734193HG23279324V22x21532x02Mn3gt91B3Gtb3H9V33GC22y3Gtu3hjZ32Yn2163h3Y34Al2NR3bFn2f82923hKZ21w33f333gC3hG432nJ3gX92v62IY3gT321T21f31bm1133253bS033ze31063GsE24Q3ep632d03DG92F83h3Q3h3S29a330q3h3v3dkl348S3hQi3Gpr3hZ53gLY1x324v31Dy25Z3GtF3gMY3Hgc1N26633gF3h6H33nz3H6k2Km2ko329x3fm13hFY1321B3FxQ2jN34W32a9329J27X3GTD3Bf73Gsp183HBH2hq34jv1b21x22a3Hlp3hs8356w22g32b831F632EK1T3C3O3gM92fb3gLy3gmd24V3E8l2Hr31153cDk1y22F21u3dFW3HJ53gmk3Ffq33Ny3H6j2AY26E2Qh33U63hZm2Vw3f8k31SV31xB337X3dUI34M83DlK27c39FX2pB3gUA34D934vy3bvb3Cle3eOc3hOA355u3drX3HoD3bHX3cy43I5T3EoB3cfq3bV73fai3Hx821O21H2ac3CcJ356E3BwN3CAE3hy51635EG35GV352I3bV23bio3CYP3GNT3Bh6354431Wp3Ebe3I0u3bUb3I6e3I6o352u354n3Cae3c283I693C893cfc22g33962QM3CUW173I703BvJ3CFC3FZR3GY73BH53GOV3ALg3DDy34uC35UJ34dh37T8330n2Pi2qM34KS22j23e3i6928H3i0u3bWN356p34Uf3bvX2b03hnY3bTx326A2BL37FQ32A5356p356E29631yf3d9031Wp3Gvz3A093fXK3f6H354p34qb3Aji3f6n3G3D34W9355Q296350A3CYj21n1q3byj3BJk3alm31Wp3BuB3ByF123I8S2fl3ApQ3BYJ3C283c0S3BYJ35Mb34Yu3BYj22h2653bZV33PH35GX2323ei13gVT21P31Y8357J3i8y3H5E3i8m2N63i8o3i8q3BxD3I9j31W71H3i693i8W3i6C2bK3i9P3Byu1B3hww3bY731ZV25524I162Cx36go1P1z34YB103aDT3BYS3I9Q34gT34dQ3H4G3Byj3g0E21432jk348z3HW9173I9L3D903i8p3I8R3BH63i8t1y3iAG3Gi232KV3iai34fa1X3iai25p24v2pp1935o3101K22a3a683c013dvF36uJ3BUb3c0o3bJk3bHb35Y731FE3alM3h8P35tq27T21J3D0z350Y3582355k34za2Th35gv350Y31793gvo350y3Ibn1O22F35t23Gvu33WS350z3Cfc23c1v1e35823I7o3hIf2cx35rS1021123B39fD1x3i9t3dVF3i9V3I8r3i9Y3Ia03bYy2qp3i8135dY3i7P3c542cx3i7d3H7p3eKi38Cs2i634ca3bvb3gcC2M223M3hZ33i3g3HQl3GLY26e3d6v3h7E3GMc33nj2193fXq33nG33Ni33NK33nm1j23U3HZK3h78349C2Vw3CpH3Hyu32653HUn3I3U2Ay23z32j9323F316s2FF34sd3GsS3gX93hg33CPe3I1822w3Dox3i4434391x3i4732Lm24l3hgf316124733i63hm32ag23y2TG3H6o3HqK3H6q3h7F21f21R32sO1b3BUA21e24Q3hur332v31x81J3huv103hUx3h7f3gMD3c6U3cvc24H33i63hqq3I2r23632rX332e32y13HKk2bY3hTp2FU23R344033lo2dE31vU21e3hXD335c2cZ1P3geQ3I353Gs43hTA2en24L22d3DhO32VQ32fk2f4324u3H7o3DqN3E7I3HvR3eO13c553bjR3fzO3dqF3H4x3F1V3hOJ2213H1x3hBW3eCI3C0q3HQ73clR3GkA3hWg3gnj3ecd3H8p3AsF3BUS3cIp3hHk355L3I81355A3Cy93GVO2QM3AsF1o1B3CEM35293BT92233HiC3Hpg3hif27c3bwg33Xd2th38Lr3dyw3CUI3DQN3IgU3Bt03IGw32Oy3gnN35GL3hHI32G83527357S3GyM3cD03h8W2Ne162Qm35gL356g3BOC3IAB35033IH234DH3d2a3gYb3GrD326L33FG21O349p3IAB3hi93Bv83g0E352n355b21224I3GYz35aQ3Gz1122133Cx03haC3bzC3G8E3D1B3i103c243I003FBc3DS63DCf3c9o34vY3DQi3H023clL3H253dvd3c9c3Ea83D2a3bn53by63dlU3cAR3Bk538IG2JT33ph332a3DCy3Bk83c0p27224y2E832Ln3bYD1P1W3fvI3IJT3C0Q2963hHC3bt037ZI3CoU3C0q3bWI3cf631Wp3Ik63hw2388x3ijN23F3BZc3c5225p3Ijw33Ph39WL1P22I3BZ53bgo2fr39hx3BeE3GZG29F35h73BFh2Cu22131Zo2w71n23G3EvR3i323h442TI2eL2Cu2jN3BSE2ef3dpc3IFN2C43fCS3CV925P2mn3IFJ1t31oR34Ai3gPV33UG329121a3ftf3fEG31ED26I3i5C32U932931T21G1y3bsF3I3q3gLn3gSt3gWz3D6q34Oz3hJK21m331U2Fn3if03Gjk3hfA3f5T3g763HLZ323D3g2G2513ee231d01i329v329X26B3C7K3Ie23H363C7A1l3dEs3GRx3gt63DZm33J433j63hUA2l53HGu3GWW32vW24Y3grU33793DWa3hgN3D3T2Fm2cp2Ax3hm73I3733W932E12233gTk3eE331vy26f33zM31wo31Z72ta33pX3i4t3hUy33NJ24v3GrU3BFu1o26m31bu3GMx3h7f35GA33PH26r3eBo3i1C3ig839lh32Xy34bR2642zh34413hzG1Q3BRt3f5p22P2Ra3hzA2fg21U24Q3g2Z26g23Z34192RC33YF3ggH3ckE2Ke3HUo3h6k1931V03IDv182383bgn3CKA21k3hti32XI3hTl1q3iM22aF34ks1c1n1E23G3H7o3AXX35013eAk3I04103I06113IPp3Gi33BN03iGe3IPt34iX3gKx32v23c2Z3BJQ3bV737S33bV03diA3BuM3544325D3f4O353j3Ets354O2By34gT3GoM3ibe31982Lz3Bjk3bTD35y72iK38wr3H8p3A4U3BuS3c5434W92Cx3bZf3CcP3Bv934CV3Bzq2f33bu334W93a4U326g34002vZ2123iqw3Ip525P2541S3IR53iBB1k1E3GOI1I34dV3eR43I69351d3IQX3Bh63aMX35Y7351J2f83H8P35Op3IbO3C5434kS350y35U23AFt3fBx2mY34Ks331k3gvo34Ks395u1o3Cy2353p3D68350y2Gw3Bhm3cne3IS01e3C1L34v23iS92173d0121R3IIH1i34EH3f1z3C1X1N34kS34ks35Ap317932nS3AJ8331k350y3AJ83Is62Ba2123irZ353B1e3Is23fAI3it63C0f3g3I1f3Irx23922i3bX23IaB3It93is122b2qx37t835Gv3Ite3i0i34kS3iti21y3HV93adt3isJ3is23GrL3itt352x3iTv3C8D354V324h3gvt3BYp3iu03iTP336I3blF354d3iU33itg3itI2a43Gvt3itn3itb3IUc3DYy3Iug3IU52aT22234xV3IAB3c4X3IU03bh63BWG3HW33b7U34W935Eg21122V38KY1x3hq33iRb3gc33BzE21V358o3gW23GkE3Ir23gw53B7U2QM3bxa21122q3555354y313V3goN3GYl3E1M34jq3iqq2bY3B912gN37S034cZ34DV3aUX3BzB3BZD3bHo23f34E03fZZ350Q2cX3aJ83ir234Eh34e0399o3IW13C1z23f34CF3EAV34E83EAv34Ed3fTd351D35151C330N34W9330m22J3HIf2QM3Icg21123H341P3BuA1r38Wr3bjK3GyS1z34Db3d9E3B0l32MT34jQ31D83btD3iVV2fM3gDQ3iBo3C9c351D3c1k26l2XS351d39Hn1o23C31712Pb34e035eG1Q2WC3Ftf3H8i3AJJ3aMA3hAb3c233E502GY351D32NS3Bku352x351D360T354V1G22t3GVT121Z3BiM1922w22121R1u3IxI1A3BjK3amX37zI3ALM3h983cC835xs3ich2273cQz2pB34Db3eCg1834dH3ayf3CSH3gZ834uc2qm365l34Dh3iXt3hnJ3GYj3eG23AJi354p3bJx3ecI3d5T3GZ83I7V35UJ338Z3Bza21n3bWN3GVz3GvK33BT3a0t357E32Y9357G21o3i8a35053Gc33I8B33Pr34w93CNa3Ize29K34uu34qb358a3bTy3bIe3I8k3BIh28h3bY53CDb21x1i38WR3cFt2gG34LG33CC23422x3Do52cO3hVw2Fh1m2123C3w31B93h1T1m3DOW31x432mz21621c32Jk1n21f3HK71m34jV32VO3FiJ3ckS3f213i5533y632RX21z33Jm1P22Q2B43C4H3Ho63gJz3GuN3Cj63cfn357S35bB3bJM3ewU3bjq21S3Gvb310635Mf3iyZ3Ho73a0C3h8W357S28H350B3by631yF3It13By63iCy33Gy3BY634uc356X31TG2Ik3GnV22122W3C543i7v3bjk36ZX3gYT2PI3cue3e6l3hYp3BEM3Blb26k2323fR53C3Z23b31063bmV35Jm3Gz93dsR3HS23AvK2473bF731d631d823H32yQ21Y313A1E21932oe32Sp1926225a2463Ce73I2f1b24Z3CzW3gsE3C9e21V3EbY3dOq33ZM3I1H1132IO31943GWp327632e93fxZ21j3heT3H0U3h3c32RX3iDV26Q3fxv3eEB22H3iNO3IEN1623Y325W32013e5i3cvV1P3cDY33XY27S2C32pa3D093esF3HSq21t22z348t3Ier3I3h3H6R3e9h3huh3huJ349y31533G2Q2bY3gN321X24z32yX3iMp3imR2KR3DU23J5c329X21w2153dO53Ioc3cHa22o1931x4344d1q1m32vb3Hti339r33dn2En23a33x43hgT3GWv3h1C1722y3dOo32od32Of193G4r3GAX3Dl83ijN2233dFJ3HPY3ign3iZi35223gXu33cC3C0q3bVf3ike3gnI3GY13iGX3IhV3IIH3Gvg3Go63gNt3ih33gRl3GOf352X2qm38VU3e883GO43Hi03GO73Ih33bVb35gV3IIF3ih8320D3bw13gVT2963hHK3bis3iQH21F2gn3IHw34h53J6z3GnU3Ia03j7e1537s335aj3bGN39Dj32nS3cxG1N3HXw3c7b1J3Cb43J7O3J6X3J7Q3IIC3bhN3IH53Hho3J7415399o23922d3II93GO53j8A3E1x3j7u35Gl324T3iIk2aA3BTs3gO73j7l3c242503Iit3Gp33IIw3DhV3C0Q3Dce3Eqq3BvZ3csR3cLL3Ha53c9e3iu62P7393W3bLr3c0Q3i8P3fmg3hWf3BT0352N317C3h4q1b3cT73clj314S3Di53J6K3G8I36uj3EWg3GFs354D35443Aj83BnA3gfg2Fr2k836Oi2jT2fR3Hpg22134Ct3CsN3h8H3D5H3E4s3c9S3JaB34DB3G3j3Bu43BuL1C332r3cD81e3eaI3j6g3Cfg38ig3J6j163E6L3iKw29e38wr23m3E2I3IEd2Jr3Ieg32Ce21O3f5r3imH2cz2343E5T3HIx33WB347f3HGn3f383INK3H3r32E131Zu3eEX3HNQ3Gd03hvL3DdA3eyJ3HVs3H0I3GNc3Fvu3cfR33Pr3EmC387A3C5c3bjI34ha34yU3gz93dLK3bUM3C5b3aj83bEE3c5h3bmA353b27c3dZQ323e323g2fF25G33F6317M31Yo3D6Q39tl2RX32lS2Wc32LU1h2Hx1D338231V922i26G25z2tH3Hz43iDB3GPv3IEv3IeX3iEZ23K3ee23i5833o024y33oN2ry3jCl2S21h3g2f3Hb934Aw3bMh22U2BL1V2OC32lc2f83i4y2F23cDk24F3HL53hqU2fG21d3BJ62Ti2253E8R3gdT3i1R3i1T29P2153Hz0317U1Q3IUe3C4H3fKK3GFe3F6935qH3Fmx34zm34vK39Dv21k320F3C8e3aTB34U834yu3bGV3aJW34uC3C0X22J34YU3Gyp3bku2xS34UC39dv1o1i3bmU3DDy2ds38Ig2AX355b3dcY34uC32Ns3jf23II53CY922j26034vk38WR21F33ub3HVY3e4i357U3J1S3bt0350H3HWz1422i2663H993Hpi27C22y23i34Xo3cLy3Jf73GXW3cm73GUe3FpK32ue3JbO3ikK3H8333ph3Aw33IrI3Goi3Cly2Qm3GyN3H2L3gNG3IK73cB1113DVD3CO33GH53d9g31m53EL12FR21t2282jT3Bnb32BM2373C4R3dfh3HoT3bjp3e6L3d9x3BWg3bF032x23Ipd3htk32xk24232J93hjT31YL27U3i5J3ENc32X13bqX3hLh3HlJ21G3hll21j3jDu3hkB33I63JD43h6k3hl132oy21B24V26o3dWO25R33lC3jdl2f03jdn3dkL3Gir31x53j1f24K3jcu3j533Jcx3Ieu3iEW31Fe3IEz3Hu53HrG3JDr33G232C13Ie23GLb24P3Inb34372323Hz93hiS3HIu1822L34ix3HVA27S3H4W3j6p22034VY374X25o34eB35h73Jeg3gZn3HwX3GZa34ow3GbQ143Ajw3I7134u834283jem3CZz3c4j35h73jEX3jeZ3C4J3jep3JJf32G83b2O32KV3GOP3hc83C883AVk1p3ipL3HhT3CY13c4X3GoP3iI03d8t3Jje3iGi34uc3b2o3gyO3HY93gyr2by34GX3FhD3b0k32fk3Bgv355z34UC3jF13dL83c623Aj831yf2qM3AJ83568330t3C9q1035h734Cz3EqY3i083GOP355X3Ia53gU235033h8W23F34dH3d8r338Z3DQb34DQ3gbS3HYK31C838wr3b5H3JKI133BT73JKl3j293bIq3JKp3FK0351Q34EB3JFE1q3bP838lR3fT43DgM3ips3jFM3BM33Jfp3C8l39dC22Y21w3hbU34CA3JfY3DRa3Cbs3erL3Ef621O3cr83H82338335Lk3IB81W21g3cX03jGC3EXa3fMk3bjK3gZT3j2V3dL93bT2103GPD312w3J0S111m32RN3DUi35EU3f693h8k33833Hbd3CfG2Fr355z35BB3hS03Jc43I133AFT3ftV343m3jIG1V2xC31ei3jMu32y02XC3HIr3hiT31FT21233Iu33JH33jJ3bIO327526E3dP33J0x2PP3G583IL822R3c2U2BQ3hKQ31B31B3GcN3j1F3g4r323z25y24623N3Dog3IDV32PV3cVV24s31ax22A33JI32K322C22p21F1v24s3HM83I0l1P3HmB3HMD33g23gRw3hUB3IES3Hud33q126r3j4g3Hke1531713HLb2Od2273IIx3HvA3H2i3ewR3DJl3iPz3buB3hNS3JG034Ct3hDJ3i0H3bKw3CUj2At23h2iT34sG3H263JPd3HEJ3JfL1R3JpH3IQ53Gj43hnz3Jg33Gb93e7o34ct3dVD3dVr2ds3BJK3HNb31z63Eoc3J2l3CcG3H813C1n2DS37t831a6320d3ian3F6N3Cja3EWQ3FtO3ErE3CrK3D0Z3jkY3Gbg3IH535Cp3FTc3Ft934dH3Ftd32NS3GNY2wc3ccj2dS35wF3HWO3c2Y3hVQ353e3BxH3By638WR3HX73Dia3C3831v73BNH3ikv3fmk32vV2f826j3hzK3ESw3BGk1924u3Ilk3DAC3i392L13G5i3GEC2up34bP33s522o32rx3E373dfw3bFk2B925l3Frs337924H3DHC3JB8337I3hzo3gSp3H7C3gaO3fz223H3Hh23FvJ3FjY3h1Y3Bhm3gOC3iH33GYa3ih61f3E4E3eOo3GYP3GYq3573350b22r338z3dqn3Bhx3bhe34SX31B0350535zH3iaw3hHv3Ea93bxz22W34273bYJ3jen3JL03GUi3Cy93Icz3AlM3iW929a163bY33J2b35733bw73gqo3GvW3BjK3akx37zi36ZX3JN83C5F22j3CsY3h7p3GzJ3hgz3iE733763i31316125y3ebO3IOq1N22Z3j5P3Ig73ChA21M3eRZ3Idf3H7G22y3hzS26s3brB21W211332A21832jh2Fu31xE2rP2353JjX3j653Gs03j6722Y1L2Mn3ifF31v31Y21P2ar33De3H7o3Gh23Caw3jLV3hVH3JPs3fAA3hwB3c4R27c3H8M3ECm3h8p3AUx3IQU2KK3Jf9356435053CUB35693bu334Uc3h8A1L2Ig1i3JSu35603IsH3c883j2P2gg35y73ixB2cU3h8P3Bvb3JVq3iYm355k34e83D2a351D35823GVO351D3bVB1O1E2tH1X3c4X3Jwf3IRr2DY3IUz3CC83h9b3H9d3bX33jFr3Alm2112Vi3Dhv22f3c3C3ezT31ES3Dk73j4b3F5a25125S3heX3h493HeZ334d2593Hki3jb41n3cvA3F5D3HgQ3Iem3HF53c4E3GjW3bEm3c4I3eot3f1l3FQE3DL63HfI3Clm3cOM3hfl3IGT3GXY3Hfn3H543gKE3ijL3h5Q3Cnq3f6925Y25n34Xf3bPA3c9Q3Bpd2Xd31142F22f422222127d3gli3f103c9323022a35tD26R3Jrs325M2en33Uc1I33ue1m22p3Jj63heF3FeI3d593GzT3Hs23akX2ZD3Hjy3CEe3cKC3j1C3EEC2ra22s31f83eR033Jt1X328g3jSc2L0212340f32sV340I340K312m3GT63FDh3Gsp2Ir3gJO3H1k3GA43C3z22S31X43dl03DY33F663JXY3Gk33jy03H253JxW3i093Hd03gD632uE28g3cFG3F6h3H9a3Gr43AVp23J3k0n3Fmz3BqS3j1t3bnu3D2C3EHF3BmA31Fe3JC83htG33SR312M32Qx32J62pq3H1g3DO53gjl24I345A3jzt2aw3JzV2Ov3gt62L22F83JzJ2kR21F33u1316731b533VH3gSP3EVW3dtS33F53C7k3K1I1621a32AI3fV22dY2393HIt33VK31Sk32v33bFO3i1l33wB3jBc312w312m21I31V233YA23P3HZk3k1u2Yd3H57163JCG3JPb3Di33Hnp3h213CC72FR35UJ3d4Z2cU34Sc3c4r3K2Q22D34Vy3ho23C8v3CFb21z21T3clv3Fvy2Pb3D8M2GG3hQ13cCg3Ewb3gUT34Yv3atb3bjy3Beu3GuZ32mu2123CJ63k3b3BvH21V38GY33833AYX3DMV3GV13jBL3DqJ3BVH3bv73HnA3IQ93JBo3CS23jQ633813k3N3d992ES3gkE3K3r3Ehe3CG23bek3Jnb3Jmr3dE63k2G2133k2I2313eVR3c3I3ggf3jzP29a3Jo829F3fRW3EIZ22N24e3gwI3E2J3Jru21233Sq2iI3eJ621S3ino32Fj3k2i2102j121C3c3w22731YK3hJV3EZ33DaC3Jrp23O341e3INt2aZ22334k63Boi113HV12781R3Js433Qp1h3hsK3bG4323h25X3bj232pT317Y3jMY3dLw3Dgs3cYn3buC3Dm835Re3iJA3gI23i0t3G3U3eWq3gbl3G1034aG3ewV3GUb3fHp3eWY3ERB3EwY3ByP3aTB3507325Q3Cae35mR3HI73Gub3iH13HI13i7b3JqS3J2J3d5j31VE3HY93D913h8W3GnD31BC35B83CO4316y356i3K1v3k5J3fZN3CRk3gUQ3Jq73bv73Erl3i673fTH3IX32By35qh3iX63GU23C543jl334dh3gGa2CU3Jn336ZX3bQi32aw3BvV3JAr3eyn3c5D28r21O3fk73jq831063Id13JAt2nQ35173BsJ3F5R2R332J73ius2nK2l531oR31xg2e835jM2AO317O1n2433h6g3K522kR3k541s33Jy3k1h3JZK3k1K2as2PP3H33313p3Jzk3K2H2kr3I3z3CGj103iP131CK3ej625E3K4t3cl33F5J26e1m3f8v340h3k1c32ai3BQ42B0183DpC3j5v3j5x2173eiI3Gjl3K2k3BMv31L33jGe3DJi3J1O35603I603cFe3GB93C9l26L3Jfr3AmX3K2i3Gvt3HmS3K9x3fUI3HVn3DVF3i0u3Gfr3kA33jFR3AvC22y22P3H9Y3bEO3c0Q3jbQ3HWG21D24524s3GpA3Avc1K1r3h1v3ECI35ZT3Hnq3hQ13K6034ch35443k2u3IgQ23f3JGK3GH133833Hq13BMz3eA13JFj3f713K353FWO3HFQ29e354425D2UH3k1b340j340L3k4f2b93i5g3cGj23Q33KL34az1a25K3e9H3k1u3K8w3K1M31Gm3GGw3Fvm3edm3Dy43Gxx3C5226L3C8L3aLM22Y2313HEE3cbA22U3GJY3avp3Cbe3c5f3HEQ334W2bY2313k9N3i8P3J5x25a33On3k1U3K1W312m3fgo2IG3k9H3kBO312m3K9k1l3jBa3CgJ22X3dox3CL331PR3BSf31yf32D03gCT3k9U3f6R3FQh3E673E473I0u3g3t22x3ka43DI53ka62KR3gVT3kDG3hN23JtA3J1Q3dy53cFc3kdn33ph3C2J3KaJ2Dy38lr3bEl3Kb53bEE3hrC34j53hrE32yQ3KC03K1L2pp31Yc3K1Z3K212b921832ai26031AX3kcv32AI23h2Fl3Je73k0K35223c8k33CC3AKX361b31063Jpr3cyN24E2xs33ph3akX32702bY3JpR3Bhk3B0l35bb3Aj83bel3Id13KE73iEx3dUu337732sC1N2243EiY3J411u3ec13BRn32YN113gDd3HjN2FH3FFn3g9M3BRj34bk3Bja3Jex1n26O3HSL32643JSg2hq2f034Am323H3iBP3gMk3bLm32Pt23y341E3bRz3fyp32e92co2f42ax329I3EtA3Hpl37173I793JVJ3f6934gX3F4S3iZM3hid3I083g6g3i6U353e3JVl392J3Gvc3GNn399o3BuS32OR3GVw3CbI3gVZ3bh63AKX3bJM32KV3izq34Dv3Dyy3AMX3b123kdC31Zv3Iij3ivo3Kgq3aLM352V3BZv31Yf35EG3i483GVT3bhM3kh73C963kH93bIE353p3Bjn3G3D31yF357b3G8Z3ir03Iy13KHI2Po3kHK3bgu3Alm3I9Q3khp357j399o22y2393Ci834zx3eR43BWI3jt43bwS3HWy351P173jKM3IZv3iVG3dGT3AMX3Blf3jE63Bt03Jtz33lE3JU13BEM35NW3bNm33C632eV315L33O533qe2ql1o2183ePt3Hze3ehG3HsY3HzH33N12Bq3iDv23y26Q3Bgn3kFo3GPF326A21233ut32Im1L316w21m2Ee31V31o26C3dKR33xy1p21q3296324b3K4N3Cqg3k973j4K3JSE3BSA3KgH3iNh163e3j31CZ15216319B3JUk3Gmd23b3do521u31Bb1T191v1s2203448317u3f3531ZT31Zv1C3iNj32sV3gta3H9t32lM2fv2gG3gTr3f5t22i3eIY3kGf1924m33WJ34b53HJ22cU3jha3hJv3ee9310621u3Gyd23c3eiy21Z3IYL33lH1l3H2y343726T3GT83bLF2nW21221N3htu21J3GHI27q31v032fJ1r1V33Wi338321u1I22C3fYB227335B335d348i32Ov3H6z3GX33hrR3IoS3dT721C2463eME2Gh22R142663h6g3JHP2ay24L3CPE2283Kku152593g1Q3CPj3gmX2ec3Km433oX3KCa2gG3JoJ1E3hUV2b03HUm29l3eMj33Cg3iOy2rE2DU2163cdy3Jv63C4931cj336T1t336V31ZV25F3FrS3KMF1626Y3Im63Ie72673h0T3I2b3Hl81V3geB3KN11D33Os3KNi3BQ53eS2325M31zv3h5X3c7832CV2183KM43Cn91G3hZo3e3F33LN3hKY34fg3bmJ3IB63BF133T331Zv2153E0N23B3JuZ3In63J663hGw3cHi3GmS316123533DV25c31dt31WB323E3J3K2gY3H3g3KfS3alK3kge2RF3KnE3C693klt31zv24I31w622y24225424634bK3HkM33Gc3hjP1023A32iT3eVa2AL3gSm3EHv33r83hu832NW327r325H2HY33cC228272316a3dEz3bK53kaZ1135mj3k0O34ch3eOa1k34s33Clr1b34m53Di634Ch39WL3K2n3kqs3kQU3Cm53KQw3cF63I9g3jpU3bEo39Hx3hPL1G34Ch35m73KQq3fEJ34d93Fqe3K2N3cIu34Ch3f1z3k2N35kd34D334Ch38k23k2n3c9O3EF23Kcj3bt03c0q21q359a3clr3iye3EA83ipW1A39483Cfe3iyK3CFj3kDY3IpV339F22y3g1w3h5d3d2d3iK53Kqy33Ok3D0q3AvP3Doc3kH43B0y3Gxv1338q73Ksh38j13K2N37j6338z3HDS36UJ3KqT3gUN3KQw3gun3cNE3gUn3hoF3h8j3hAF33833JVM3Bel3h8P36Go35353fK03KsX3e8O3k6z3kqw3k713i9g3H8w23c3Jf331Sx33vp3Hif33pH3hc12111M3HV93jpR3KSU3Kf83C4s3dck3a7z3KT53Jvk103KT83H8o3GnN37L03BUs1j21E3iz6153jvT388c3CYv3JVw3jEu1637l033xc36vv3jw231Bl3fSo3JK8356d3JL4173KrE36pK3jKN3j2e3DdY3gVi3GW63di53KRE21122u3ikr3ktv3bp836PK3cLj3KTz3HO93KT63KH03Ho43gy32Gn38DE3kU83KuA3jvs22b338Z3KuE3kux32Y13jvX3J4l23Y27C1O22d35SE3iYy3k6w3560356z3K7o32P43jPa2272321l34yR3BIq35aP3JKQ34eh3jqw35cB3Kwb3522217163FNl3c2z34iZ3Kwd338z34DH38e13501356Z3I7v3G0e3fnl31Yf358221X2383fnL3hyK1d3kwv3FnL34W93KWu21W35733I8K31Tc356C32P035qr3Kwk2r321K34uC336v3kWj3KVx3kWo2ce3HY93kUR35ji3Kw33kw53kuV3kW83fK03kwa321c3hPj23J34db3AvC3h273fku3Jlf3KXG3KXx3IZ1173KWn21N3kwp3I853fNk3FK03kWU3kWW3Jl03kyB3kx11a3kX33KX5357G3kX73kUb3KXa3kxt350M3KxC3KXe21q3ky13Goi35013kw532mT356E3j8f3KWq23C3CH91635fs3kYm3Ewq3kVz3KXK34DH3Hmy3iZu3JKo3j2F3kxR3jsT1635h7367F34db35h73H27348p3Ky021g3KZI3eSO3kWl2iL3Kyt32sR356C35nb3kZ43gUB3Kz63Kuq3kZ834tF3KZa3KUw3csK35693KZe3BXA3KZh2VK3BxW2172101L3KZm34dB3C1W3ky33DDK3KZT34UC3KzV23e3kw53kUb3Dlx3gYp3Iqn2cU3jwW33ph379e21124Q34XS3I5p1135J83kV733833kFA33cC3apq3bEL32In34cH39283ksv2nu34Xf3hNZ3Ij434ch3ksU3H8E31v33H1y3KSY3CFe3kT03CfE3i9g3GUn3KrY3Gun3G3t3Jn13kvC3jVN3gnN37Ud3bus3bvf3KUb3l0R3j8V3jFr3aqD21123q34VO3L0z3g0334VY3KuT3B0l3cA73B0S2Gn3B293ixg335d3jf9356E3BJM3L0Q3Cml3akX3H903bKg3l04330T3caR3H973Gp133pH36QW3gZ123s3b1T3GWC357u3GK53kFF31063kQ51q3hGY3hRm3BQp36Dx3KCf3FZ629E3Cbb3hq032Sf3cld3h5A3BKN3jBu3G3K3Hs13GzV3BtD3JU42f93kLu1p26y33f63Kn52Wc23C34bp3kpS33G43DkJ3kKq31zV3kkt1s2423EHv3ilC3Bo52Hm3eHV3j6b3j3l2353JFW3h9Z3CbG3hRw3dgl3dJf3JMM3i113d2d3Cd23EDk3l4m3iJ33fNd3CaS3ENO3Eo83l4T3g6P23f3dI03L4s3L3N3h053ECd3Ij63F3d341e3j4132ob2Cu32Fj3BQZ25n3H6t3Cgr33qV3cqq327n3iLY3IG23f2W3bRY3kPp1S3jRr2Mn34AZ1q2En22A35oj239340i1T3F9P317U24O3f5W3kOe3i3W1r2Kp2Kr3G5O3Db53ikr3aJx3j4G3KfH21U3iI93GIv3D4S25P24U2F83aMx1K3fZx3j903gZc2cu2Cx3duW3cA13G043DYc3L533CsU22z33x33hYR31ZP3GQX3k623bKs3Gza3JiZ3F7l3ipq3CiQ3c9L357s3bt63F4C3d5H3FzZ3J9Y3Bnc33cC36263hhf3gNn3JvP3j893iiN3d913jKY3IqD23126h3iiT3At83jx33IRK27S3L6u3HnQ3G6O3e513L6z2F83l6s3Gc922f3CG22m23aKX26032zK23k34dk23234Bp3d0s24i33i63Bmq3Br42A8216341P103fXn3DUu21w24r31D4317m3iMt2Fl21c3hLi161L23339Ft1L33152By3KJ72NQ23H3h9E3hr13caB3j6O3GCV3JpE3bL73Kaq34V23fco31722122cU3HC53L9d3kRW3CD03KR829F34gx3jiw3k383l3i3G963Ki63fB33cEX22Z36jG27c3II63cB53H8q3Cb83CXo3l6q3LA4153FEH3F1N3IHp3L9Z3G063lA231063II63l873Hs23alM3J4R3GxH3bMR3Br53Kg13i5h33hc348m34eS3HlI2GN1g3l932s231pg2bq2Nm31Zv1u23133AN3Bo732px3C5O2lc24y36Jg3DOg3d0S3flB3K4o21W33RF3h7O3L743kAM23f3gH43Ips21D25934YL2qm3At82wH3L9N3GkS3iGp3GxV3lBp3L9H389o2CU3AT831L13KE23lby3J6N3l9q3LC12M23l9u3EkD3k0O3L9v3eKe3GrL3LaH3grc3g6z3LA63aw33HE13L6y3EUm34c93duW3Hzw3jT63gR53gZ83CBF22Z3lCk3FkW3LaL3L553akx3Bsf2f83l8z3Bih3lAz3l943js13eQ33E063Bej21W25e3C693EYS3Br23LAq2a83e9m3klK3hjU347a3bgN3B0U3EVN341234123iGB3G6e3L9e3D2D3f783lbq2453Hc93l9k1W3L9m34Zw3i013ldV3L9Q3LDY3L9h316638WR367f3cxI3laE3HZx3l823LA93Gzd3dZA3lA63JwD3cb93L6Y353i3bU43LAD3eKE3gqM3LCw3L6y3LEJ133j373LD22it22G33N23kjb2Wv3lAT1C3lbH3kBJ21w22j344832d41o3ffq3l8L32tF3l8O29e21V3jNp31w73Lax3ld82s21k3gPJ32Y12313L9B3hEF3ijB3lCA3CF43Ldz3c1N3le23LE43Cp03Cjq3lDw3kAn3LFX3Lea3Lc83LeD3J6m3cSo3LEt3L4u3lCX3hXw3E5A3Lel34003Lco3LA13GZd3G6z3GQx3lCT3LgC3G6p22Z3lgF3Lcr3lD134b434xO3h5u3IE6321Z26c3c7k3KnH3JoL3JON1V25733vh3IdV3GMl2FL3LH233jK3J1j26Q3gsd31612333INO3kNu21X2jl3jI83ieT33Q1329F3I4s32H63Iny1b3EIx2BY3J1i32fE21b25K3bf73I1821I3hZ031es31v031ZU2aO332O3hlZ32gc3lHA3JOK1s3jNS1A2133LFK3l5l3h6c33j93gLg26P3d6v3GSi3hl82163kgb2De3FDh3D0s3JI33ckv2243jiu3Dl03JA83D8C3feA3IpS3iku29E387W3GXV3d0z3Gnf3jPy3fHg3Je93h4x3BU333Ph39t23h8B3kSe3C0Q3lj83clr3d183cfN22Y2Gn3F1z3Hd93Lj7352r3CLr3ct13e7O34ch3C9h3KTx3L9f3guN3kA23I8X34Md3d1p3Ixd38j13j6Y3L213KVK2GY3EU43l2s3gVo34uC38J11O2Qn3C8e3Btd3lJj1E3kTk3kTm3IgM3jW33eB536zx3jw73kh03Jwa3GNl3Gnn35L03bUs3a0C3IYm3c1l3C1n351d35l01k21F3Jpa358A3irp1934zI3iWH3Ft934E83dsB350Y351D34zI34EH3D1G25o23y1D39Dc21K1l35iO332r1H3Eb43B0l372p1C33WR3bZm35Pd2aR3gr9359I350Q34Jq319E331K331k21p38zj1h3C0O3jfB3llN3Hc12GJ3dAv3b7T3CC838e132CB3KSj3LmJ3Hp53BGN2111I38A73ci922F21w325L3h073Bnm3CPe3Li62aP3DoO3BsD3l4B3I3B3LIk32yO3i2A33Iq32yN2663k5w2de26F33uR3kp73jV13Kp93i29329H315K1632Sp1D3juw1r3cQE3gGP3Lhf21e2183hGA3i3o3hRR24z3iE933GB2393lFt3jXU3Le63jtA3FoD3cTb3dxW3LJ33GSg3hEg3lG43l9R3GNg3hNk3B903B92103ATv3BUS3Bip3J8A3iIE3iH63hhP3aTv3Hw73kHU3c883dvY3c88355V3l7q355J3iH33ftD3j7u3lOs3gOk3Itm354s3J8T3I7E3JWw3g9G2dY2112kg3jx53k863Ib834xo21A3Lhl3joy3j543h7F3I3j3KFv2723DE63LHB33JL32Fe24m3k1o32pt3dbh3Ln13d3q33F73h6E3HzJ3hT93LNY3gn026o33ZM3LHw1p21B23t3gJs3Hfv3hl83HLA32632jj3gs43lHb3lIe21o3ffq3kNU2703F8N3EP73JCe33GB25C3frS3GSE1P3H7d3inX3if933nj3e3d3GAF3lqJ3LiC3joM3JoO22L3Ei23aJX3H5V3iE72233LiY3hh33DJK3FmJ3HVe3bl73LJ42L4359o3lbn3jgk3GNb3Jbk3Ftd3LjD3KF1113ljg3Gyg3lJi3kB73COo3I7B3c5B22X3lJO3E7Z3la83Lrn3lRZ3EjJ3lJW352y3IgP3kV83kT43i0U3c9c3kVA34tW33833LK63KSj3BuS3d0Z3lK9338z3G4d3kw93kVp3lKg3lki3AAm3lkk3lRy3LKn3jF93F4A22134Db3Isu3er53LKS3bh636zX3JW93Hg83jWB3LKx3Dav3bus3BHX3LL13JMC3ll43dav3ll63Ll83bW33iw822r34cf3C9O34E83E6F3LLH1b3lLJ359734Zm3lLN3lLp3LLR34zw2Qx3D283lLW2nk3lly3C543lM031Yu2Ba3L6w3cp03lm531Wv1I3lM81h3lMA32F73Bwj3HDy2603Lmf35io3lMH3JX03lmk3IUE3Lmm3LuO3LMp3gz13Lms3jX53Lmw3BEM3BNL3F3D3dpJ3kkm33nJ23P3FLZ3D7d3kke3kGj163hK53HSC1J3HSE3kA43I402Ei32672cA1V21G33vJ3kD4343g3L4e2gY26q3gwS3L5L21f3bLF33PH3b3X3E713BP23hRM3gST3KFu3cVV25d3jXe330Z2LW32Jn3J5W2xi2IL2eN2Ro173hjx3hSw3KJg3iok1733j23bRy33923j4p317t25r2123H9Q3iDr3H7a2vw3DTq3g9m2703l6231x43L642KN3L663Ims3Dkr3knU233332231X53lq52en26D3j4G3GSe24525X3I5L27C25s25E2351Y3lHh33rL31BA31Bc1t2Fh26e3Kno3j4Z26O22h3DT71w23q3GdJ328A3j1F21p3Esc27s36pE3ezC3hpL3bt235BB35zt3K9y3kb53kV83C0s3GUN3eaT3CFe3I8p3D523lAE34cz3Aux3IQ83gz83l7d3C0s3CS23FC33bv634D53I623bub3K6v3eav34Dh3AT834CX3bha3GUg3C4J3Kwt31c836SZ34cH3KGt31EU3FAd3lyn3l4u3Lyp33Oq3CA43F4U3c3022G3L0c2Ds33pO34Iz34ct3ER13j9w22r3jkW34cW25O23K332S34Nd35AD1o3Ii91i34DH3ECG3kF03D5t35fN1O21M38sD34z838ir3Hd936zx3C0Q3C0s3kwQ3Dn93J2o3I7X3Lyv34DQ3bXZ23F34dV3eAV34e03lZ022l3lld353N3c123Bzl357327C34CH34dh3CXj3ksv3Is43j6M34gT34Dh3iX73KHZ3d2D3IZp3izZ3GNB3kHy3g3d3KH02Gy36zX3h8p35qv3iBO3i69350Q351d355K34ed3DYY35141E3Gvo350Q3m1J1O1z329O3AAM3C2J3M0e2Dd350R36ea2ao3c0B35qR34cF3cXJ34E83LYM34Cv3c2J34GT34Cf3Bz73Kl13M2622134Cf3D8X3a0C3bzM35AP35823HWY3Ltr3Aj83m1r3KIu28h3jmE2112303jYo3aAM3m0d3c0R3hCd3i853csx3J2o3lt52Gg3jTX2gG3DRg3i7v3GVX3CFf3m363M0X3L4U3M313m0F3m343C4X3m0I34DQ3m0k3iAI3C073Cbw3C0d3kh03M3G3m0z3K74352O338Z3M2b3M3G3m153c88350M3M0428H35Y333FG21Y34Yf3eKd3m0B38ps1337t821f22b3IXQ3lUD3EHB3igp3Gou34jQ3j1Z3loi2gN363k27T14338Z3Ft432OR2cX28h3bY03CUO3c0s3Bhr3EjI3LmC3iw334E03FTd3Khj2ht338Z3KF73M183llY3BIp3Kh7357S3Alm3M213IAi26L3kHQ3c6422Z3JFT1R2353luo2Ds36No3g2A363W3aAm3lZE3cs23lZh3cJ93hoh2dS3iWs3gJ93BIW2M23iBn3BTD26821Y24z2391X22G32RX3D0s21J34AA343n1V33Y23kKf21j3LDI3L8m3eDd3l8A25k32AY3D6q21V3FIy2ii2nU32It162132Bh3kJS133L5t22O3e5t3I3832E13koJ31eT343j3DOg22w1t34723e0I2m2340y22H3doo22e21l132I43feg3gxL31Xb3gKM3KCo35aJ3JCn2693de63lWr3HGl336Z32lK3I482FU3dPC3KlE3K5s32PS2de24K33fO3Lq91w2j126p33CG3iFh32Ji33vk21X24I33Ln2wz1N31322x33h3k3GPQ3Huc3Hz63h7F3gM03gm2103J4x327q3J4z2533CQf346H31G83brm32wl3Kp83GWx3Chi3cR03iEA3dbl3k963Gtb3ht531Zz21D337F163BO43gkJ313P1H3m8I23w3LQv316122g314d3j4121c3DfQ33Q43G2T317i3m7u3M8633Vi33VK24Z3Hgs3Gmt32vp3lNI3GwX34hl24W33R03kLa2cz3j5K32Bs319G3bdL3GeB337E2B032Gp3gT623w26g26I32J9313q343i1R25a33Vh3kma2bN31CJ21Z21a2HL3hSe2bU26Z3Bf72OB2Od2173k4X3E0N32Wf3LvH3KMb3LvK3MA32HA3kL43i253h9t3i271V3fP62K022o2193k973MAx1k3M9n3kd43Js83ESD31D42313M7U3Kbs314E32vm21s3BO725S31CW3jb73K26337i3Hgp3G2G1P3Fd03KFH21M3l8p3IkZ32Sb3KoY24m3eHV3187318R2ik23b32JV3lw52Eo2w23J5X3aVH3l5T33po2pi3FYt3Chl2ao3iMn3IDx3I593h6L33I63Bja3hiN326F33pu3fYF3cej3jGI33uC24M3bmh3LVo3Bs13gPe2Vw31wl193K973KNu24q3H5Y3LX83I3q3CDi3hG226C3L633iP32kL3Lx03l67163l5H29f1g22833Q83lwN3Iml3f5H3hSD21N26W31Bu23A32xj1a2ce2En1H329z2m21S22k26m3fRn33AN2462573fds2k023q2123lN931573GSJ3LH732643FLw29e34b51o3h3Y3gqe1i23b3BT03gu0103kUT21N3buS3LRi3lBn3Jpx3fuh35Qk34D334CT392A3d9H32UE25524W34xo34Rz27c31xY2FL38lR3Ex53Krd3Cla35013BUS3Kr83Kv83hn43DD935J83JQ03Fhg31c829f3B5H3KRb34VY3Eba22T321m3cFE2303BDM3Dd93d2a3lzQ34D53mFl35A83LZv38J132373bGn3m013M3W3LC93J6M32iN34Dh3Crk3Kqw3m0G3bZC3m3m3d633BW032R13lu928h351P332a3MGX338z338Z3bZ235Gv36zx3M413I7K21n22R21U31YF3i0u3BvF3m1D3akX35y73M1g2Gg3H8p3lkY21j2332263M1m3BI03jjt350Q3ll521K393w1I34cF3jA83c4X3m2N357S3M2P3By23By63M2R3C2i3Ic63cnE22Q21V350q3c9L23c3M251B2MR3M272ki3cTI3m2h3mIS21i3IWT3b7u28H3Ae83LuR1023N3lzV3AuX21f3BS53c2v3ecM3BN4310632iN34cT3I7K3B0L3m4l2343m4n3bWD3LOJ38hm34CZ3KVl3M1Y350122p21s3m4w3m3d3mIM3c0O356E22s21X3m513IW43K6y353N3M573KuZ2DS36tp21122p35pn38lr3mFE3MfG3c4n3iPZ3G073Ea83Mgq3dI93j7C3CsR3Mfq23w3eSO38gi358r3C0038lr3m172m232iN27S3mkE3Lmt3HrX3L9q3mfJ3DjM3Mkk34ct3MKM34Ca3mfq24B3iuT3iyU1K21u34Mh3bGo3d9B33PH35Vh3B1j2B43cyo3fEp3fEa2203j8F3Cbr3CFs35BB3bjY3COk3gZV3HaI3cJp3mkZ3MFh3GxV3mL33Dgs3ml529I3IBb3mfP2Dt2552473Hv93Iy91k2363c183blr3cSJ3mlI3lOC3MLz3MKG3ML231533GF83mm434Rv3Gr53mfq23L3iuE36Au3IB822s34G13lg23MJH3CN035Qh3L2b3mG13mFF34ml3CBx3L7c31063G073D5H3Ml73jFn3L7I27c3l7K3J6v2gN3AeA3hd93Jjd360p3mLp355j39873K3n3c7a3eWY3mk03M0G1d2183kWQ23F353932f135011g21d3BhE23F34Dq3DQb3gVL34UD34e03eRL3khJ2EQ31d83I7V34K53GNx28h3KuZ27C371q21124S35513lg23MmK3ML13Mfi3MMn3hWL3mMP35t23Mm71t25524Q2C735Dq1K23p2413le531723Ii93Hwp3CLZ3mn2123MKZ3i0W3goz3d2D3ftH3cJa3MNC3L7H31c83BeL3MNg3ihu2gn38NP3H8R34d539WL35013miM3jF63EWy3L20356234Ug3cCX2cU3iXD34l83BvS21j3kry3irB3IqY37DK35Gv3IwA3iR41A3mQ433fg25924l3gvT31023MQ83BH63bHb317C3kWX3c0L3Iir3IVH3bBB391421123W38nq3b7s3Iit3aO021123Z3C7x3mkD3mN43mKf3Mor3mM13MOT3MFk3IVM3gd33A4U3MOX25524631Bq1034pA3mfv24m3aTh38lr3Mpt3Cui3EBa3J6R3loG3f7L3iXD3DSV3buS3KRY3j8a3MQA3bH03Loq3Gyc3DSv1O24J34yI3Iab3Iye3J7K35733jfy3mIm3kwq3jka3j8d354S3dsV23925139vR1X31023ms93Dl131W72S43e1m3fCm3Iis338337w921126934Pb3MOp3mR53mL02fM3mKH23f3MM234vy3MM43mg83MKn3MM824a21Q27C3ac43MFV26038Uj3cI93gZB193jiU3hXK3L7z3caB2173cl427C35JX3L6T3cCK3KU93C8Z3IXK29e3MTe33Fg25N3a9c3Lg23FEI3IcG3g6O3Ij53MRO34Ch3mRQ3A6k3mRS3BEl3iXD34x23mQ53mRX3Gy83ih33MRZ3MOH3Ih7153MuF33FG25j2673iyd3Iyf3gY83M373MSB3mnq3m4X3mse3BU23J8e3mUO2392U93MqJ2153msn3bIT3MsQ32nS3mss3IIT372a3GZ125p36Lo3ekD36wo3h8r3MKy3Mt03mM03J6p3mT43MR93mL43Mrb3dI93fCE3bu43MOy23P339F35303ib826d34Ga3LG23ca121733963Mtr3IFu3GQX3Moq3mT23MmM3mKj3Mvr34CT3mMq3hzY3MvU25525b31yp34ss3MFV26n3bc33Lg23avK36pk3gR033Jv3Mfd3mvL3Mml3mOS3MWc3hdG3mWf3MrE2561U3D013hYx3mBT354U3mFY3G6E3cui3mkz3mG43KTY3mg63FBp3MNc3cou36Nz3MgC25m3C8l353b2My3E8839Ra34Z834W03Hxm3c8m38sd3csO3mXb3IPy3kU23g073i613IZT3cn03mXI3f1Y1i3La93mtK27c3mtm3mWU36UJ3MR63MWa3mWX3Mmo3mWD3I413Itl3mre37gX3i5n38Q73ib821h3cRD3IY03cBB3hC13lg93mw935aP3Mr83mwY3MFm33d63My13HRD3Moy24E3iaa37Qn1K21R34m53lg23EBa3Kqt3d8H35gL3D9h3DLA3I9g3d8h3eba22O33823DD93MZA21H3i6434d53MFu3BvC3K3y3mGK3JR83hRd3D5s3MyU3Mt33mT5123Mm43Mvt3MfQ26l3M2z356634B535493Mz93mlL21N3mgh3CBl3MgK3CBl3MIm3CBL356z3d8H3j943gqS37153BMx3kaA3mGG3Mgi3I0U3mgK3gun3MiM3gun34Wg3gun1F34tc3KU13F6934gt3ECK3f1n3lJZ3AK51u3mgF3n0a3mGh3gun3n0s3cFE3mhN3gUn356z3Ho922b3mJp3GoI3cc73Bk23bIH3c4u34ZI3N1836Uj3n1a3mGJ3Mgl3i0u3N0U3CBx3hOH27C3mIT22134vy3Hn621n3Mo23CY4395U3cbV3D5H3N273G8Y3cU93N2A3Gnr3HI13K0t3DE934cG33833IGM3n13352o34ct39dc3dl632wM3dfJ3N2K123N0P3n1B3N1U3i7A3N1w3I0u3n0w3cfE3N0Y3kVa3Ku23lgQ3MY73cT63l873bIW3h9h3bJ03BFX3gtG325C3k2b332a1H3M7g3ENv22U25Z3dKR3KOE2313KEp3L4i26632443Kf33Buc3iiY3GzA3haD3fbG3HR43N2L3MWg3HAI3EHe3kE73Bkj3duU32LL1022m218339H3C6F33FF339k2V13Iso2BQ2292103gyv26E3iNS3j453gY132a631sr31sA2152Xc3gqE32p023H3k4I34371s22y25c3GJI27q3L3i3BRC33Dh33v4349t23B32Hg27E33H93ldL311A2cw2cy3GjM3hyX33B922l3LX63m7Y349d3DX531Eh21m31tE3hKZ33Ph3Kn33LF52603e9H33rM32lg3hJ63h6x3BJ42D43D9G334v3Ldc3HlZ34773LvZ3ie725o25B1432ku3bOD32mB341n2783bOI3BOk341T341v313s3boP2Uw22J3BOR342322H2103EM63G7w26q3gX73L3B2153G2y29F3fDu33Tq2BQ2M933mh3ilR34c31634C52de32nv3fl03ej13Lqh3FEg32u832Sw1532sy332g32t1112603E2W3kLe3hJe3kcO3Bsn3J3G2Z031Sr2z5354k22l21P325l21t1z31sG3m7n33pu2dq32Pp31bM3H1d32013J4m2bQ2Co2gy24U3iEj21e21X3l6N3HJ93fuy312Y21i328G3HUH33LQ32013J0v2CU3lN43BSf3j4f3bQs3bWA22E3BO726W347j3Lpk3lnH3hGV3m983lb629e3C5L3hQ031Vb31vd2Cz3iFl2HC314F2nR33tG3H7O3DvD31023CK03Lea3kRl325L3l123CUo1137Y63cFE31023N333F693ku43Lkw2gN3gy534mL1Z3LSN32Y13L1D3kuF3KVO352X34Uc372P23923e3hW83Cne3l213bh63bTD3l0t3c2M3Gz121J3gZ33mu93Cc03gK3365l3hvm3lZT34Vk362O35ad21A2tH3bMb38wr3B2o3iYe3NA63gBs3Kug3CSK39L0346331YP1x3jl23l2K25P3MFs34UC39l0312Z34Xf3kuM37Wp35013mPy356D3J263K743Djc3hid355V3jK23jvw3nAb1639l023922E3dxR3Lsv3kup356j2203Lly3l0q3Naj3K7r1G3c9c3K7w355W3mnz350m3H5a3HQE35bc34Zg357N2iT35mf34dQ3AyF367f338Z35GX3nCq1835Gx3C8J2xS31yF39dC3bX13GVt3i8p3Kh73mO5193AYF35013I9G3Iai23C3bu731YF3Hov22g2GN36Gi3J6Y3KXp2203KRy3kHE3EKp35GV3gVN3Bu331YF3KUj1X3cLa1x3Nd2330T3M3d3bh33j2D3l2L31t03I9X34E03D1i34CF3Ae834CX34e83fsv3Kwy2ao3NdB3bIF3Jal3NDE3bf8310j3buS3nDv3m4X2kF3i9H355v3NdA357j3HOv22Y3kwH2AV3J0u3KY43nBT1536eA1p3Lt835d83I7p3C4x3kHw3NdY193loy3c0519355k34e03HMW3NE53aFr3nE728P3NAr3bws3Jwk1C3nEc3HOV3Eyn3mhP3C0P3dL83m5g23F3N9U3IaI3M0n3izS34Us3d533mIa3cal34j43KrG31aU1G34ED3MWQ3JPd350Y350Y355w34eh395x38S11G3nGC2QX395X34cV38vu3C0Q3n9U359i359I356e3hQ33nGM1i356E3iAb3NGQ3EUg3nGu22031EB3Ngq334x35851e359i2aO3Ica358235g33dcY3kWt31uC3Car3AKx3ngk1W3bhE23c3nez352j173i7P3KiM3nDw3KyX2103bHe2203mNv3I8b35B83C083Fw43k3e3gw43Car38wR1R24834Vk3At821f3GGm3lmu3lMw3mLT3gwg3cdI3n4U32a93E2I33dG32mP3c86354V3je33lwo343732Jf218345l329K28O2VW345p29a23y25L38SD3JyG3BPc3boh341Q341S3bOM3n6m341x341z3N6p3n6R342423i3l6B3D6G2ek3bJ424J3kBm3gWT3bRo3BrQ3h401n3BrT2gY2553lPw2De22P3n6E3bp9341L3N6H341P3bOj3NJ03BoN3n6N3Nj427U3N6q1Q3N6S3bap2f83k4L163h7N3JiV3m1e3bwh3ekp3E123FVO3n0L3h7U3kVB3D2d3e143cfe3fH73I8x3N1i3FHA3C9S3Di834dB3G8Q3CrX3dLB3d8T3JGp3nKn3dCP3iQD3BtU3NKS3BUL3nkU3N1h3f0R3CrP3nKz3D8s3nl12Ay3mGB3lfi3JDU29E3hra3DE23He333833hl432LJ3J4532p0347i2za339N2Hl3Jmx3nK93KE43kCk3CUo3E653LEe3cbd3CDb3HS2392822G3Gsv3N5q1z3N5s3h1g3h9Q33RM3n7b183hGM3m8731v43hKu33B921s3m9T3Gst3k8t3N793N5Z3njo32Oc27f31uE24933kl334u2OW3CPe3N4I3Gyv22O33773n8F23X3dKJ33RM31SA25V3HkL33923nmC103iDv24k37HZ27c25Y34A33N7X2Z63lW129e3N9325932ab32SV32sX32SZ3n7n3D3w3nJB2cz26t31Y43n8W1J23I3cW93dt824o23M320D3n493N4b3Bre349S339l21u3GKN3L3b21G32b9317m24I3BMH311B3Bwk3GJm3J5t3n8M3Cl63eEr21k22E3kbb3n6f341m3NiY3NjV3BOL3Njx3NJ33bOQ3nK234243CZV22h3f9s3NLL329E3h3y3mB733nJ25A3HGS3n963iN833I433vh3n8f193KQ53E713n662m23L3R22R3N9I3By43f2X32V72613K5f3J4525K3M9Q21E1p3N8q33LP1N1I33Lr2VN23Y26W3N823n843hNj3a6K1h3n883L5t32d021332011a3l6025R31853d3r2zr3J3T3dTV3n543nIE349R33dJ3nO831v03n763Bwj3N9d3cDK143MmY3Dl03gh23IYk3N9o3LCC31d13LSA3mGY3Kv83D0Z3gUn3Ks73n103h8l3B3X3l1w3Na22NK3BUs3N6d3Na63FAI3LSq3NBX3nAD3NAf3GvT3Bwn3NAi3DDY3L233Kdo3lpc3Nao3HVy35h73Dl63NAT133nRZ25o3Naw3BsX21k3NAz3bIy3jEl2bY3b2O3nrJ3kVJ338z399o3CsH3nb73nBh3LB733FG133Nbb32KV3L0o25p2591p3NSj3d012v434zw3cru3H8G3MNv3j2535733haC3i9G3KXp3NBv3NAA3JVR3NBZ3Nc13LkJ31373lsW3k6Z3ksp3Nc83NrT33wK1g3BGu3nCd3mNy3Iz1320d3ixU35B83NcI34Fv3nCK357J3b9021n34DQ35eg3nCt3AlM3NTy3gON3m043NcY3Jmh33fG3ibp3Iuk3jt63m4X3Nd43Ixt3h8h3ND93NEc3JA13NEF3ndG21j3nt33Kw72203hQ33ndl3bxa3NdN3IZv3GvO3NDQ38kY34173NDt3c543KHW3Nd83Nf63NeX22031WP3ICp34e03ngC3m2K3GFA34E83NrZ34cv3neA3nFk357J3nuf3NdF3NeH21j3nUw3NhM3CSX3ndZ3NEO343I34Lb22y2T634Uc31lH3BHM3nUj3NEN3nhh31Yx1C3nhK32Sp3nVJ3NUY3loY3Nv23NE232D03N1K3m0S38Zw3nv71D3Nv93nFI2G23Nvc3NVN3Nh83EL13Bt73NFR3d0Z3nfU34dV3f1Z34cX3Ne33gBd34cf3cJ03K872iG325D34ED35fN35013KQW3nG83iSk23F34EH3aXx34cx325d3nx522l2qX3nX53Ngi2B43LkL3ngW3bjm3nGW3M6z3Ngw3C4X3nGw3c9C3NgZ3hqX350y3nh31c3NH53eRU31cS3nFn1835823bAE3Nhc3D2E1E3NHf3nvW31gO3I7P3i873nVj21l1o3NhP3LlY3Nhs32So3hyQ3NtR3L2R3Nhx3I7E3ni03Ni22Th3Ni433BP3gP73Ni73DJn3aMX3JmS2b53np426e240345J3nIM33DB3NiO345o32e13EzA3M952FC3BrP3BRr3njJ3bRU22n3jhW23g22p3NIv3bOE3JyI3NjU3n6K3Nj13boo3njz1h3nk13N6S25b3N612CZ34gp3nK53mc92L03Ge532YY3BSA3EMh3NQP3N4C27X26X39Ui27c24s23X339f3jYg3Njt3n6j3NjW3nj23N6O3NK03nj622H31Ej3H7o3Hi83dVb3hR53Hhm3Jm93hAE3mxy3L503Kdw3cBi3nl43KgV3FaE3dCp34db3d5o3eb23khl3o0U3EaV3Iqj3ETR3C2z3EtT3Jti3o0U3FMr3Khm3O153o0Z3Cc83my32fy3NLD3bNG3g9i3c4U2FY3C3w313X33242EF3n4T3NP422Q3hRt3HeF3Hq03Nlu3HA03cEs3lG83O1W3gzU2M23BwG25D3ehV3o1N32m83fyQ33FP3IlD3N7s3GwO2V02683d0032Oz331Y3M7M3m7o3due3LVX3H1i3jxR3GT72F833S531sP31sR31ST2Bq3KqB1O25433FO3nib193JZg2683dzK2s61v24k25X32703Lf52CS3Eda3hIN32CE23d3Gn53n3Q3C8l3BxA3c8o3J3334Ca3d9B34413LoC3dY33ejh3KB93LCv3i7f3IgQ3J6i3GFh3Hxu3FkU3jak3h2o3CyN1b3dfj3Hd522y3la3352T3BHm3H5k3kgq3kFb3ikg3JAo22z3cXe33PH3cUw3La637S33Lco3Hac3fA33GK73C9e3hwg3Ik833CC35843beL3kra3O4D33nH3o4g3eRU3L873N4435443E2o3JVL3NLP1j24Z3mbh3jYy3Isw32Vm3jz12BD1M26r23L2th2o122s3MIn1V1p31AZ21W3bJV22622r2ls33ud3o5c3IE02Cu2261X2rF33jT2353hR03jz63lEf3H263h023IJ43kCi3LGb3Gnw3lA03Bl83l5539dv2313fpT3gQ531Lh2Pp33sZ33p22cu3m7l3m7n3NY93CQ43NyT2V032P023T3htX3F2q3f2s3EIy3Gqe3jp633uI3E9B3eq326U3hsS3BSj3j522bZ2kk348C31BO34793lUF329E3Ht63dKT3lwm29f3GXd3O2v25X343g3NnW3NK83gAX22Z3G9f3Csk3ENW3hCv3edl3jM829e3l163Bjp3hDN3C523hxq3edW123hXu3fEE3LCr33Mc3H5I3O4A33Cc34Gt3h583LsB3Di53hdn3Kdv36SZ3myv3Hvs3BiH3j9N3Afu3DVo35QR3Jj03d5U32jv3gH73Gk331Wp3Mg63KGq35Bb3id13C5H3nLh3FCp3lf526U3nNm3o583Jz03Jz23o1S3H7O3m5A3LBN3HH83Ips3iD13HS23o233IE93DEU3fxq3O003No62nq3j4j3o2N3eNH32dW3o342282342Fe3gpG3IB632hG3o6M3m7O3n8U3Hlo3iLd23Y3DkJ3nib32eT3J442V03NPu3CVc2523n523G863o2u3hRi33za3CVv21S1O3ePt3o2Q33JC3KcN1126924433393O3b347Q2I73l6g3O3g33cc3aTV3O3j3N3V3CsJ3o3n3mtn3hwj3G0d3dI23g1E3AM43j6h3o433HDY22Y3Fbb3Cb33h4S3HHm3cFB3c0q3Nkj3l7B3HNK33PH3LMa3jaq3O842dY3dUV173ikb33cc3gXz3gZ83IK93LAi3BEl3j863HIN3cI83o4K3n3w3dR63cN63o893ObW3o4r359e3o4T2233mn122z3fku3oBZ3o4Z3dWk3Axx22G3h3y2e031C121b3M7Q3Md233C63Npm314G3j3s335o3LV21B3fId3Kl93N9e1n21W3Bo734b53e5L3EIj3cWX183Ec13n8R3Nq03nQ232nu3eyR328i3C453CHF3kJK32643KLg3kFv2593DP3324H32PI23b3NOk3h483F5J3eEr3I9e3cVV3Lgx32SB34Bm3I4q3h1M33CD25H33kl3kFh26T3C7k32o429p32o7313v1m3im8310k2373dg63E5f33H93I2D3fL024l3bf73lN12313G5M3DoQ3H0y2Vi32u53GAm3do532Qn31Zj1726124R23033Y732d931Zf2Sx32kZ3oeX22L3n953M963MA83In933c63cpb3n8y316021e25Y3j4g3c3i32j93nNW24z33vh33Uo1E3IyC3Nk93Cuh34cH3n0K3lCc3ekR29E3Mlj31YL3Ntn3j6o3Hac3N9u3CF63NY83dN13Hhc3lOH3mjm2Gn38vU3BUs3hq33J8a3iq73ms03hHo3gYC38VU3Ny931x41x3muh3lP83mso3LpA3L5621121i325l38LR3Asf3Mp93Fvq3Kdw3L2F2gH39FD3MNk3k7j3dl83bgv3b123LKk3dL83GYP3Iz83J8B3LZt23q153IBn21K2113o3f3BiI3oG31W3IaZ3i933bxz3CSb3iAS3BWS3Ki02963iV83k723ll13dv4350q3j7A34ed3FSv3M1r2aO3Mir3hd523e32KV3OhY3BjM3oi03J703oi23nFh3FbC35153K81358O350r3M1o32K234Kt3m2c3IC6355q3bwi3m2N3mIQ31yy357u3DCy3C263N3W3N9u3c1z2203NY83C1Z23C330N2CX3JA122Y3iAK3byS3cT73oix3NhD3Oj03oj23bHz355W34cf3c2x3iYk3m2N350T35823GFa34ED3G4D3bWg3bt73ISx1F22Z23E2XL34KS358234fg325d3G4D350q3IBY2F33OIu3HoP3eYn3oJc3nFs1W3OjE3IHA3ojG3IWg1C3OjJ34CF3m233ojM3CiU3Ojp3jE93oJr3dL83oJT3C283BgU3oJT21Q21b3oJx2hV1D34Ih3oK13JE93oK31g3OI53OK63nHJ2603ohF3aW321f22p39fd3lmj27c3atv21123a3aW73lG23ogX3oG23OIy3fog356E3OG63cLr3BuB3Og83mRt3lOJ39Hn3oGD2w83j7a34dH3j723mS13c4j35yy1o3M483IU91C3gnS3caX3GOC3CFS3h8Z2iu3Dwj2773GOu3HHN3BvV3MPF3Iys3ceX32Mh21121t22s3jX521Y3id33JbZ33cD34bp3Idv3nLR3FP93LJ43HAC3DF53lj33oCc3l3O3gzh3dUU3cr03omw3O1t3Gf13oFY3On33c5B3oBi3DQ13on23nLZ3l5537Wp3dWF3Nlk3O6R21924Y25g2b43OF33KuI32ky31zI32L1173MEo3Ie93gQ53Eq02DK34083Kp0320E2Ix3gWl3epo32yx318734z332o83NqM3OFG2473I1G3GsT3L5a3f041D26M24j3O083nJs3NoT3NzI3now3o0E3Nzm3O0g2703D3o3CGR3MEL3Imk31D43BlN1n3jL43I233KL52wu3MbL22Y3cDy33S521632Sn2ZS3e9H3M8m3M8o3I3Q33F63LpZ3O9h3MD23l4D3Kpj3cZ825W3M8r3JOz3m8T33q13M8v3Gpz2673e2w3GQE3H1H3Md433O03Lpo31tk2672433hQH3gRX3in73j673g1W3Kjo2FB2FD3Kjq31zp3kjt32xc28a3kjx32AW33Xb3Cpd3lB33lVI3H623l3632it3Ko82dY3L4A2T7348Q3G2h3lQS3gLl36J83HRm3NQZ3N3q324436fm34313KEx27s3kxx3M043CFV3Kf43N3v3m213d8H3OgG3n0L3J923C953i693cTd3EQL3cII3FH53eaC3di93aW33cto3MVT3hx03kcI3kE53CJX3M323oRE332u3Mze2Nu1F27s37s33lG93hMj3iZO3lBy356E3ORJ3gF4355W3OB33kRv3Gz93C0q3IJ03D173E3Y3L4n3O663nKa3CSO3iZ03n403LzC3JK43cfb3bzo3F6n3o4S3clZ3o1f322s3mY53Gk53gzB3MW5359F3D2S3jF122Z3OT2331K3d2S3Jf73oT634XF3Ot83FbE3jGc3Otb3D6e3d9v387w29f3OFZ3E453oLL3IK42Fh3jGf3BeO3IhT29e3h8P3Cb73kH53jf93Oly2CA3L013MuL3hHp3Cb71O2fD3GvT3c9C3j8a3e18338Z3BN33b0l2QM3KuY3iIT35Lw3ICh22S3iu638lR3ENX3hox3IBv3fhY3cCw3Ot13otC3nqA3Lgn3D5U3OtN23f3kSg3j1X3IhS3J6u3mpo3OH23Mq53IIM3oTY3NUO3ogh3bU23GYc36Hc1O2202283Hht3ca13I253fKA3MJ033833bZ23OLG3olI34z836fM3mxs3iho3gk1352O3OsP3buj3mN93Jj93oss34wI3oSU3oCA3OSW3nLb3m0Y3hPp3fHu3EjX3OUv3IKj3ClR3oLp3J1X3og93IXD36no3L1Z313U3mUu3lP93J8W338335yy3fZ43ofR3gKh3c0P3oTG3Ot33fBE3oT53OT73nQA3FbE3Ota3OWU3D2S3otF3oWy3gC93oTj3Onb3CDB22m3d633bIZ3BnM3ehV3JdG33Qt1l32aZ2bq3Jur3o833htW3L5b3KOy2333O613JxU3hZX3EDn3gf83E6f3IJj3CN03BKA3bES3jrh3C5f3O8Z34Cb31d83bJ73hGN24k3eE23lfF3Br524z3f8v23A325Z31Eo22G2993jCp34O232zd314D3NP71B21y32fI3KoY2213INO32MZ3J2i32FM21R3oO33nul32Mb3BS631bP2831d26924W3MRH3O093oOO3O0c3Boo22k35b831uM21S332T27R3aS71t2v23bWA1922822m32mP2eZ328U3IHc3fVJ3kRu3l1b3igc3eOc3fzH3CYG3Jr73K3V3K6Q3Ejt3iz03M103N143m183Aj83lt622O3NtG35St3jKF32g83osT3Iq91F3D8O3n1L316s3mPL33cc3BNE3Beo3Nlf31D53ox63BeM2Ik3Ox92cu3oxb3JdI3BP132rX3bNV22L23H24Z3ooz3Bj421M32hg3l5C32fM24X3bsq33ce3c6933qf2b03O2k3Cej3m6o22P3Ozn3oXn3h213N9s3BtE3IjK3L153LC33J9k3mFV3M9N3HVY3e133fPg3e7P353N3oxs3Jc03n1N34C934zi3jbi3IpX3jFK3F6934zi3K0g34Cw3Blz3djf3gky3N1M3Kiz3bM73f0W3BMA2jp3o0533f622Q2Tu34ve32j93p13326A25b3evN29g3l8G3OXF27C23H21t3dOo3P0R2oC3lf43bp32od21C3h3y3K2031yl3i3q3O7L31fd31fF26Y3BF73IuE22L34y73bj93bjB3gjm3Ci83KEQ3bHv3eH03k0t2Fr34cR3hdu3gj53fVo34J53CsC34TY3EoT3bHm3D5H3K3X3AJa3lSH3519331j3MJc3DY43F4W3P013JJM1234Cr3DRw34d33m163eKG2nQ355b34e83j223Dch3k773HYa3gBs3AjA3P082qm351a3K6n35263jJc2bY3Aj83GV93P053lcE3a9k3bNd3bj63Bkb3oXW33LE3k863kFE33703hz03Me53lBB1024026g1Y26G26R3ofi310631871L22X3cDY3oYp3koY22F31S126221a24U3P5e123C3w3P2m3KLF25x34Xo1a21J26z22C24v3P623P643P633P653p6822C24832a2313F2Em313I313k28A25231Tj23t24y22A26426S26n3HL22Y7310J24225223z1u26S2323ITL3Bmv3cfm3HW13J9y38jt3F6n3BN63CY73oUu3i7e3p4U3i6W3ihd3cCV3hx83Bih3M4L3lZR3gYJ35433p7B3C4J3bHH3KWd3j7d3jkb354N3CCU34zI34Dh3g933K7R354n3j0a3BH93gpA353N3p043p3s32jF2233cLv3Efm2Fr3Imq3I5x3DI43dDW3CUB3j283nTg2Zm3iId3DqF3I88352B3JLj3i0531y62CY3CjT2Gy3bgv34ID3jw33i6i3dRs3BuM3i7122z3fG03IvO3aE82Vi3kIy3C4j3JTQ3Csk3P8D3E6O34kW32Fk32NS2Qm21p21q2gn35Fn3jkv3K4436pK3MpW3Btf34Uc380n38wR3p0k22f3hyP35Bb3J0k2Fy3l6b23m3bq921P21j1723Z3iLY3BOz31B131b32F526q3dkr3P5M3BqZ21R3O7622p3bqH3bQJ28a2BB2223Eea32R121c25Y3IL821233Op3eeX3kdt353j3Fju34Ud3d8O35393gYw3j9v352U2513LrT3Alm33392GG3gyi3BJt25N3J8E3BHb23923G3mfx3nL73nkr3L9P3J6M3jLL3P4m3c2Z3MK82553C2p3G3v31X43nAE32Lq3m4I3dvN3dGT380N35Bb3p9O3lpg38Wr3G563o293l4B3n7D3In33BS03CpH3MB71S3oYK3n8v3P381221v3OYo3BqY32fM3Bgg3lDU3eKe3bmy3FPg3k0T3cex2203jr63Lys3c312Bq3Bt73I6y35123mso3btA32g83b123DmV3mne103a9K29f3p0I3HR93P5231d53l893bM13mx33jmr3Opj1c3mE33lWN3Cvl3OxJ3bQz24X3HG13kFp3E2q3Jzd3MeZ3HL83Lq73lgy3j423LI53kL13K943icH34j13p3d3cr03GsP23g3h9q33vj28a33oJ2hF324w3kPb21e32wx3o723LNG3OfA3n973In93cpe21C1f34l53jYU33CC1W3iIS3bfT3nJC3N5222i3INo3OP93OPB2213inW3LHR3LR01B2Fw3BqS327424Q33c6329C31De24L3imO3Hg63I2R21f3gMw3mds3liq3OxF3bli1w3gyY2My3Ii91C34N527c2233ju23D6Q3CVV3loj3bp829e21w22K34Xc35bf2353iXF3PFP3pFP3PFR346g33FG3AK522021G3Mmy3D6Q3pg23PG42M222w2363l553pG02M23pGa29E3IR73PGg3pGl27c3Pgi3kvs3PGb2M235553ivM2F93pgu2L43PGU3PfR1C35SE2252373c2U34003dq12353ph422x3pH63pgJ3370152312GN23121G3PgE35bf3BP93PG83C8z3PH92Cn3phm33fg3pfY3bEp2gn22821n22631Kb3C1S337034j423723J3ajd3C1s3LRw1C3pi32hB3oKg3PHQ3Pfr1223F22p3pgD39OA3PIc29F3Pgd103pig3pII3pIK3PGe3pgN2gN3Ixd33rq23f230322k321c36Lh321f22t35822203NZf27X2233Jyk31163JYN3JYp33dN22O3jys3PeJ1i23h22F21624i3Pa131AZ3pa331b43H1l33cC22w21y336J3OqT348P32R7348r3l8p25D3E8L3OPe2IO2x33c3v3H7O3iz03kqR3h1y3F7f3FW73Ow83cm53f433Otq3j6t3L7L2GN3BWG3P9G3eoa3jk03k6t3HI03lOy356Z3hiA3Hic31793OVI3ha63gZ121h31X43Jls3cBu3o653N1627S3IW03Elr3lKC3L9t3nr53c1W3n153OnE3MPE3BJL1z3k0q3ER53Pl73P753En43P7731cF22533FI3p723FUi3bUM3IJt3n1P3hp23hN71F3PLC31063P763ATV3bdL33fI3iVd3c4r3HNI3FvR3pLn3j7C22L34vy3kRm3K0p3hwm3EoH34vy3aVC367F3J9r3myY3isU3MjI3c5i34ZI34D53KXx36Hp3Bkg2fr34Id3k2s3iGp3F6n3c0Q356z3Cs23K6B34ug34Yu36sz3IxD37F53gY63K7w356R34FY3Ou03D5t356x3Bu328h37F51o1y3Iaa3Iv62G3356c3PN23HyI2mY3nhu3P033bhn3KIU3p3n3Ksj32sY3IuT34vX3cbt3n2m3eCm3n2p388X3clj22z21934qr33833dsr3gWD35bB3BmB3bSJ3p123koY26o3D4e3Boc1g3Ei23oai331U3p5i34963kGm33Cc3pLn3Ear3G0Q3f4S3f473O693j9Y2EQ3obL113bZO3bm63CdB3dJY3po53JmR3GRu3p5I22m3eeA3Ii923c3pO73bqZ3C493Oah36Hs3poi27C3pLN3gh23OBj3G3U3D533DGy3hoc3bM43Pos3Pou33Cc3Kj03gIb29F"),(#U-((176-#("I am leaving CS:GO and giving away my knives. Hurry up pick some >> discord.gg moonsec"))));local function h(e,n,...)if(e==649001966)then return(t((((n)-712524)-48283)-454308,651343));elseif(e==535318271)then return(t((t(n,532693))-953992,780337));elseif(e==564342319)then return(t(t(t(t((n)-809594,296865),927552),613935),43812));elseif(e==29441446)then return(t(t(t(t(t(n,618809),187478),58628),749630),444115));elseif(e==444886261)then return(t(t(t(n,99112),563266),589440));elseif(e==758098103)then return(t((t(t((n)-159410,590005),34200))-149326,187340));elseif(e==348968146)then return(t((t(t(n,441476),264807))-433028,410125));elseif(e==704751908)then return(t(t((n)-456981,864009),437407));elseif(e==662495255)then return(t(t((t(n,149087))-973704,563789),813191));elseif(e==6368081)then return(((t(t(n,866127),204840))-512414)-114291);elseif(e==169158980)then return(t((t(n,831097))-644809,354191));elseif(e==744039523)then return(t(t(t((n)-899331,824498),511860),210714));elseif(e==719921999)then return(((t(t((n)-105393,981724),101810))-65440)-419936);elseif(e==61162758)then return(t(((t(n,126320))-897210)-173111,763974));end;end;local function n(e,n,...)if(e==368092490)then return((t((n)-359557,325867))-48376);elseif(e==542288315)then return(t(t(((n)-875318)-898375,756684),938282));elseif(e==552586562)then return(t((t(t((n)-284110,454956),537367))-617172,348425));elseif(e==612478771)then return(t(t(((n)-990936)-656442,817444),459996));elseif(e==380786844)then return(t((t(t(n,299714),942552))-861977,328504));elseif(e==566320159)then return(((t(t(n,505680),898718))-466263)-446974);elseif(e==898790465)then return(t(t(t(n,266356),186622),895227));elseif(e==219977209)then return(t((t(n,287019))-417109,333649));elseif(e==815270831)then return(t(t((t((n)-63330,229594))-414699,300509),743610));elseif(e==833311065)then return(t((t((t(n,297907))-280987,154130))-297443,526445));elseif(e==988787140)then return(t(t((t(n,474590))-116375,305977),813615));else end;end;if _ENV then _ENV._ENV=_ENV end;local n=c[((#{258;511;(function(...)return 825;end)()}+902627201))];local i=c[((#{528;785;193;579;(function(...)return 654,591,300;end)()}+708256300))];local B=c[((#{468;429;120;753;}+458835296))];local d=c[(21591876)];local A=c[((148932297-#("MoSattout")))];local m=c[(140361372)];local r=c[(719847174)];local l=c.H0Qwk0iE0P;local function u(n,e,o)if(o)then local e=(n/d^(e-l))%d^((o-l)-(e-l)+l);return(e-(e%l));else local e=d^(e-l);return(((n%(e+e)>=e)and(l))or(i));end;end;local function i()local l,x=g(E,o,o+d);l=t(l,e);e=l%n;x=t(x,e);e=x%n;o=o+d;return((x*n)+l);end;local function d()local l,c,d,x=g(E,o,o+A);l=t(l,e);e=l%n;c=t(c,e);e=c%n;d=t(d,e);e=d%n;x=t(x,e);e=x%n;o+=B;return((x*m)+(d*r)+(c*n)+l);end;local function r()local x=t(g(E,o,o),e);e=x%n;o=(o+l);return(x);end;local S="\35";local function m(...)return({...}),T(S,...);end;local function z(...)local z=c["yk32jm"];local B=c.Uv2DvdPtjL;local w=c[((#{737;197;700;(function(...)return 732,297;end)()}+148932283))];local F=c["n0g3HPx"];local A=c[((#{346;513;371;}+21591873))];local T=c[(905724386)];local U=c[((#{990;382;490;957;(function(...)return;end)()}+273309998))];local L=c[((477086961-#("This obfuscation string was sponsored by NordVPN, the easiest way to protect yourself from nonexistent cyber threats.")))];local n=c.H0Qwk0iE0P;local Q=c[((1182000-#("faint#6969 is a big skid. wait..")))];local m=c[(902627204)];local _=c['x1SUAZt0'];local h=c["UXdoTN"];local P=c[(343335124)];local y=c[((921334553-#("Remember when psu messed with ms? ok fed is now head management")))];local q=c[(353214665)];local C=c[((458835395-#("sometimes, I put vegetable oil all over my body and slide around my house as if I was a penguin")))];local W=c[((#{655;}+258153758))];local S=c[((791106669-#("cockie")))];local l=c[(708256307)];local function v(...)local s=({});local c=({});local I=({});local Z=r(e);for f=l,x(d,e)-n,n do local i=r(e);if(a(i%h,A))then local e=r(e);c[f]=(e~=l);elseif(a(i%h,C))then while(true)do local d=x(d,e);if(a(d,l))then c[f]=('');break;end;if(V(d,U))then local l,a=(''),(b(E,o,D(o,d)-n));o=o+d;for n=n,#a,n do local n=x(t,g(b(a,n,n)),e);e=M(n,m);l=l..p[n];end;c[f]=l;else local n,l=(''),({g(E,o,N(o+d,n))});o=o+d;for o,l in H(l)do local l=t(l,e);e=M(l,m);n=n..p[l];end;c[f]=n;end;break;end;elseif(i%h==l)then while(true)do local e=d(e);c[f]=x(b,E,o,D(o,e)-n);o=D(o,e);break;end;elseif(M(i,h)==B)then while(true)do local o=d(e);local e=x(d,e);local t=n;local d=D((k(u(e,n,_),(A^P))),o);local o=u(e,h,q);local e=(G((-n),x(u,e,P)));if(a(o,l))then if(a(d,l))then c[f]=x(O,e*l);break;else o=n;t=l;end;elseif(o==z)then c[f]=(d==l)and(k(e,(j(n,l))))or(k(e,(l/l)));break;end;local e=k(x(Y,e,o-T),(D(t,(j(d,(A^W))))));c[f]=a(e%n,l)and O(e)or e break;end;else c[f]=nil end;end;local o=d(e);for e=l,N(o,n),n do s[e]=({});end;for g=l,o-n,n do local o=r(e);if(o~=l)then o=o-n;local p,h,t,f,E,m=l,l,l,l,l,l;local b=u(o,n,w);if(a(b,B))then elseif(b==A)then f=(x(i,e));t=s[(d(e))];E=(r(e));elseif(a(b,n))then f=(i(e));t=(d(e));E=(x(r,e));elseif(a(b,y))then h=(i(e));f=(i(e));t=(x(d,e));E=(x(r,e));m=({});for o=n,h,n do m[o]=({[l]=r(e),[n]=x(i,e)});end;elseif(a(b,w))then h=(i(e));f=(i(e));t=s[(d(e))];E=(x(r,e));elseif(a(b,l))then h=(x(i,e));f=(i(e));t=(i(e));E=(r(e));end;if(a(u(o,y,y),n))then t=c[t];end;if(u(o,F,F)==n)then p=s[x(d,e)];else p=s[g+n];end;if(u(o,B,B)==n)then h=c[h];end;if(u(o,C,C)==n)then f=c[f];end;if(u(o,S,S)==n)then m=({});for e=n,r(),n do m[e]=x(d);end;end;local e=s[g];e[-L]=E;e["PGMfo"]=h;e['ZYTnpfszD8']=p;e['SuUZMlo2']=t;e["BPY"]=m;e['suSezrg']=f;end;end;local o=i(e);for e=l,d(e)-n,n do I[e]=v();end;return({[Q]=s;["Dyg"]=l;['pnyFT']=I;['vSk4s']=Z;["SWbtuPFJup"]=o;["bJMkTGTqSe"]=c;});end;return(v(...));end;local function B(e,u,i,...)local n=e["bJMkTGTqSe"];local r=e['SWbtuPFJup'];local g=e[814111];local C=i['\86\101\99\116\111\114\51'];local a=e["vSk4s"];local b=0;local D=e["pnyFT"];return(function(...)local w="BPY";local d='PGMfo';local o='SuUZMlo2';local n={};local E=-(1);local e=(true);local l='suSezrg';local p={...};local x="ZYTnpfszD8";local e=(222440921);local A=({});local k=(T(S,...)-1);local b=g[b];local g={};local F=-841110;local e=C and 1 or 0;for e=0,k,e do if(e>=a)then g[e-a]=p[e+1];else n[e]=p[e+1];end;end;local p=k-a+1;repeat local e=b;local a=e[F];b=e[x];if(a<=h(744039523,1451498))then if(a<=h(662495255,1148928))then if(a<=((f[71801169])or(c[839102444](t(820110253,821734643),t,f,71801169))))then if(a<=h(t(927070384,c.ck1ee9L4Bn),t(453966094,c['ck1ee9L4Bn'])))then if(a<=((f[90887663])or((function(e)f[90887663]=t(t(t(((e)-857393)-789530,58602),763095),853088);return(f[90887663]);end)(t(258799675,259235217)))))then if(a<=t(449292245,449292245))then local x=n[e[d]];if(not(x))then n[e[l]]=x;b=e[o];end;elseif(a==h(719921999,637728))then elseif(a<=((f[332211144])or(c[200244934](t(453334231,c.ck1ee9L4Bn),t,f,332211144))))then n[e[l]]=y(256);end;elseif(a<=((f[8917921])or(c[874467716](t(187852324,188063105),t,f,8917921))))then if(a==((f[93779580])or(c[841182038](t(830326106,c[125643710]),t,f,93779580))))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];local h;local f;local a;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and-n or n)or c*n)%l return c end for x=0,29 do if t(3020,7145+x,2082)>1041 then if t(8813,2618+x,3536)<1768 then if t(8889,1461+x,1146)<573 then else end else if t(5681,2837+x,2236)>=1118 then else end end else if t(5264,2391+x,3852)<=1926 then if t(2234,5370+x,1056)>=528 then n[a]=f;else end else if t(2164,8842+x,3466)<1733 then a=e[h];else h=l;end end f=e[o];end end n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];elseif(a<=h(t(34359959,63797041),t(454959697,c['ck1ee9L4Bn'])))then n[e[l]]=n[e[o]]*e[d];end;elseif(a==t(618532474,618532479))then n[e[l]]=e[o]-n[e[d]];elseif(a<=((f[567138175])or((function(e)f[567138175]=t((t(((e)-991380)-797596,834213))-779197,547048);return(f[567138175]);end)(t(574813861,c[253204386])))))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];end;elseif(a<=h(744039523,1451481))then if(a<=h(t(852701047,c[125643710]),1708111))then if(a>h(t(909603940,c['ck1ee9L4Bn']),988390))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local E;local b;local h;local f;local a;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and-n or n)or c*n)%l return c end for x=0,34 do if t(7245,7768+x,2514)>1257 then f=E[h];if t(8876,4012+x,1552)>776 then if t(3925,6784+x,1772)<=886 then n[e[l]]=#n[e[o]];else end else if t(7875,3304+x,1126)<=563 then a=e[b];else end n[a]=f;end else E=i;if t(5888,2305+x,3858)<1929 then if t(3030,4401+x,954)<=477 then n[e[l]]=e[o]-e[d];else end else if t(1255,1253+x,608)>=304 then else b=l;end h=e[o];end end end n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]][e[o]]=n[e[d]];e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];elseif(a<h(t(499637353,497481528),t(608110206,607682816)))then local l=e[l];n[l](s(n,l+1,e[o]));for e=l+1,r do n[e]=nil;end;end;elseif(a==h(t(756596438,784202704),t(577451179,c[253204386])))then local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=n[e[o]];e=e[x];local c=e[o];local t=n[c];for e=c+1,e[d]do t=t..n[e];end;n[e[l]]=t;e=e[x];local d=e[l];local t,o=m(n[d](s(n,d+1,e[o])));E=o+d-1;local o=0;for e=d,E do o=o+1;n[e]=t[o];end;e=e[x];local l=e[l];n[l]=n[l](s(n,l+1,E));for e=l+1,E do n[e]=nil;end;e=e[x];e=e[x];elseif(a<=((f[691256006])or((function(e)f[691256006]=(((e)-724297)-272623)-324207;return(f[691256006]);end)(t(417209944,415905513)))))then local l=e[l];do return n[l](s(n,l+1,e[o]))end;end;elseif(a<=h(t(698791423,100635036),t(70165071,70813596)))then if(a>((f[855808535])or((function(e)f[855808535]=t((((e)-996952)-23409)-618100,437203);return(f[855808535]);end)(t(511074942,c[165995577])))))then n[e[l]]();elseif(a<h(704751908,1211567))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];local u;local b;local h;local f;local a;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=2,31 do if t(2587,5155+x,3550)>1775 then if t(6386,9536+x,458)>=229 then if t(4445,9353+x,3096)<1548 then else end else f=u[h];if t(4273,2650+x,1428)>=714 then a=e[b];else end end n[a]=f;else if t(1239,5145+x,3044)<=1522 then if t(6022,1309+x,1454)<=727 then n[e[l]]=#n[e[o]];else end else if t(9009,7552+x,2652)<=1326 then u=i;else h=e[o];end b=l;end end end n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];local s;local r;local a;local f;local h;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and n or-n)or c*n)%l return c end for x=2,28 do if t(5870,1038+x,3920)<1960 then if t(5264,7772+x,1616)<=808 then if t(3903,4511+x,346)>=173 then a=e[o];else end f=s[a];else if t(1285,7381+x,2592)>1296 then else r=l;end end else if t(3450,2431+x,3778)>1889 then if t(2928,1490+x,2454)>=1227 then s=i;else end else h=e[r];if t(5502,5091+x,2636)>=1318 then else n[h]=f;end end end end n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];end;elseif(a>h(t(695802485,85999126),t(828395429,c[125643710])))then n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];elseif(a<14)then local l=e[l];local o,e=m(n[l](s(n,l+1,e[o])));E=e+l-1;local e=0;for l=l,E do e=e+1;n[l]=o[e];end;end;elseif(a<=h(29441446,458387))then if(a<=t(542636604,542636589))then if(a<=h(169158980,233520))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]][e[o]]=n[e[d]];e=e[x];e=e[x];elseif(a==((f[136052152])or((function(e)f[136052152]=t((t(((e)-901837)-361177,643848))-79207,591477);return(f[136052152]);end)(t(811414320,810163546)))))then e=e[x];local o=e[l];E=o+p-1;for e=0,p do n[o+e]=g[e];end;for e=E+1,r do n[e]=nil;end;e=e[x];local l=e[l];do return s(n,l,E);end;e=e[x];e=e[x];elseif(a<=h(535318271,1201789))then local a;local f;local i;local r;local u;local h;local c=0;local m=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and-n or n)or c*n)%l return c end for x=1,32 do if t(8709,8174+x,3814)<1907 then if t(1406,5554+x,1494)>747 then a=e;if t(3173,4539+x,424)>212 then f=o;else end else if t(1653,7379+x,2864)>=1432 then else end end else i=l;if t(6010,2620+x,2126)>=1063 then if t(5499,1957+x,1182)>=591 then if m~=1 then n[h]=u;m=1;end;else u=r[a[f]];end h=a[i];else if t(1471,5081+x,3408)<1704 then if(e[l]~=e[d])then b=b+1;else b=e[o];end;else r=n;end end end end n[e[l]]=e[o];e=e[x];local d=e[l];do return n[d](s(n,d+1,e[o]))end;e=e[x];local l=e[l];do return s(n,l,E);end;e=e[x];e=e[x];end;elseif(a<=19)then if(a>t(383419344,383419330))then local e=e[l];n[e](s(n,e+1,E));for e=e+1,E do n[e]=nil;end;elseif(a<h(t(205241620,c[61679461]),t(590634462,c[695852875])))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];end;elseif(a==h(t(59973427,c[454240379]),1451467))then if(n[e[l]]~=e[d])then b=e[o];end;elseif(a<=h(t(22396378,188781726),233498))then if(n[e[l]]==n[e[d]])then b=e[o];end;end;elseif(a<=((f[780400255])or((function(e)f[780400255]=t((t(e,185445))-389159,844805);return(f[780400255]);end)(t(68388578,67339972)))))then if(a<=((f[698836282])or((function(e)f[698836282]=t(t(((e)-665921)-838098,840806),177774);return(f[698836282]);end)(t(204152797,202263279)))))then if(a==t(106130755,106130773))then b=e[o];elseif(a<=h(t(82874924,c.ck1ee9L4Bn),t(610518343,c.cN2mXrfEeC)))then local a;local f;local s;local h;local E;local u;local c=0;local m=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and n or-n)or c*n)%l return c end for x=1,25 do if t(5690,8349+x,378)>=189 then if t(5512,8730+x,2414)<=1207 then if t(2006,3277+x,638)<319 then b=e[o];else a=e;end f=o;else if t(5090,7782+x,1642)<821 then E=h[a[f]];else end u=a[s];end else if t(9104,4984+x,1684)>=842 then if t(5383,3077+x,3514)<=1757 then s=l;else end else if t(2005,1082+x,304)>=152 then if m~=1 then n[u]=E;m=1;end;else end end h=n;end end local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=#n[e[o]];e=e[x];n[e[l]]=n[e[o]]+e[d];e=e[x];local u;local h;local f;local s;local a;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=2,31 do if t(5739,3275+x,3084)<=1542 then if t(7063,9650+x,2876)>=1438 then if t(1260,6707+x,2090)<1045 then a=e[h];else n[a]=s;end else if t(4771,3700+x,2040)<=1020 then else u=i;end end h=l;else if t(4238,8353+x,2048)<1024 then if t(8682,8287+x,3924)>1962 then n[e[l]]=n[e[o]];else end else if t(6057,5188+x,3142)>=1571 then else f=e[o];end s=u[f];end end end n[e[l]]=n[e[o]];e=e[x];local t=e[l];n[t]=n[t](n[t+1]);for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]][n[e[o]]]=n[e[d]];e=e[x];e=e[x];end;elseif(a==((f[613141030])or((function(e)f[613141030]=t(t(((t(e,169039))-31700)-102548,284323),766160);return(f[613141030]);end)(t(368033080,c[764945195])))))then if(not(n[e[l]]))then b=e[o];end;elseif(a<=((f[557065301])or((function(e)f[557065301]=t((t((t(e,531238))-938600,649083))-84234,765581);return(f[557065301]);end)(t(855890877,857252822)))))then if(n[e[l]]==e[d])then b=e[o];end;end;elseif(a<=h(t(792457076,c[289978309]),1148934))then if(a==h(61162758,1708093))then local r;local a;local f;local c;local t;local x=0;local function d(n,e,l)e=(x+e)%3 x=((e~=0)and x+((e<2)and n or-n)or x*n)%l return x end for x=1,26 do if d(2111,8162+x,1070)>535 then t=e[a];if d(3135,1136+x,1922)>=961 then n[t]=c;if d(7346,5876+x,1920)<=960 then else end else if d(1792,5680+x,2376)<=1188 then else end end else if d(3852,2984+x,2338)<1169 then if d(7341,8269+x,2378)>=1189 then r=i;else end else f=e[o];if d(5488,3533+x,3918)<=1959 then c=r[f];else end end a=l;end end elseif(a<=((f[5817476])or((function(e)f[5817476]=t((t(t(e,312664),827580))-107943,666811);return(f[5817476]);end)(t(60568700,60785631)))))then local d=e[l];local o={};for e=1,#A,1 do local e=A[e];for l=0,#e,1 do local e=e[l];local x=e[1];local l=e[2];if((x==n)and(l>=d))then o[l]=x[l];e[1]=o;end;end;end;end;elseif(a==t(590600833,c[695852875]))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local f;local a;local h;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and-n or n)or c*n)%l return c end for x=1,30 do if t(4908,6608+x,2084)<=1042 then if t(9052,4013+x,940)<470 then if t(6495,6157+x,2786)<=1393 then f=l;else h=e[f];end else if t(2893,9796+x,3346)>=1673 then n[e[l]]=n[e[o]]+e[d];else n[h]=a;end end else if t(7542,3961+x,3278)>=1639 then if t(2159,9044+x,908)>454 then else end else if t(9983,4731+x,1550)>=775 then a=e[o];else end end end end n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local a;local h;local f;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=1,32 do if t(6057,7890+x,2266)<=1133 then if t(2112,8167+x,1672)>836 then if t(1109,1347+x,2710)>1355 then else end else if t(5749,3967+x,312)<=156 then else a=l;end end else if t(8358,1435+x,1798)>=899 then if t(4432,2713+x,2244)>1122 then h=e[o];else end f=e[a];else if t(3771,3473+x,2440)>1220 then n[f]=h;else end end end end local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];local i;local f;local a;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and n or-n)or c*n)%l return c end for x=0,32 do if t(2647,9631+x,344)<172 then a=e[i];if t(4418,7972+x,1940)<=970 then if t(9614,1595+x,1780)<=890 then n[a]=f;else end else if t(3096,8248+x,3422)>=1711 then else end end else if t(6121,8017+x,2104)>1052 then if t(6973,1132+x,1010)>=505 then else if(n[e[l]]==e[d])then b=b+1;else b=e[o];end;end else if t(1347,9573+x,2596)<=1298 then else i=l;end end f=e[o];end end local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];elseif(a<=t(414265888,414265917))then local l=e[l];n[l]=n[l](s(n,l+1,e[o]));for e=l+1,r do n[e]=nil;end;end;elseif(a<=((f[607931906])or((function(e)f[607931906]=t(t(t(((e)-89630)-881588,959210),946349),843590);return(f[607931906]);end)(t(388156038,389551225)))))then if(a<=((f[7742553])or((function(e)f[7742553]=(t(t(t(t(e,26518),600518),630264),893593))-725944;return(f[7742553]);end)(t(207418536,c[61679461])))))then if(a<=t(21877328,21877360))then if(a<=30)then n[e[l]]=B(D[e[o]],(nil),i);elseif(a>h(61162758,1708090))then if(n[e[l]]>e[d])then b=e[o];end;elseif(a<h(564342319,1028164))then local l=e[l];local x=e[o];local d=50*(e[d]-1);local o=n[l];local e=0;for x=l+1,x do o[d+e+1]=n[l+(x-l)];e=e+1;end;end;elseif(a<=h(649001966,1866488))then if(a==h(t(268424003,c[61679461]),t(45577043,44917627)))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]][e[o]]=n[e[d]];e=e[x];e=e[x];elseif(a<=((f[572924522])or(c[284191218](t(578334805,c[253204386]),t,f,572924522))))then n[e[l]]=e[o]+n[e[d]];end;elseif(a==((f[142799412])or(c["ISSg7L8l"](t(663090426,664100008),t,f,142799412))))then local x=n[e[d]];if(x)then n[e[l]]=x;b=e[o];end;elseif(a<=36)then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local a;local h;local f;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=0,33 do if t(2444,1613+x,892)>=446 then if t(5276,6789+x,1598)<799 then if t(9465,3490+x,2542)>=1271 then else end else if t(4566,6949+x,1094)>=547 then f=e[a];else h=e[o];end end else if t(7628,5216+x,3468)<1734 then if t(8149,1647+x,3762)>1881 then else end else if t(3434,2796+x,2336)>=1168 then n[f]=h;else a=l;end end end end n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local a;local h;local f;local E;local m;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and-n or n)or c*n)%l return c end for x=0,31 do if t(9060,4049+x,968)>=484 then if t(8301,1748+x,392)<196 then h=l;if t(1959,6830+x,1934)<967 then f=e[o];else end else if t(9348,9926+x,1762)<=881 then m=e[h];else end n[m]=E;end else if t(5684,1881+x,2038)>=1019 then if t(2444,5730+x,3080)>1540 then b=e[o];else a=i;end else if t(4265,2649+x,1050)<=525 then else E=a[f];end end end end n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];end;elseif(a<=t(677301541,c[1966943]))then if(a<=t(577840317,c[253204386]))then if(a>h(t(817345911,819371558),493393))then n[e[l]][e[o]]=e[d];elseif(a<h(744039523,1451517))then local l=e[l];local d=e[d];local x=l+2;local l=({n[l](n[l+1],n[x]);});for e=1,d do n[x+e]=l[e];end;local l=l[1];if(l)then n[x]=l;b=e[o];end;end;elseif(a>((f[970418141])or(c[562354862](t(97573576,97867814),t,f,970418141))))then e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=u[e[o]];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local l=n[e[o]];n[t+1]=l;n[t]=l[e[d]];e=e[x];e=e[x];elseif(a<40)then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];end;elseif(a<=42)then if(a>((f[896548090])or((function(e)f[896548090]=(t((((e)-463037)-358744)-551462,608338))-344047;return(f[896548090]);end)(t(879077915,876959390)))))then local l=e[l];E=l+p-1;for e=0,p do n[l+e]=g[e];end;for e=E+1,r do n[e]=nil;end;elseif(a<h(169158980,233495))then local l=e[l];local x={n[l](n[l+1]);};local o=e[d];local e=0;for l=l,o do e=e+1;n[l]=x[e];end;for e=o+1,r do n[e]=nil;end;end;elseif(a>((f[531726629])or((function(e)f[531726629]=t(((e)-663829)-177384,67240);return(f[531726629]);end)(t(248857159,c[369230860])))))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];elseif(a<h(t(976612264,c["dd5ryo"]),t(335026621,334380110)))then if(e[l]>n[e[d]])then b=e[o];end;end;elseif(a<=((f[762791626])or((function(e)f[762791626]=t(t(((t(e,962176))-466750)-417062,392061),461491);return(f[762791626]);end)(t(851647804,c[596954169])))))then if(a<=((f[668234727])or((function(e)f[668234727]=t(((t((e)-754209,719866))-424951)-832917,658628);return(f[668234727]);end)(t(900642955,898498341)))))then if(a<=h(61162758,1708076))then n[e[l]][n[e[o]]]=n[e[d]];elseif(a==((f[129237217])or((function(e)f[129237217]=(t(t(t(e,966458),574839),149005))-730368;return(f[129237217]);end)(t(46119198,45129840)))))then n[e[l]]=n[e[o]]+n[e[d]];elseif(a<=t(454614268,c["ck1ee9L4Bn"]))then e=e[x];n[e[l]]=y(256);e=e[x];n[e[l]]=y(256);e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]];e=e[x];local d=e[l];local c,t=m(n[d](n[d+1]));E=t+d-1;local t=0;for e=d,E do t=t+1;n[e]=c[t];end;e=e[x];local d=e[l];local c,t=m(n[d](s(n,d+1,E)));E=t+d-1;local t=0;for e=d,E do t=t+1;n[e]=c[t];end;for e=E+1,r do n[e]=nil;end;e=e[x];local d=e[l];n[d]=n[d](s(n,d+1,E));for e=d+1,E do n[e]=nil;end;e=e[x];n[e[l]]=n[e[o]];e=e[x];e=e[x];end;elseif(a<=h(348968146,944931))then if(a>48)then local e=e[l];n[e]=n[e](n[e+1]);for e=e+1,r do n[e]=nil;end;elseif(a<49)then local e=e[l];n[e](n[1+e]);for e=e,r do n[e]=nil;end;end;elseif(a>((f[485740996])or((function(e)f[485740996]=(t(t(e,143183),104842))-14672;return(f[485740996]);end)(t(988047220,988276787)))))then local l=e[l];local d=n[l+2];local x=n[l]+d;n[l]=x;if(d>0)then if(x<=n[l+1])then b=e[o];n[l+3]=x;end;elseif(x>=n[l+1])then b=e[o];n[l+3]=x;end;elseif(a<h(t(196380314,288418415),124377))then n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];end;elseif(a<=((f[241459066])or(c[349974814](t(453877968,c['ck1ee9L4Bn']),t,f,241459066))))then if(a<=h(744039523,1451500))then if(a>((f[286605382])or(c[232752059](t(568297897,566761066),t,f,286605382))))then local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];local d=e[l];do return n[d](s(n,d+1,e[o]))end;e=e[x];local l=e[l];do return s(n,l,E);end;e=e[x];e=e[x];elseif(a<h(t(996361013,c[125643710]),233722))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];local u;local b;local h;local a;local f;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and n or-n)or c*n)%l return c end for x=0,27 do if t(1034,7127+x,1924)<962 then if t(4785,8326+x,1072)<=536 then if t(5273,9231+x,1244)>622 then else f=e[b];end n[f]=a;else u=i;if t(5587,2207+x,3646)<=1823 then local x=e[o];local o=n[x];for e=x+1,e[d]do o=o..n[e];end;n[e[l]]=o;else b=l;end end else if t(7847,8505+x,1340)>=670 then if t(9438,9162+x,2006)>1003 then a=u[h];else h=e[o];end else if t(9452,7186+x,2262)<1131 then else end end end end n[e[l]]=n[e[o]][e[d]];e=e[x];local a;local h;local f;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and n or-n)or c*n)%l return c end for x=1,28 do if t(1339,8187+x,3444)>1722 then h=e[o];if t(9082,8439+x,1176)>588 then if t(3671,2668+x,504)<=252 then else end else if t(3894,7273+x,2576)<1288 then else f=e[a];end n[f]=h;end else if t(3487,1404+x,3174)>1587 then if t(6597,8182+x,3640)<1820 then a=l;else end else if t(8341,9571+x,3026)>=1513 then else end end end end n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];end;elseif(a==54)then n[e[l]]=y(e[o]);elseif(a<=((f[416103011])or((function(e)f[416103011]=t(t((t(t(e,755634),655625))-93903,909541),857590);return(f[416103011]);end)(t(894018406,c[388999018])))))then e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];local t=e[l];n[t]=n[t](n[t+1]);for e=t+1,r do n[e]=nil;end;e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=e[o];e=e[x];e=e[x];end;elseif(a<=h(t(439774197,808960721),t(596081641,c['PbWozrvBn'])))then if(a>56)then local l=e[l];local o=n[e[o]];n[l+1]=o;n[l]=o[n[e[d]]];elseif(a<57)then local l=e[l];n[l]=0+(n[l]);n[l+1]=0+(n[l+1]);n[l+2]=0+(n[l+2]);local x=n[l];local d=n[l+2];if(d>0)then if(x>n[l+1])then b=e[o];else n[l+3]=x;end;elseif(x<n[l+1])then b=e[o];else n[l+3]=x;end;end;elseif(a==h(649001966,1866496))then local e=e[l];n[e]=n[e]();elseif(a<=((f[906673159])or((function(e)f[906673159]=(t((e)-132879,259937))-103183;return(f[906673159]);end)(t(820712411,821000417)))))then n[e[l]]=n[e[o]]-e[d];end;elseif(a<=t(207263260,c[61679461]))then if(a<=((f[715041264])or((function(e)f[715041264]=t(((e)-851683)-636160,718663);return(f[715041264]);end)(t(565784236,c[925637430])))))then if(a<=66)then if(a<=((f[320805856])or(c[432036195](t(702757310,c[425693847]),t,f,320805856))))then if(a<=t(370859997,c[563461517]))then e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=u[e[o]];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local l=e[l];local o=n[e[o]];n[l+1]=o;n[l]=o[e[d]];e=e[x];e=e[x];elseif(a==t(369848760,369848709))then local x=e[o];local o=n[x];for e=x+1,e[d]do o=o..n[e];end;n[e[l]]=o;elseif(a<=((f[60042192])or(c[249714393](t(849624561,851300668),t,f,60042192))))then n[e[l]]=n[e[o]]/e[d];end;elseif(a<=h(719921999,637663))then if(a==t(57023792,57023759))then if(e[l]>=n[e[d]])then b=e[o];end;elseif(a<=64)then local l=e[l];local x={n[l](s(n,l+1,E));};local o=e[d];local e=0;for l=l,o do e=e+1;n[l]=x[e];end;for e=o+1,r do n[e]=nil;end;end;elseif(a==h(t(690847000,c.WIdu1oU),t(511198759,c[165995577])))then local l=e[l];local o=n[e[o]];n[l+1]=o;n[l]=o[e[d]];elseif(a<=h(t(395018563,55006609),944944))then n[e[l]]=n[e[o]][e[d]];e=e[x];local i;local f;local a;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=1,31 do if t(3778,6010+x,2436)<1218 then if t(1561,5263+x,1028)<514 then if t(9752,5443+x,3004)>=1502 then i=l;else local x=e[o];local o=n[x];for e=x+1,e[d]do o=o..n[e];end;n[e[l]]=o;end f=e[o];else if t(4515,2422+x,2980)>=1490 then else end end else a=e[i];if t(8851,5974+x,294)<147 then if t(9383,1097+x,1572)>786 then else end else if t(5274,5445+x,912)<=456 then n[a]=f;else end end end end n[e[l]]=(e[o]~=0);e=e[x];local l=e[l];n[l](s(n,l+1,e[o]));for e=l+1,r do n[e]=nil;end;e=e[x];e=e[x];end;elseif(a<=70)then if(a<=t(168514455,168514515))then if(a==h(t(929879951,493715115),1211626))then local e=e[l];do return n[e](s(n,e+1,E))end;elseif(a<=h(t(169607273,749927303),1866390))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];end;elseif(a==h(t(206200343,642512691),t(796431677,795535829)))then n[e[l]]=e[o]/e[d];elseif(a<=t(248265041,c['gqO0c']))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];end;elseif(a<=h(662495255,1149013))then if(a==71)then for e=e[l],e[o]do n[e]=(nil);end;elseif(a<=((f[278939649])or(c[666369648](t(941088200,940246630),t,f,278939649))))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];local a;local m;local E;local f;local h;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and-n or n)or c*n)%l return c end for x=1,34 do if t(6429,7817+x,3356)<1678 then if t(3476,1432+x,3724)>=1862 then if t(3132,1998+x,2294)<=1147 then E=e[o];else a=i;end else if t(7102,7133+x,888)<=444 then n[h]=f;else h=e[m];end end m=l;else if t(2859,1298+x,1068)>534 then if t(9754,6528+x,3584)>1792 then n[e[l]]=#n[e[o]];else n[e[l]]=i[e[o]];end else if t(2431,9170+x,1832)>=916 then f=a[E];else if(n[e[l]]==e[d])then b=b+1;else b=e[o];end;end end end end n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];local t=e[l];local o=n[e[o]];n[t+1]=o;n[t]=o[e[d]];e=e[x];local l=e[l];n[l](n[1+l]);for e=l,r do n[e]=nil;end;e=e[x];e=e[x];end;elseif(a==73)then n[e[l]]=n[e[o]]*n[e[d]];elseif(a<=t(570729248,570729322))then u[e[o]]=n[e[l]];end;elseif(a<=t(368892917,c[764945195]))then if(a<=((f[247548912])or((function(e)f[247548912]=((t(t(e,489976),281194))-607406)-606606;return(f[247548912]);end)(t(572791755,c["ohZWzer"])))))then if(a<=h(t(953381651,c[764945195]),988842))then do return(n[e[l]]);end;elseif(a>h(29441446,458442))then local l=e[l];local x=n[l];local e,o=0,50*(e[d]-1);for l=l+1,E,1 do x[o+e+1]=n[l];e=e+1;end;elseif(a<((f[321630442])or(c[384957349](t(186948235,c[229559301]),t,f,321630442))))then local l=e[l];local x=({n[l](s(n,l+1,e[o]))});local o=e[d];local e=0;for l=l,o,1 do e=e+1;n[l]=x[e];end;for e=o+1,r do n[e]=nil;end;end;elseif(a<=79)then if(a==t(554320142,554320192))then local e=e[l];n[e]=n[e](s(n,e+1,E));for e=e+1,E do n[e]=nil;end;elseif(a<=((f[820325248])or(c.ukHup(t(140015007,c[289978309]),t,f,820325248))))then local c;local a;local f;local x=0;local function t(e,n,l)e=(x+e)%3 x=((e~=0)and x+((e<2)and-n or n)or x*n)%l return x end for x=2,32 do if t(6521,8428+x,608)>304 then if t(6778,6918+x,3586)>1793 then if t(3990,3981+x,1572)<786 then else n[e[l]]=e[o]-e[d];end else if t(9038,5321+x,1800)<=900 then c=l;else end end else if t(1827,7754+x,1656)>=828 then a=e[o];if t(2758,9061+x,3996)>=1998 then f=e[c];else end else if t(1648,5755+x,2496)>1248 then else end end n[f]=a;end end end;elseif(a>h(t(716071,30134401),t(596900347,c.PbWozrvBn)))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]][e[o]]=n[e[d]];e=e[x];e=e[x];elseif(a<h(t(605729359,1005780144),t(244910345,244014900)))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];end;elseif(a<=t(100318597,100318672))then if(a<=h(t(866174882,c.zOlbw),t(249502148,c[369230860])))then if(a>h(t(252365863,85976419),t(200972354,200870045)))then n[e[l]]=(not(n[e[o]]));elseif(a<h(348968146,944897))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];end;elseif(a==t(868347047,c["zOlbw"]))then local x=D[e[o]];local c=e[w];local o={};local t=Q({},{__index=function(n,e)local e=o[e];return(e[1][e[2]]);end,__newindex=function(l,e,n)local e=o[e];e[1][e[2]]=n;end;});for l=1,e[d],1 do local e=c[l];if(e[0]==0)then o[l-1]=({n,e[1]});else o[l-1]=({u,e[1]});end;A[#A+1]=o;end;n[e[l]]=B(x,t,i);elseif(a<=((f[490763896])or((function(e)f[490763896]=t(t(t((t(e,610843))-621023,755187),639096),517239);return(f[490763896]);end)(t(510625784,c[165995577])))))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];end;elseif(a<=h(t(952579461,c[165995577]),1866403))then if(a>((f[875350205])or(c[307271135](t(278178687,277954381),t,f,875350205))))then do return;end;elseif(a<h(t(206187400,648218823),637674))then n[e[l]]=n[e[o]]+e[d];end;elseif(a>88)then n[e[l]]=n[e[o]]-n[e[d]];elseif(a<t(159413516,c[862112943]))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local l=e[l];n[l](s(n,l+1,e[o]));for e=l+1,r do n[e]=nil;end;e=e[x];e=e[x];end;elseif(a<=((f[277383531])or(c[668794168](t(606722993,607189125),t,f,277383531))))then if(a<=((f[448615194])or(c.E2mruo(t(372162027,c[812419154]),t,f,448615194))))then if(a<=((f[748928343])or(c[709137567](t(919595819,c.hRqzXYmx),t,f,748928343))))then if(a<=((f[795507977])or((function(e)f[795507977]=t((t((e)-493525,215637))-523192,856806);return(f[795507977]);end)(t(345144983,c[690511759])))))then n[e[l]]=u[e[o]];elseif(a>h(t(862593572,665253622),t(248968702,c[369230860])))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];elseif(a<h(t(883362114,1051860998),t(829563492,829534849)))then n[e[l]][e[o]]=n[e[d]];end;elseif(a<=t(745136107,c[762654841]))then if(a==h(169158980,233698))then n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]][e[o]]=e[d];e=e[x];e=e[x];elseif(a<=94)then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local u;local f;local h;local b;local a;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=0,28 do if t(4534,2047+x,1606)<=803 then if t(5106,8972+x,3994)>1997 then if t(5816,2487+x,2050)<=1025 then else b=u[h];end a=e[f];else n[a]=b;if t(1000,9287+x,1790)<895 then else end end else if t(4047,8201+x,3520)>1760 then if t(8552,1635+x,3160)>1580 then else u=i;end else f=l;if t(4313,3168+x,2054)>=1027 then else h=e[o];end end end end n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]][e[o]]=n[e[d]];e=e[x];e=e[x];end;elseif(a>t(818352516,818352603))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local f;local h;local a;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=0,34 do if t(8966,9631+x,3850)>=1925 then if t(4964,5273+x,3690)<1845 then if t(1974,4528+x,1904)>952 then a=e[f];else n[a]=h;end else if t(1950,8362+x,1806)>=903 then else if(n[e[l]]==e[d])then b=b+1;else b=e[o];end;end end else if t(1653,4465+x,3258)<1629 then if t(9115,3208+x,2868)>1434 then n[e[l]]=i[e[o]];else end else f=l;if t(5842,3629+x,2208)>=1104 then h=e[o];else end end end end local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local s;local i;local f;local c=0;local a=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and-n or n)or c*n)%l return c end for o=0,30 do if t(1308,8900+o,3976)>1988 then if t(9298,3151+o,2042)<=1021 then if t(6779,5536+o,1432)<=716 then if a==-1 then for e=f,r do n[e]=nil;end;a=-2 end;else end else if t(2168,2401+o,2604)>=1302 then else end end else s=l;if t(3296,1704+o,602)>301 then if t(4483,5732+o,2204)>1102 then f=i[s];else end if a>-1 then n[f](n[1+f]);a=-1 end;else if t(5619,4742+o,2672)>=1336 then else i=e;end end end end n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];elseif(a<t(431248461,431248429))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local h;local E;local a;local f;local u;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and n or-n)or c*n)%l return c end for x=1,33 do if t(6064,3125+x,3978)>=1989 then if t(7445,4248+x,1362)>681 then if t(2529,6853+x,1328)>664 then u=e[E];else a=e[o];end else if t(6749,4739+x,2726)<1363 then else E=l;end end else if t(7860,4722+x,2220)<1110 then if t(5548,9424+x,3856)>1928 then n[u]=f;else n[e[l]]=n[e[o]]+e[d];end else if t(6351,8152+x,1774)>887 then f=h[a];else h=i;end end end end n[e[l]]=n[e[o]][e[d]];e=e[x];local a;local i;local f;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and-n or n)or c*n)%l return c end for x=1,27 do if t(9062,3692+x,2946)<1473 then if t(2503,6051+x,3534)>1767 then if t(7227,4235+x,996)<=498 then n[e[l]]=e[o]-e[d];else f=e[a];end else if t(5085,4523+x,1870)>=935 then else a=l;end i=e[o];end else if t(6096,9269+x,2312)<1156 then if t(3598,9866+x,2444)<=1222 then else end else if t(2871,9423+x,638)>=319 then n[f]=i;else if(e[l]~=e[d])then b=b+1;else b=e[o];end;end end end end n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]][e[o]]=n[e[d]];e=e[x];e=e[x];end;elseif(a<=h(535318271,1201672))then if(a<=((f[130868762])or((function(e)f[130868762]=t((t(t(t(e,544232),793626),843325))-788648,5291);return(f[130868762]);end)(t(853102435,c[596954169])))))then if(a>97)then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local f;local a;local h;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=2,32 do if t(9877,7472+x,3312)>=1656 then if t(3424,1666+x,2288)<1144 then if t(9434,9679+x,2662)<1331 then else end else if t(2322,5811+x,2268)>1134 then else f=l;end a=e[o];end h=e[f];else n[h]=a;if t(6221,2047+x,1122)<=561 then if t(5606,5396+x,2550)<1275 then else end else if t(4394,6793+x,1704)<852 then else end end end end n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];elseif(a<((f[147446116])or((function(e)f[147446116]=t(t(t(t((e)-910132,504631),327552),124927),798101);return(f[147446116]);end)(t(592871038,c[187327285])))))then local e=e[l];local o,l=m(n[e](n[e+1]));E=l+e-1;local l=0;for e=e,E do l=l+1;n[e]=o[l];end;end;elseif(a==((f[248516418])or(c[940634745](t(573368968,c.ohZWzer),t,f,248516418))))then e=e[x];n[e[l]]=i[e[o]];e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];local h;local f;local a;local c=0;local function t(n,e,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and n or-n)or c*n)%l return c end for x=1,27 do if t(7744,6887+x,2942)<=1471 then if t(4896,7550+x,3856)>=1928 then if t(1016,6003+x,1034)>517 then else end else if t(4506,9524+x,426)<213 then h=l;else end f=e[o];end a=e[h];else if t(3177,3258+x,2504)>=1252 then if t(3515,2248+x,616)>=308 then else end else n[a]=f;if t(8100,9384+x,3020)>1510 then else end end end end local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];local t=e[l];local c=n[e[o]];n[t+1]=c;n[t]=c[e[d]];e=e[x];n[e[l]]=n[e[o]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]];e=e[x];local h;local f;local a;local u;local b;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and-n or n)or c*n)%l return c end for x=2,26 do if t(7216,5954+x,1552)>=776 then if t(2646,6035+x,772)>=386 then if t(8091,9071+x,1680)<840 then else end else b=e[f];if t(6349,8135+x,3500)<1750 then n[b]=u;else end end else if t(2109,4486+x,802)<=401 then if t(1959,2606+x,1794)>897 then h=i;else u=h[a];end else f=l;if t(8265,5153+x,926)>463 then a=e[o];else end end end end n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][n[e[d]]];e=e[x];local b;local u;local h;local a;local f;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and-n or n)or c*n)%l return c end for x=2,28 do if t(9419,4300+x,3978)>=1989 then if t(4965,9845+x,2324)<1162 then if t(9370,9356+x,1004)>502 then else end else if t(9547,8391+x,2940)>=1470 then h=e[o];else end end a=b[h];else if t(4551,3806+x,3092)<1546 then b=i;if t(8221,8314+x,2546)<1273 then else u=l;end else f=e[u];if t(9859,2033+x,3332)<1666 then n[f]=a;else end end end end n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][n[e[d]]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=n[e[o]];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];local t=e[l];local o=n[e[o]];n[t+1]=o;n[t]=o[e[d]];e=e[x];local l=e[l];n[l](n[1+l]);for e=l,r do n[e]=nil;end;e=e[x];e=e[x];elseif(a<=((f[432393127])or(c[887439793](t(5577362,6203453),t,f,432393127))))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local f;local a;local h;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and-n or n)or c*n)%l return c end for x=1,30 do if t(7466,4066+x,492)>246 then if t(8828,2806+x,1304)<=652 then if t(1600,9062+x,3590)<1795 then else n[h]=a;end else if t(8777,3615+x,1070)<535 then else end end else f=l;if t(8900,2497+x,1092)>=546 then a=e[o];if t(2975,4571+x,1114)<557 then if(e[l]~=e[d])then b=b+1;else b=e[o];end;else h=e[f];end else if t(9304,2464+x,2038)>1019 then else end end end end n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local f;local a;local h;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((1==e)and-n or n)or c*n)%l return c end for x=0,28 do if t(7245,8351+x,2560)>=1280 then if t(3930,3010+x,1782)<891 then n[h]=a;if t(3522,6235+x,2518)>=1259 then else end else a=e[o];if t(1624,6666+x,508)>254 then else h=e[f];end end else if t(3284,1789+x,3114)<1557 then if t(8793,8606+x,866)<=433 then else end else if t(1864,1796+x,2734)>=1367 then else f=l;end end end end local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];end;elseif(a<=t(505177077,505176979))then if(a==101)then local e=e[l];do return s(n,e,E);end;elseif(a<=102)then e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local c;local a;local h;local r;local f;local t=0;local function d(e,n,l)e=(t+e)%3 t=((e~=0)and t+((1==e)and n or-n)or t*n)%l return t end for x=2,27 do if d(2207,9482+x,1820)>910 then if d(5389,1412+x,356)<178 then if d(2040,9654+x,484)>242 then else end else c=i;if d(7221,3649+x,622)>311 then a=l;else end end h=e[o];else r=c[h];if d(3161,3603+x,3850)<1925 then if d(6344,4266+x,1182)<591 then n[f]=r;else f=e[a];end else if d(1326,3412+x,2952)>=1476 then else end end end end n[e[l]]=n[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local d=e[l];local t,o=m(n[d](s(n,d+1,e[o])));E=o+d-1;local o=0;for e=d,E do o=o+1;n[e]=t[o];end;e=e[x];local o=e[l];do return n[o](s(n,o+1,E))end;e=e[x];local l=e[l];do return s(n,l,E);end;e=e[x];e=e[x];end;elseif(a>((f[725910698])or(c[621594471](t(770590814,770685516),t,f,725910698))))then n[e[l]][n[e[o]]]=e[d];elseif(a<t(344962313,c[690511759]))then local f;local a;local c;local t=0;local function d(e,n,l)e=(t+e)%3 t=((e~=0)and t+((1==e)and n or-n)or t*n)%l return t end for x=2,26 do if d(5964,1759+x,1222)>611 then if d(5680,6270+x,2414)>1207 then if d(4397,5282+x,2694)<1347 then else c=e[f];end else if d(4191,5021+x,1074)>537 then else end end else if d(3713,6457+x,3890)<=1945 then if d(4896,6147+x,1726)<=863 then f=l;else n[c]=a;end else if d(9436,7190+x,2632)>1316 then else a=e[o];end end end end n[e[l]]=(e[o]~=0);e=e[x];local l=e[l];n[l](s(n,l+1,e[o]));for e=l+1,r do n[e]=nil;end;e=e[x];e=e[x];end;elseif(a<=h(t(453737098,414072716),t(978389702,978000529)))then if(a<=t(109497312,109497228))then if(a<=h(t(454658730,c[671259666]),233687))then if(a>105)then if(n[e[l]]~=n[e[d]])then b=e[o];end;elseif(a<((f[740313050])or((function(e)f[740313050]=(t(t(t(e,506675),453153),697549))-192234;return(f[740313050]);end)(t(247648493,248236646)))))then n[e[l]]=n[e[o]][e[d]];end;elseif(a==((f[73282101])or((function(e)f[73282101]=t(t((t(t(e,195173),957243))-516094,301386),117154);return(f[73282101]);end)(t(341031169,340977886)))))then n[e[l]]=#n[e[o]];elseif(a<=((f[816258252])or(c["Utp3sr"](t(923997592,923537783),t,f,816258252))))then local e=e[l];local o,l=m(n[e](s(n,e+1,E)));E=l+e-1;local l=0;for e=e,E do l=l+1;n[e]=o[l];end;for e=E+1,r do n[e]=nil;end;end;elseif(a<=h(t(832600967,1001738947),233683))then if(a==t(396277093,c[772940926]))then local a;local c;local r;local t;local f;local d=0;local function x(e,n,l)e=(d+e)%3 d=((e~=0)and d+((e<2)and-n or n)or d*n)%l return d end for d=0,34 do if x(6716,5273+d,592)>296 then if x(3281,8709+d,500)<=250 then if x(9179,5874+d,428)>=214 then i[t]=f;else a=e;end c=n;else if x(6407,2074+d,770)>=385 then else end end r=l;else if x(1173,3711+d,1852)>926 then if x(5522,2221+d,1478)>739 then else end else if x(8290,4681+d,826)>=413 then t=e[o];else end end f=c[a[r]];end end elseif(a<=h(29441446,458472))then if(n[e[l]]>n[e[d]])then b=e[o];end;end;elseif(a==((f[54651032])or((function(e)f[54651032]=t((t(t(e,471609),983257))-159984,478438);return(f[54651032]);end)(t(749651342,749685271)))))then e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];local f;local h;local a;local c=0;local function t(e,n,l)e=(c+e)%3 c=((e~=0)and c+((e<2)and n or-n)or c*n)%l return c end for x=2,32 do if t(3988,9464+x,1504)<=752 then if t(3191,9179+x,408)<204 then if t(5893,3183+x,3392)<=1696 then f=l;else end h=e[o];else if t(9338,1408+x,1204)>602 then n[e[l]]=n[e[o]];else end end else if t(8176,9144+x,3164)>1582 then if t(7502,3702+x,1626)>=813 then else end else a=e[f];if t(2060,2347+x,1052)>=526 then n[a]=h;else end end end end n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=(e[o]~=0);e=e[x];local t=e[l];n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t](n[1+t]);for e=t,r do n[e]=nil;end;e=e[x];n[e[l]]=u[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];e=e[x];elseif(a<=t(839596605,839596621))then e=e[x];n[e[l]]=i[e[o]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=u[e[o]];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];n[e[l]]=n[e[o]][e[d]];e=e[x];local t=e[l];local l=n[e[o]];n[t+1]=l;n[t]=l[e[d]];e=e[x];e=e[x];end;elseif(a<=((f[702912794])or((function(e)f[702912794]=t((t(e,596380))-729360,625116);return(f[702912794]);end)(t(255838553,c["WqUY0Z5g"])))))then if(a<=h(t(409340634,845652990),1211641))then if(a>((f[362043477])or(c["kW0zoA"](t(276323918,c[262668696]),t,f,362043477))))then n[e[l]]=e[o]/n[e[d]];elseif(a<((f[48371504])or(c[35725826](t(287764603,c[671259666]),t,f,48371504))))then local t;local c;local r;local s;local i;local a;local d=0;local f=0;local function x(e,n,l)e=(d+e)%3 d=((e~=0)and d+((1==e)and n or-n)or d*n)%l return d end for d=0,30 do if x(9920,7669+d,702)>=351 then if x(7166,7568+d,3878)>=1939 then if x(5698,3481+d,3528)<1764 then else r=l;end s=n;else if x(3765,2934+d,1228)<=614 then a=t[r];else end end else t=e;if x(4741,1472+d,3510)<1755 then if x(2861,4523+d,614)>=307 then c=o;else i=s[t[c]];end else if f~=1 then n[a]=i;f=1;end;if x(2853,7188+d,2036)>1018 then else end end end end end;elseif(a>t(611423055,c["cN2mXrfEeC"]))then n[e[l]]=(e[o]~=0);elseif(a<((f[147933482])or(c["jmjjYCr"](t(855374063,c[596954169]),t,f,147933482))))then n[e[l]]=n[e[o]]/n[e[d]];end;elseif(a<=h(t(181403239,354922648),1201690))then if(a==h(t(632240122,c[387680078]),t(459529125,460115833)))then if(n[e[l]])then b=e[o];end;elseif(a<=h(61162758,1708113))then n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];n[e[l]]=e[o];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];n[t]=n[t](s(n,t+1,e[o]));for e=t+1,r do n[e]=nil;end;e=e[x];local c=e[l];local t=n[e[o]];n[c+1]=t;n[c]=t[e[d]];e=e[x];n[e[l]]=e[o];e=e[x];local t=e[l];local c=({n[t](s(n,t+1,e[o]))});local o=e[d];local l=0;for e=t,o,1 do l=l+1;n[e]=c[l];end;for e=o+1,r do n[e]=nil;end;e=e[x];e=e[x];end;elseif(a==((f[473418490])or((function(e)f[473418490]=t(t(((e)-61088)-715685,405423),345653);return(f[473418490]);end)(t(903363399,c[228207737])))))then n[e[l]]=n[e[o]][n[e[d]]];elseif(a<=120)then do return(n[e[l]]);end;e=e[x];e=e[x];end;until false end);end;return B(z(),{},_())(...);end)(({[(887439793)]=((function(l,o,e,n)e[n]=((o((l)-((#{336;851;(function(...)return;end)()}+48648)),((136241-#("???")))))-((416906-#("Sussy Baka obfuscator v1.5"))))-((164794-#("wtf")));return(e[n]);end));[((432036274-#("OBAMA IS WHITE! OBAMA IS WHITE! OBAMA IS WHITE! OBAMA IS WHITE! OBAMA IS WHITE!")))]=((function(o,l,n,e)n[e]=l((((o)-((868967-#("prostate"))))-(542771))-(936904),((#{413;400;}+875589)));return(n[e]);end));[(477086844)]=((841110));[(596954169)]=(((853401085-#("transferring my boost in 3 hours"))));[(841182038)]=((function(o,e,l,n)l[n]=(e(e(o,((782141-#("Raid: Shadow Legends here, I can confirm this script was skidded")))),((#{}+110247))))-(126830);return(l[n]);end));["pUQwVV0"]=((100159671));[((#{773;368;524;}+592788171))]=(((#{(function(...)return...;end)(4,257)}+366)));[((#{144;(function(...)return 149;end)()}+249941251))]=((913459961));[(165995577)]=((510250603));x1SUAZt0=(((#{765;726;826;936;(function(...)return 782;end)()}+15)));[(63487190)]=(((#{297;(function(...)return 629,...;end)(374,994)}+756317793)));[((#{399;721;394;312;}+401278269))]=(((#{459;570;527;939;(function(...)return 628,433,...;end)(313,103)}+655355754)));[((323912689-#("px1#5454")))]=("\110");[((1966970-#("federal agency of deez nuts")))]=((677301517));[(343335124)]=(((#{754;(function(...)return 737,962;end)()}+29)));bAuMS=((36));["dVzJU9"]=((674));[(563461517)]=((370860001));[(690511759)]=(((#{563;229;428;951;}+344962397)));[(498401925)]=(((#{184;(function(...)return...;end)()}+89)));["gqO0c"]=((248264983));[((167833490-#("I am a registered sex offender i stuck mt dick into a blender, your mom is a transgender")))]=((681042554));[(289978309)]=(((138874743-#("Jackson Jack Tension"))));[((240712643-#("sussy imposter?")))]=(((#{474;}+7802)));[(387680078)]=((142647117));[((369230935-#("My tips sticky rn my tip my tips creaming I am playing with a Lil bit ohoho")))]=(((249077529-#("I am leaving CS:GO and giving away my knives. Hurry up pick some >> discord.gg psu"))));[(152219730)]=(((#{124;}+501423378)));[((#{31;619;446;(function(...)return 795;end)()}+709137563))]=((function(o,n,e,l)e[l]=(n(n(((o)-((490441-#("never gonna give you up"))))-((886757-#("help if you see this perth has me locked up in his basement i need help"))),((#{680;}+200612))),(355180)))-(204210);return(e[l]);end));[(621252305)]=("\109");['yk32jm']=((2047));zOlbw=(((868347135-#("perth is sus"))));["ukHup"]=((function(o,e,l,n)l[n]=e((e(e(o,((#{858;302;}+792090))),((180089-#("Ok we can continue the")))))-((666666-#("Balls"))),((#{}+501521)));return(l[n]);end));["MQISOu"]=(((#{59;297;425;688;}+112937542)));[((#{130;584;(function(...)return 704,253,493;end)()}+537435816))]=(((269719836-#("apt install sl -y"))));ohZWzer=(((573943710-#("C# - more used in the gaming industry, plugins, etc., C++ - more used in machine learning, game engine development (physics, etc.), software development, sometimes in websites (for server-security purposes)"))));['btqlWDZBhG']=(((871098046-#("!rank"))));[(668794168)]=((function(o,e,n,l)n[l]=(e((e(o,((581862-#("funeralW")))))-(627121),((437395-#("Ryonechicken really got some debt and money issues")))))-((#{53;212;223;100;(function(...)return 114,125;end)()}+957930));return(n[l]);end));[(723896148)]=((1348));[((140361446-#("Overdrive is a skill based fighting game! Better than UCD or Soulshatters.")))]=(((#{899;152;552;933;(function(...)return 574,714,...;end)()}+16777210)));[(249714393)]=((function(o,l,n,e)n[e]=(((l(l(o,((59589-#("can i put my ballsss in yo jawww")))),(214339)))-(886046))-(153832))-((680749-#("Perth please shut the fuck up and dont spam here i forgor to mute here")));return(n[e]);end));[((253204416-#("e621.net for op roblox scripts")))]=((577840283));["H0Qwk0iE0P"]=(((27-#("Hacking into the mainframe"))));[((#{(function(...)return 815,11,153,...;end)(671,166,439)}+791106657))]=(((35-#("My penis is big ( im lying )"))));[(708256307)]=(((24-#("Sussysusususususuussusus"))));[((112937582-#("You lookin real sussy over there!!!!")))]=("\107");[((#{842;436;852;(function(...)return;end)()}+125643707))]=(((829844085-#("what"))));['E2mruo']=((function(o,e,l,n)l[n]=e(e(e(o,(65100)),(436072)),((#{517;377;}+472562)));return(l[n]);end));[((273310026-#("8-4=4*0.5=2, 1e1e1e=gr_y")))]=(((5064-#("iPhone 46 Pro Ultra Extreme Diamond Platinum Max Supersized Plus"))));n0g3HPx=(((12-#("grrr"))));[((#{937;461;865;}+940634742))]=((function(o,l,e,n)e[n]=l(((o)-((880405-#("Gay buttsex"))))-((114825-#("nigerien balls"))),((#{(function(...)return 789;end)()}+660655)));return(e[n]);end));["iiq8EzS"]=("\100");[(807506878)]=((993880799));["lBq8bnLzg"]=((323912681));[(35725826)]=((function(l,o,e,n)e[n]=(((((l)-((971166-#("cum"))))-(585021))-((#{810;166;(function(...)return 278,906;end)()}+294343)))-(614523))-((#{386;605;496;}+308738));return(e[n]);end));[(925637430)]=(((563643491-#("cumhead"))));[((655355785-#("Omer faruk is a hot cum")))]=("\102");[((#{473;359;}+388999016))]=((894060078));[((126071844-#("this script was obfuscated using moonsec")))]=(((1464-#("glockfrauddd#9444 ON TOP"))));[((839102469-#("<:waa:820486050937307167>")))]=((function(l,o,e,n)e[n]=((o((l)-((#{}+85660)),(573863)))-((239363-#("memcorrupt hospitalized perth is that u"))))-((989835-#("shlex is so sexy")));return(e[n]);end));[((#{582;748;377;(function(...)return 106,...;end)()}+384957345))]=((function(o,e,n,l)n[l]=(e(e(o,((#{771;567;597;(function(...)return 635,902,608;end)()}+751331))),(326206)))-(970662);return(n[l]);end));[(205978730)]=((154));[(1181968)]=(((#{}+814111)));[(871098041)]=("\50");[(953720252)]=((189332014));[(458835300)]=(((#{271;120;88;(function(...)return...;end)(766)}+0)));[(905724386)]=(((#{308;214;12;}+1020)));['ck1ee9L4Bn']=((454614227));['jmjjYCr']=((function(o,l,e,n)e[n]=l(((((o)-(297368))-((#{(function(...)return 888,975,631;end)()}+292223)))-(368131))-(910185),(632024));return(e[n]);end));[(719847174)]=(((65561-#("there are was no bytecode"))));[((860843701-#("What the fuck")))]=((34249));["uxMMflkQ"]=("\115");[((#{506;}+187327284))]=(((#{}+592058253)));[((902627274-#("Slowmode is enabled. Members can only send one message every lifetime.")))]=(((266-#("i like men"))));[(307271135)]=((function(o,e,l,n)l[n]=e(e((e(o,(876254)))-((122583-#("perth is cool"))),((#{}+555512))),(955788));return(l[n]);end));[(913459961)]=("\43");[(200244934)]=((function(l,o,e,n)e[n]=o(((l)-((#{247;573;176;923;}+441452)))-(610175),((#{(function(...)return 796,...;end)()}+883734)));return(e[n]);end));['ISSg7L8l']=((function(o,e,l,n)l[n]=e((e((o)-((872163-#("Sonic says: sonic says: sonic says: sonic says"))),((#{(function(...)return 328,...;end)(329,473)}+339923))))-((#{248;2;821;(function(...)return 802,629,539,170,...;end)(76)}+375853)),(47669));return(l[n]);end));[(695852875)]=(((590600893-#("faint#6969 is a big skid. wait.."))));hRqzXYmx=(((#{876;618;1;(function(...)return 547,117,487;end)()}+919967030)));[((#{}+862112943))]=(((#{158;469;586;565;}+159413585)));[((#{}+269719819))]=("\97");[(232752059)]=((function(o,n,l,e)l[e]=n(n((o)-((858414-#("script-ware >synapse> krnl > sentinel > jjspoit > sirhurt"))),(802260)),(441134));return(l[e]);end));[(454240379)]=(((801782611-#("ass"))));[(189332014)]=("\116");[((942953568-#("lucian#9999")))]=((731329304));["qS5zSnQ0"]=("\40");x0r6Y0SDV=("\111");[(566271629)]=(((662665306-#("Cock ++"))));[((#{950;(function(...)return...;end)()}+349974813))]=((function(l,o,n,e)n[e]=(((l)-(309539))-(138947))-(959462);return(n[e]);end));Q0tip=("\108");[((#{475;375;963;416;}+284191214))]=((function(o,e,l,n)l[n]=e(e(e(o,((432976-#("Ez IP logged")))),((722680-#("like")))),(264540));return(l[n]);end));[((228207746-#("I said ok")))]=(((903315341-#("i farted to this discord"))));[((681042566-#("grabify.link")))]=("\114");[(764945195)]=((368892836));['MGL80j2']=("\105");[(229559301)]=(((#{709;790;3;953;(function(...)return 347;end)()}+187029930)));["WIdu1oU"]=(((#{767;715;968;(function(...)return 181,436,...;end)()}+240229642)));[(874467716)]=((function(o,e,l,n)l[n]=e(e(e(o,(377223)),((180730-#("wone more MEME string by #jaack0001")))),((64508-#("fuck u dogix"))));return(l[n]);end));[((#{320;980;(function(...)return 568,...;end)()}+921334487))]=((5));[(305379501)]=((165));[((846000602-#("balls in yo jaws (yo jaws)")))]=("\120");[((#{}+812419154))]=((372232539));[(21591876)]=(((#{911;(function(...)return 290;end)()}+0)));[(100159671)]=("\99");["PbWozrvBn"]=((596969261));[(774371888)]=("\117");[(425693847)]=((701631341));[((#{798;613;894;520;}+666369644))]=((function(o,l,e,n)e[n]=(((l((o)-((415677-#("psu thighs"))),(14637)))-(347038))-(872100))-((#{(function(...)return 620,789,16,...;end)(705,153,954,975)}+270405));return(e[n]);end));[((149847563-#("imagine being named omer faruk birer bozo")))]=(((742553916-#("gargle my balls"))));[(61679461)]=(((207263329-#("My penis is big ( im lying )"))));Ibp3hBf0=(((368-#("Perth please dm me i need someone to talk to im so lonely"))));["btCD0Ld0E6"]=((103942407));[((#{623;924;(function(...)return 933,847;end)()}+903466405))]=((621252305));["Uv2DvdPtjL"]=((6));["UXdoTN"]=((21));['cN2mXrfEeC']=(((611423056-#("found a can of beans"))));[(260223226)]=(((113-#("It is sad that most meme strings are only at the bottoms of the script"))));[((731329314-#("whos shawn")))]=("\104");[((621594475-#("what")))]=((function(o,e,n,l)n[l]=(e(e(e(o,((286327-#("how do I compile lua into rust please help")))),((#{380;(function(...)return 307,774;end)()}+526299))),(342574)))-(561480);return(n[l]);end));[((742553944-#("gonna spam it <a:trolla:810117626327465996>")))]=("\101");[(762654841)]=((745136053));[(501423379)]=("\37");[(103942407)]=("\103");kW0zoA=((function(o,l,e,n)e[n]=(l((o)-(292545),(631152)))-(233208);return(e[n]);end));['x79X9Yw']=(((964-#("obama sussy balls"))));[(671259666)]=(((286041093-#("never gonna give you up"))));[((258153772-#("perth say sus")))]=(((57-#("perth"))));[(993880799)]=("\112");[(562354862)]=((function(o,e,n,l)n[l]=((e(e(o,((692351-#("This script was obfuscated using lua")))),((245004-#("perth falls down stairs 24 7")))))-((#{539;81;381;}+93769)))-((#{}+737234));return(n[l]);end));[(148932288)]=(((13-#("ok to what"))));[((772940945-#("Never gonna give up")))]=((396277000));[(777371616)]=(((#{607;762;(function(...)return...;end)()}+774371886)));XgxDP=(((846000601-#("My creamy nuts are on top"))));[((#{}+662665299))]=("\121");[(828048030)]=(((#{844;42;(function(...)return 478,137;end)()}+244)));[(262668696)]=((276232852));omlHrPOTj=("\58");[((756317809-#("prezt is gay")))]=("\98");["WqUY0Z5g"]=((253917821));[(353214665)]=((31));["dd5ryo"]=(((376229838-#("bro"))));["Utp3sr"]=((function(o,e,l,n)l[n]=e(e(e(((o)-((987433-#("ok well"))))-(836244),((963415-#("yo wassup")))),(237210)),(924801));return(l[n]);end));}),...)})do return e end;
LucasHartman
‘Generative House Algorithm’ was constructed for one simple reason, being one click away from creating a range of uniquely designed model houses. At the beginning of 2020, the start of the covid-19 pandemic, I started learning programming. My background is in developing 3D motion graphics, but my work goes into different directions. I feel inspired by trying out new things, but often feel constrained by the software I use. I never found the right software that could satisfy my every need. A few years back, I visited a motion graphics event in Prague. Here I saw a presentation by Simon Homedal from Man vs. Machine and he introduced me to procedural programming for digital art. And so my journey into learning to code started. Being stuck at home because of covid-19, I was presented with a change to really jump in and start developing a few coding projects. I started out with a simple board game in Java, where I was introduced to ‘object oriented programming’ and UI development and many other general concepts. At the end of this project I came to the conclusion that simple programming is not enough, I needed to combine with something I already have experience of. So I started using Python inside Maya, focusing on asset development of simple programs I could execute whenever I’m working on a 3D project. At the time I was wondering if I could deconstruct houses to an algorithm. The inspiration for this project came from wandering around the residential areas where I lived. Zandberg has very diverse styles of architecture; Terrace houses with high ceilings, classical villas with roofs made of straw and modern villas built after WWII. I was captivated by the diversity in design. Breakdown A simple UI inside Maya, where the uses can specify the value for generating a number of houses. Simple things like level and roof height, number of doors, max number of levels, etc. Lastly a button that would take in the value and run the algorithm. The back-end consists of a number of Python modules, textures and .obj files. One Python file called the “Main”, is where the files are assembled and executed. Process Developing a generative algorithm is a process of trial and error. At the start of the project I treated the project like any other modeling project, only every design decision was programmed in with a number of possible solutions. Over time this would become very complex and unstructured. It became impossible to go back and modify what I already wrote down. Another problem was that the algorithm was creating the model for running the code. This meant that selecting, adding and subtracting mesh to the model cost a lot of processing power, to the point my computer would freeze up. I needed to rethink my process and develop a framework which is easy to modify and light on the processor. My new plan of attack was to do as little as possible in Maya. All design instructions needed to be solved before anything can be created in Maya. Going into this direction was a hard choice. First off, it’s not a guarantee for success. The moment I would go too deep, things can get messy very easily. Besides I consider myself more of a visual thinker. Working outside of Maya meant every hurdle would be some sort of math problem. I already knew I had no choice, and understood this is the type of problem solving a programmer has to deal with. So I started out doing a little bit of RnD. My first test was to create a number of lists. Generally every list would hold some type of value. Like positional data, labels, dimensions, objects etc. and the rest would be a range of functions iterating, generating, gathering, and sorting data into these lists. These seemed flexible enough, if I needed to add new details to the model, I would make a new list and apply this into the framework. This type of framework was not very structured as I hoped. Luckily I discarded this ideal before it really began. I was already attracted by the idea of using a matrix instead of lists at the top of lists. The matrix would provide data in three dimensions, like a volume or a box made out of separate units. I would add an extra dimension to each unit, which is a list of six values. Each value would represent each side of a unit. The general ideal of a matrix is like a fluid simulation, which is made out of a matrix of voxels, or like Minecraft where each unit can be some type of block. This would create a data structure that is easy to modify. The next step would be to feed the matrix with values. A value can represent walls, doors, windows, levels, rooftops, position and direction. It starts with an empty matrix, and secondly fill it with values of 1 (later on inside Maya, value 1 would generate a wall, the location within the matrix would be translated to 3D space). If you’d stop here and translate the matrix to mesh in Maya, you would get a cluster of boxes stacked next or on top of each other. Adding more data to the matrix meant it needed to structure itself, so it would generate a cohesive design. If not the final result would be a house with holes in the wall or floating rooms. Therefore a number of functions are needed for searching for patterns, and modifying the data. A standard function would iterate over each unit in the matrix and check the neighboring values. If some sort of condition is met, the proper value will be modified. Going back to our cluster of boxes example. If a has a neighbouring box in front and to the left, but nothing on top, this would be a condition where a corner roof would be generated. And so different functions would solve design problems. In the end you would be left with a matrix of values that would serve as a blueprint for generating in house inside Maya. Finally the model needs to be made in Maya. A number of parts like a wall, door or window are generated or imported in Maya. When iterating over the finished matrix, a certain value in a certain place in the matrix will decide which objects (example wall or roof) needs to be instanced and placed in the right position and direction. When the matrix is fully realised in Maya the model gets a final cleanup, by merging the model, deleting unused parts and empty groups. What is left is the house model. If a range of houses needs to be generated, the process is simply looped over a number of times. Final word This project took way longer than I had anticipated and is far from finished. I learned a lot and at the same time it feels like I have only just begun. I hope to pick up this project again in the near future. I would love to add more elements to the house, like roof-windows or balconies and create procedural shaders. And possibly try out machine learning or some type of genetic algorithm. If you have any questions or are intrigued please contact me at ljh.hartman@gmail.com. Cheers!
TheLittleEngineers
CC-FlexiMIDI-V1R0-03.09.2009 and CC-FlexiMIDI-V1R1-03.09.2009 : Updated to CC-FlexiMIDI-V1R2-12.29.2019 on December 29, 2019 ================================ BACKGROUND: CC-FlexiMIDI-V1R0-03.09.2009 - A Hardware M.I.D.I. Interface Program Pak Cartridge for the Tandy Radio Shack TRS-80 Color Computer 1, 2 and 3, including clones and compatibles (Tano Dragon 64, Dragon Data D32, D64 and D200, Tandy Data Products TDP-100, etcetera) by "Little" John Eric Turner and his father "Big" John Robert (J.R.) Turner. Copyright 09 March 2009. Originally released as Open-Source Hardware on March 9, 2009. Subsequently released under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License on 21 May 2019. ENJOY! Note that the original design is crap, however, a debugged version is forthcoming from "Uncle" Robert "The R.A.T." Allen Turner. CC-FlexiMIDI-V1R0-03.09.2009 has been updated to CC-FlexiMIDI-V1R1-03.09.2009 by R.A. Turner on May 21, 2019, just over ten years after the initial release of Version 1, Revision 0. Version 1, Revision 1 is Copyright (C) 2019 by the above mentioned parties and is released under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License on 21 May 2019. =============================== DESCRIPTION: This project is an updated version of the "CC-FlexiMIDI-V1R0-03.09.2009", a hardware MIDI Interface Card for the Tandy Radio Shack TRS-80 Color Computer 1,2 and 3, Dragon Data Dragon D32, D64 and D200, Tandy Data Products TDP-100, Tano Dragon 64 and other clones and compatibles. The original "CC-FlexiMIDI-V1R0-03.09.2009" was designed by my nephew, "Little John", on March 8-9, 2009 as a learning excercise. He was teaching himself to use E.A.G.L.E. in order to design products for the TRS-80 Color Computer line of computers, with the help of his father, my brother, "Big John" or "J.R." as he is known to me. The "CC-FlexiMIDI-V1R0-03.09.2009" was among his very first (learning the art of circuit design) works. It is a terrible design only because he knew nothing about circuit design at the time and it does not appear that his father, "Big John" (J.R.) offered any input in regards to this particular design. I, "Uncle" Robert "The R.A.T." Allen Turner, have decided to polish up the design a bit and lay out a manufacturable Printed Circuit Board which I will release under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License. As such, I will analyze "Little John's" original design and then provide my improved version. The original "CC-FlexiMIDI-V1R0-03.09.2009" design files, as provided by "Little John" and his father (J.R.) are contained in the "Original (Deprecated)" folder of this archive and should be referenced for this initial analysis of the design. ================================ ANALYSIS OF ORIGINAL DESIGN: Load up the "CC-FlexiMIDI-V1R0-03.09.2009.sch" schematic file and have it handy for this discussion. Starting with Page 1 of the schematic, we see the expected cartridge (program pak) plug followed by an oddly interesting series of "purported" interrupts, labeled IRQ0* and IRQ1* (the "*" indicates low-level triggering, or active low). These "Interrupts", IRQ0* and IRQ1* appear to go, through disable jumpers, to Pins 1 and 2 of the CoCo Cartridge (Program PAK) Connector. This is both ODD and INTERESTING because Pins 1 and 2 of that connector are -12V and +12V, respectively, on ALL CoCo 1's, TDP-100's and ALL Multi-Pak Interfaces. Both of these pins are +12V on the Dragon computers. Those self-same pins, however, are NOT connected to anything on ANY stock, unmodified, CoCo 2 or 3 computers. I am thus forced to draw the following conclusion: "Little John" apparently allowed for using Pins 1 and 2 of a CoCo 2 or 3 Cartridge Slot to connect to any desired interrupt within the CoCo 2 or 3. That is, a CoCo 2 or 3 might be modified to connect Pins 1 and/or 2 of the Cartridge Slot to any of the CPU Interrupts, the PIA Interrupt (CART*), G.I.M.E. (A.C.V.C.) Interrupts (CoCo 3 only), etcetera. This is an UNECCESSARY feature of the "FlexiMIDI" design and my initial inclination was to omit it from the design. However, since there are jumpers that allow these "hacked in" custom interrupts to be disabled (removed) via JP1 and/or JP2 or connected together (wire or'ed) via JP3, I have decided to leave them in the design should anyone be so inclined as to use this custom interrupt scheme for experimentation or otherwise. Also on Page 1 is a fairly standard RESET switch which I would imagine could prove to be quite convenient but potentially problematic if the device is plugged into a Multi-Pak Interface (RESET* is buffered in a single direction in the M.P.I. and should not be triggered from any cartridge plugged into the M.P.I.), Power ON L.E.D. (which I assume might be quite distracting) and some pull-up resistors for the interrupts, custom and legit. Lastly, there is a 220uF Electrolytic Capacitor for Vcc (+5V) filtering. Ideally, a low ESR Electrolytic should be used, however, paralleling a 220uF Electrolytic with a .1uF Ceramic Disc should provide approximately the same result as a single Low ESR type. Moving on to Page 2, we see a crystal oscillator comprised of three inverters, three resistors and a crystal rated at 1 to 2 MHz. The third inverter actually acts as a buffer and "shaper". Schmitt Trigger inverters are used, although this is not actually necessary it does provide a nice, sharp square wave. Without the hysteresis provided by the schmitt triggers the waveform would appear quasi-sinusoidal at the crystal frequency if viewed on an oscilloscope, but would still function just fine. The output of that third inverter, the buffer stage, is fed into a pair of toggling D type Flip-Flops which provide a divide by two output and a divide by four output, either of which may be selected by jumper JP4. Ideally, we want a solid 500KHz squarewave as the ACIA Clock (which "Little John" labeled "MIDICLOCK" or "MIDICLK"). If a 1MHz crystal is used we would place JP4 on Pins 1 and 2. With a 2MHz crystal we would connect JP4 Pins 2 and 3. This is flexible in that it allows the use of either a 1MHz or 2MHz crystal, whichever might be handy. In my case, and for the redesign, I have a large stock of 16MHz half-can oscillators and so this is what I will be using in the redesign. The 500KHz then, will be derived from the 16MHz oscillator by using the 16MHz to clock a binary counter. At the bottom left of Page 2, we also see three inverters used to invert A7, A4 and A3. This appears to be part of the "address decoding" scheme. Lastly, we see the decoupling capacitors for the inverters and "d-flops". This page (page 2) of the design is fairly solid and well designed. Moving on to page 3, we see the "heart" of the "CC-FlexiMIDI-V1R0-03.09.2009" MIDI Interface Pak. A 74LS133 13-Input NAND is used for address decoding. The 74LS133 in conjunction with the aforementioned inverters and the ACIA enable lines fully decode the ACIA into two consectutive memory addresses. With this, we can now decipher the addressing of the device. This will be done by writing A15 - A0 and filling in the "bit status" required to enable the ACIA, as follows: ========================================================================= | A15 A14 A13 A12 | A11 A10 A09 A08 | A07 A06 A05 A04 | A03 A02 A01 A00 | |=================|=================|=================|=================| | 1 1 1 1 | 1 1 1 1 | 0 1 1 0 | 0 1 1 x | |=================|=================|=================|================== | F | F | 6 | x | ========================================================================= Looking at the above table and noting that A0 selects one of the two internal ACIA registers, it is clear that "Little John" mapped the ACIA to 0xFF66 and 0xFF67. This seems ODD because the most popular MIDI Packs designed for use with the Tandy Radio Shack TRS-80 Color Computer decode the ACIA to 0xFF6E and 0xFF6F. A bit of research, however, led to the discovery that the original CoCo MIDI Pack, "The Colorchestra", mapped the ACIA at 0xFF66 and 0xFF67. The "Colorchestra" was released in 1985 by "Color Horizons" and I own two of them. The aforementioned "research" was simply me looking at the "Colorchestra" P.C.B. and deciphering the address decoding which turns out to be 0xFF66-67. I assume that "Little John" arrived at the 0xFF66-67 addressing in a similar manner as to that just mentioned. It would be relatively easy to redesign the "FlexiMIDI" to respond to both sets of addresses thus guaranteeing compatibility with everything. I have decided, however, that the redesign will feature a semi-programmable address decoder allowing the ACIA to be mapped to any two consecutive addresses within the 0xFF6n area. This will allow the "Flexi-MIDI" to be even more flexible. Setting the address decoder to respond to 0xFF66-67 will make the device "Colorchestra" compatible, whilst setting the decoder to respond to 0xFF6E-6F will make it compatible with the MIDI Interfaces produced by Speech Systems, MusicWare, Rulaford Research, Glenside CoCo Club and other CoCo MIDI Packs. As mentioned, it would be relatively easy to hardwire the decoder to respond to both the 0xFF66-67 and the 0xFF6E-6F address ranges, but I feel that this is unneccesary. Next, we see the 6850 ACIA. This is the "true heart" of the device - a hardware serial port. Looking at the 6850 section of this page of the schematic, we see yet another oddly interesting Interrupt Selection circuit. It is in the form of a 2x4 Jumper Block. This appears to allow selection of any 1 of 4 interrupts to be triggered by the ACIA. IRQ0* and IRQ1* are the previously mentioned "custom" interrupts. NMI* is the 6809 or G.I.M.E./A.C.V.C. Non-Maskable Interrupt Input. The last interrupt on the 2x4 block is the CART* interrupt. This is actually the 6809 or G.I.M.E. IRQ* line that is passed through a PIA inside the CoCo/Dragon. This, the CART* interrupt is the one that should be used for compatibility. The remaining circuitry on Page 3 are fairly standard circuits for MIDI IN, OUT and THROUGH. These go to 5-pin headers. It appears that "Little John" intended for MIDI Cable ends to be soldered to these headers. The redesign will feature 5-pin DIN MIDI connectors. I do see some potential problems with these MIDI IN, OUT and THRU connections on "Little John's" original design. The first problem that I notice is that the MIDI Ground Pins are connected to the same Ground (common or GND) as the computer and MIDI Pack circuitry. This is no good as it violates the MIDI specification and defeats the purpose of the opto-isolator. Thus, the redesign will sever the ground connection of the DIN connectors from the ground connection of the MIDI Interface Pak circuitry. Next, the 330 Ohm (330R) pull-up resistor connected to the output of the opto-isolator should probably be 270R, however, the device should work fine with the 330R resistor. The redesign will have this changed to 270R. The 10K resistor connected to the "BASE" of the opto-isolator darlington-transistor pair should not be needed. I will allow for it in the redesign for testing purposes. The output of the opto-isolator is sent through two schmitt trigger inverters before being applied to the "Receive Data" input of the ACIA. I am drawing the following conclusion in regards to those two inverters: It seems the design was originally intended for use with a Sharp PC-900 or PC-900V digital opto-isolator which has an internal schmitt trigger, the hysteresis of which provides nice, sharp waveform edges. It appears that "Little John" decided, instead, to use a 6N138 opto-isolator, which does not have hysteresis (schmitt triggering) and thus he must have included the two inverters to alleviate this perceived problem. I am relatively certain, however, that these two inverters are unneccessary and thus I will remove them in the redesign. Had I not used two of the inverters in the hex-inverter package for address decoding, I might have left these two inverters in the redesign, however, I decided the savings of one chip was worth eliminating these two inverters. Hopefully, results will be satisfactory. That is about it for the initial analysis of "Little John's" original design. I shall now proceed to design a slightly improved and, hopefully, manufacturable version of "Little John's CC-FlexiMIDI-V1R0-03.09.2009" Hardware M.I.D.I. Interface Pack. This redesign will be titled: "CC-FlexiMIDI-V1R1-03.09.2009". ================================ THE REDESIGN: Load up the NEW design from the CURRENT folder in the archive and use it to follow this discussion. Starting with Page 1 of the schematic, I will start the redesign with the Cartridge Program Pak Slot Plug (Edge-Card or Edge-Fingers). This is what will actually plug into the cartridge port on the computer or Multi-Pak Interface (M.P.I.). Next, I will add an edge card socket wired in parallel to the edge-fingers. This is based on "Little John's" Universal Footprint which means that you can fit either a 40-pin card socket or a 40-pin header. This will allow an additional cartridge or other hardware to be plugged directly into the MIDI Interface, thus eliminating the need for a "y-cable" or Multi-Pak Interface. The +5V is filtered with a 220uF Electrolytic Capacitor in parallel with a .1uF Ceramic Disc or Dacron/Polyester/Mylar capacitor. A Power ON L.E.D. indicator is included here, along with an enable/disable jumper. Removing the jumper disables the Power ON L.E.D. should it become a distraction. Next, I'll add in the "CUSTOM" Interrupts, including their jumpers. The jumpers should be REMOVED from all of these if the device is to be used with a CoCo 1 and/or M.P.I. (Multi-Pak Interface) or with ANY of the CoCo Clones and/or compatibles, including the Dragon. In actuality, these jumpers should never be needed and thus should never be installed - they are for experimental purposes only. Removing the jumpers prevents the accidental application of +/-12V to the IRQ* output pin of the ACIA which would fry the ACIA. I have included 680R "failsafe" resistors, but it is likely that they would not prevent a fried ACIA. Lastly, I have included the RESET Switch for convenience. The RESET switch should NEVER be pressed if the device is inserted in a Multi-Pak Interface as you may blow the 74LS367 in the M.P.I. That is about it for Page 1 of the redesign. Moving on to Page 2: This page is exclusively dedicated to the Baud Rate Generator for the ACIA. Starting at the left, we see the bypass capacitors for the 74LS590 counter. I have used both a 10uF Electrolytic and a .1uF (100nF) Ceramic Disc. This would be important for a ripple counter, however, the LS590 is a synchronous counter and so the Electrolytic could be omitted. I chose to leave it in. There is also a bypass capacitor for the 16MHz oscillator can. I created a dual-footprint for the oscillator can which allows the use of a full or half can oscillator. The 16MHz is fed into the LS590 counter which provides a choice of ten different clocks for the ACIA. For compatibility with existing standard MIDI packs for the CoCo, the 500KHz clock should be selected. The LS590 has an output register which is clocked by the same 16MHz that clocks the counter section. The enable pin of the oscillator is connected to system RESET* which prevents it from oscillating when the system is in a reset state. This pin could have been left floating causing the oscillator to always oscillate. It will work either way. Page 3 is the semi-programmable address decoder. The 74LS133 in conjunction with the two inverters decodes 0xFF6n - the output will go low on any access to the 0xFF6x range. Only 12 of the 13 inputs to the LS133 were needed. The unused input could be connected to Vcc, E or RESET*. It is important to gate the E Clock in at some point and it could have been done here. I chose to connect the input to RESET*. The ACIA actually has an E Clock input which gates it with the E-Clock so it probably does not need to be gated to the address decoder, though, as you'll see, I gated the E-Clock into the next stage. The 74LS138 decodes 1 of 8 sets of even/odd addresses in the 0xFF6n range (it is enabled by the output of the LS133 and the E-Clock).) So, when any address in the 0xFF6n range appears on the address buss during the high time of the E-clock, the LS138 is enabled and decodes A1-A3 into 1-of-8 chip selects. For maximum compatibility, the 0xFF6E-F output should be selected. Page 4: This is the 6850 ACIA. This should be either a 68B50 or a 63B50 or 63C50 for operation at up to 2MHz CPU Clocks. This should be pretty self-explanatory. The 6850 datasheet can fill in any necessary details. Page 5: This is a fairly standard MIDI IN circuit. There are two optocouplers here: a 6N138 and a PC-900 - You should use ONLY ONE, not both. R9 is only needed if you use the 6N138. The diode is a 1N4148 or 1N914A. Page 6: This is a fairly standard MIDI Out circuit. Page 7: This is the final page and is a fairly standard MIDI Thru circuit. It simply echoes the MIDI In. Well, that's about it for a redesign of "Little John's" original. I am ordering some prototype boards to see if this thing will work. Updated to CC-FlexiMIDI-V1R2-12.29.2019 on December 29, 2019 - This minor update: A Universal 5-Pin DIN component was created and the GND Connection was reconnected to MIDI OUT and MIDI THRU. NO GND connection was made to MIDI IN. This should now create a proper MIDI Interface.
This is a project involving learning sounds of different objects and evolve relationships between objects.
SharjeelMoqrabKhan
Flutter is a mobile framework by Google for building beautiful and fast native apps. Flutter is very productive and offers a rich set of widgets that makes building apps a breeze. Once you experience hot-reload and everything else Flutter has to offer, you will never want to go back. In this course you will build a complete, real-world application for iOS and Android, by using Dart, Flutter and Firebase. This course starts from the basics, and includes a full introduction to Dart and Flutter. This means that NO prior experience with Dart and mobile app development is needed. As you make progress, the course will introduce more advanced topics, with special emphasis on writing production-ready code, so that you can learn how to build robust applications that scale. And by learning Firebase as well, you will understand how to make modern reactive apps, and see why Flutter and Firebase are a great combination. Important concepts are explained with clear diagrams. You will always learn what you will be building and why, and then how to do it. This will give you a strong foundation, and the techniques you learn here will be valuable in your own Flutter apps. So by the end of this course you will be a competent Flutter developer. Course Structure This is a complete course. With 21 hours of content, it will teach you everything you need to know about Flutter. - Each lesson builds on top of the previous one (source code included). - Each section covers a different topic. You can follow the course from beginning to end, or choose the topics you’re most interested in. Fast-track your learning This course offers a lot of practical advice, along with tips and techniques that I have battle-tested over years of experience. It goes far beyond "making things work", and gives you a very solid understanding of many different techniques and their trade-offs. And it will show you how to think about problems and their solutions, with the mindset of a top professional software engineer. So taking this course will save you a lot of time and money, and will prepare you for building real-world apps. And if you get stuck, you can ask questions and they will be quickly answered. Included in this course Introduction to Dart Setup instructions for macOS and Windows Introduction to Flutter and widgets Building layouts with Material & Cupertino widgets + build your own custom widgets Navigation Firebase Authentication (anonymous, email & password, Google, Facebook) State Management: how to use setState, lifting state up via callbacks, global access, scoped access with Provider, BLoCs, ValueNotifier & ChangeNotifier Streams, building reactive apps & advanced stream operations with RxDart Forms, input handling and validation Managing and updating packages Databases and Cloud Firestore Working with Forms and Cloud Firestore Working with ListViews and multiple UI states Date & time pickers Unit & Widget tests with mockito (basics to advanced) System requirements Windows, macOS or Linux for Android app development macOS for iOS app development
Autism means that a person develops in a different way and has problems with communication and interaction with other people, as well as unusual behaviors such as repetitive motions or enthusiasm for very narrowly specialized interests. However, this is only a clinical definition, and this is not the most important of what you need to know about autism. So ... what does an ordinary person need to know about autism? There are a lot of misconceptions, important facts that people do not even know about, and several universal truths that are always ignored when it comes to disability. So, let's list them. 1.Autism is diverse. Very, very diverse. Ever heard the saying: "If you know one autistic person, do you know ... only one autistic person"? It's true. We like completely different things, we behave differently, we have different talents, different interests and different skills. Gather a group of autistic people and look at them. You will find that these people are as much different from each other as neurotypical people. Perhaps, autism differ from each other even more. Every autistic person is individual, and you can not make any assumptions about him only on the basis of his diagnosis, except as "Probably this person has problems with communication and social interaction." And, you see, this is a very general statement. 2. Autism does not define a person's personality ... but it is still a fundamental part of our being. Someone kindly reminded me of the missed second item on this list, so I just added it! I always miss something ... especially if it's about something like "If it's written that it's about a list of ten items, then there should be ten points." The thing is that it's difficult for me to perceive the whole picture, and instead I constantly focus on details like "Did I make a spelling mistake?" If I no longer had a pervasive developmental disorder, I would have been diagnosed with impaired attention like ADHD - in my head I have not only autism. In fact, autism is just one of many phenomena, and most of them are not diagnoses. I am an autistic, but I have huge problems with organizing my actions and switching to a new task, which usually happens in people with ADHD. I am well read, but there are serious problems with arithmetic, but not with the score. I'm altruist, introvert, I have my own opinion on any occasion, and I adhere to moderate views in politics. I'm a Christian, a student, a scientist ... How much everything comes in identity! However, autism is a little coloring, as if you are looking at something through the colored glass. So if you think that I would be the same person without my autism, then you are unequivocally mistaken! Because how can you remain the same person, if your mind starts to think differently, learn differently, and you will have a completely different view of the world? Autism is not just an additive. This is the very basis for the development of the personality of an autistic person. I have only one brain, and "autism" is just a label that describes the features of the work of this brain. 3.Having autism does not make your life meaningless. Disability generally does not mean that your life is meaningless, and in this respect, autism is not different from any other disability. Constraints in communication and social interaction, coupled with learning difficulties and sensory problems that are inherent in us, do not mean that the life of an autistic person is worse than the life of a neurotypical person. Sometimes people assume that if you have a disability, then your life is by definition worse, but I think they are just too inclined to look at everything from their own point of view. People who have been neurotic in their entire lives begin to think about what they would feel if they suddenly lost their skills ... while in reality one must imagine that they never had these skills, or that they have developed other skills and a different view of the world. Disability itself is a neutral fact, not a tragedy. With respect to autism, tragedy is not autism itself, but related prejudices. It does not matter what restrictions a person has, autism does not prevent him from being part of his family, part of his community and a person whose life has an intrinsic value. 4.Autistic people are capable of love to the same extent as any other people. Love for other people does not depend on the ability to speak fluently, understand the expression of strangers or remember that when you try to make friends with someone, it's better not to talk about wild cats for an hour and a half without stopping. Perhaps we do not know how to copy the emotions of other people, but we are capable of the same compassion as all the others. We just express it differently. Neurotics are usually trying to express sympathy, autistics (at least those that look like me, as I said - we are very different) are trying to fix a problem that initially upset the person. I see no reason to think that one approach is better than another ... Oh, and one thing: although I am an asexual, among the people of the spectrum of autism I am in the minority. Autistic adults, with any form of autism, can fall in love, marry and have a family. A few of my autistic friends are married or go out on dates. 5.The presence of autism does not prevent a person from learning. Actually does not interfere. We grow, and we learn throughout life, just like any other person. Sometimes I hear people say that their autistic children "recovered". However, in fact, they only describe how their children grow, develop and learn in the right environment. They actually devalue the efforts and achievements of their children, writing off them for the last drug or other treatment. I have come a long way from a two-year-old girl, who was crying all day and night, constantly running around in circles and making violent hysterics from the touch of wool. Now I'm in college and I almost achieved independence. (I, true, still can not bear woolen cloth). In a good environment, with good teachers, training will be almost inevitable. This is the focus of research on autism: how best to teach us what we need to know about this world that is not fit for us. 6.The origin of autism is almost entirely genetic. The hereditary component of autism is about 90%, which means that almost every case of autism can be reduced to a certain combination of genes, be it the "botanist genes" that were transmitted from your parents, or they are new mutations that have arisen only in your generation. Autism has nothing to do with the vaccinations you have been given, and it has nothing to do with what you eat. Ironically, despite the arguments of the opponents of vaccines, the only proven non-genetic cause of autism is the congenital rubella syndrome that occurs when a pregnant woman (usually not vaccinated) gets rubella. People, do all the necessary vaccinations. They save lives - millions of people who die every year from diseases that could be prevented by vaccines would agree. 7.Autistic people are not sociopaths. I know, probably, you do not think so, but still it should be repeated again. "Autism" is often associated with the image of a person who absolutely does not care about the existence of other people, while in reality, it's just a communication problem. We do not care about other people. Moreover, I know several autists who are so panicky about accidentally saying "something is wrong" and touching other people's feelings that as a result they are constantly shy and nervous. Even nonverbal autistic children show the same attachment to their parents, which is not autistic. In reality, autistic adults commit crimes much less often than neurotype’s. (However, I do not think that this is due to our innate goodness.) In the end, it is very often a crime - it is social activity). 8.There is no "epidemic of autism". In other words: the number of people diagnosed with autism is increasing, but the total number of autistic people remains the same. Studies conducted among adults show that the level of autism among them is the same as among children. With what are all these new cases related? Simply with the fact that now diagnoses are also made in milder forms of autism, including due to the recognition that Asperger syndrome is autism without speech delay (previously the diagnosis was not raised if you could speak). In addition, they began to include people with mental retardation (as it turned out, in addition to mental retardation, they very often have autism). As a result, the number of diagnoses "mental retardation" decreased, and the number of diagnoses "autism", respectively, increased. Nevertheless, rhetoric about the "autism epidemic" had a positive effect: thanks to it we learned about the real prevalence of autism, and we know that it is not necessarily heavy, and we know exactly how it manifests, which allows children to receive the necessary support from an early age. 9.Autistic people can be happy without healing. And we are not talking about some second-rate happiness on the principle of "better something than nothing." Most neurotics (if they are not artists or children) will never notice the beauty in arrangement of cracks in the asphalt pavement, or how beautifully the colors are played on the spilled gasoline after the rain. They probably will never know what it's like to give up entirely to a particular topic and study everything about it as much as possible. They will never know the beauty of the facts that were brought into a certain system. They probably will never know what it's like to wave your hands with happiness, or what it's like to forget about everything because of the sensation of the cat's fur. In the life of autistics, there are wonderful aspects, as, most likely, they are in the life of neurotype’s. No, understand me correctly: this is a difficult life. The world is not adapted to the existence of autistic people, and autistic people and their families face strangely every day prejudices. However, happiness in autism is not reduced to "courage" or "overcoming". It's just happiness. You do not have to be normal to be happy. 1o. Autistic people want to be a part of this world. We really want this ... just on our own terms. We want to be accepted. We want to go to school. We want to work. We want to be listened to and heard. We have hopes and dreams of our future and the future of this world. We want to contribute. Many of us want to have a family. We differ from the norm, but it is diversity that makes this world stronger, not weaker. The more images of thinking, the more ways will be found to solve a particular problem. The diversity of society means that if a problem arises, we will have different minds at hand, and one of them will find a solution.
frankienhayesa
Amazon announced a new device called the Glow during its fall product launch event, a $250 video chatting gadget that allows children to virtually interact with loved ones by playing games and reading books together. Although the company has been selling the Echo Dot Kids Edition for years, it's rare for Amazon to develop an entirely new device designed specifically for children. While it's new for Amazon, the general concept behind Glow might sound familiar -- especially if you've ever used the storytelling app Caribu or the Osmo brand of educational tablet accessories. That's because although they're different products, they share a lot of underlying qualities with Amazon's Glow. Caribu is designed to help kids play games and read stories with relatives remotely through an interactive video chatting platform, and Osmo is all about incorporating real-world game pieces into educational games you can play on a tablet. Read more: Amazon unwraps privacy features as it tries to roll deeper into your home To understand the similarities, it's important to know how the Glow works. Amazon Glow is an Alexa-free video chatting device that consists of an 8-inch upright display, a camera with a built-in shutter and a projector. The device isn't available to the public yet and can only be obtained via invitation since it's part of the company's Day 1 Editions program. The basic premise behind the Glow is simple. Children can video chat with relatives and loved ones on the device's screen, while a projector conjures up a virtual play area for games and activities that's displayed on a silicone mat in front of them. The person on the other end of the call can participate in that game or puzzle on their tablet through the Glow app.The activities are also designed to combine real-world elements with digital ones. For example, in a demo video on Amazon's website, kids can be seen arranging physical game tiles, drawing pictures with their finger on the play mat and moving digital puzzle pieces on the mat -- all while a grandparent or aunt on the other end cheers them on. The device will come with a one-year subscription to Amazon Kids Plus and will feature content from Disney, Sesame Street, Barbie, Pixar and Hot Wheels. The Caribu app is built on a similar concept, but with a different execution: It's an app with the same goal, not a purpose-built device. Caribu is meant to make the video calling experience more interactive by enabling children and loved ones to share experiences like bedtime stories, coloring sheets and games virtually. It's essentially like a Zoom for kids that's available on iOS, Android and the web, but with built-in activities. The app has been around since 2016, but grew in popularity throughout the pandemic as relatives looked for ways to connect with little ones they couldn't see in person. Maxeme Tuchman, Caribu's CEO and co-founder, doesn't seem bothered by Amazon's entry into the space. "What I can say is that Caribu obviously identified a problem in the market, started a trend, and now everyone wants in," Tuchman said in a statement.Osmo, on the other hand, is more about turning your tablet into an interactive device for educational games and activities rather than social interaction. Osmo's system involves slotting a compatible tablet into a base that enables it to stand upright in portrait mode. You would then place a red reflector piece over the device's camera. This reflector enables the tablet to detect physical game pieces so that these real-world elements can be incorporated into the game on screen. Games designed for the Osmo cover a range of skills, including coding, literacy, critical thinking, drawing, math and science. Certain Osmo bundles are priced similarly to the Amazon Glow, but the starter kit -- which includes the base, reflector, and four games aimed at children ages 3 to 5 -- costs just $79. Read more: Always Home Cam: Amazon's flying Ring drone might be tricky to get your hands on Like Caribu, Osmo isn't an apples-to-apples competitor to Amazon Glow. Amazon seems focused on the technology while it relies on big-name partners for most of the content, unlike Osmo. And Osmo is centered on solo playtime and learning, rather than shared experiences. There are also some fundamental differences in how the products work. Osmo doesn't project images onto a nearby surface like the Glow. Instead it uses the reflector to send an image of game pieces or a child's drawing to the tablet's camera so it can be incorporated into the game. Amazon also specifically mentions that the Glow itself isn't a toy, despite its similarity to products that are considered to be part of the toy market.Still, the core appeal of both products comes down to combining an on-screen experience with real-world play elements. As is the case with Caribu, the concepts are just carried out in different ways. Similar to Tuchman, Osmo co-creator Pramod Sharma didn't express concern about increased competition from Amazon. "We're excited to see Amazon join the play movement we started with Osmo over seven years ago," Sharma said via email. Amazon's device also isn't the first experimental computing device to rely on a projector as a central part of the interaction. You might remember HP's Sprout Windows 8 all-in-one PC from 2014, which projected a second screen onto a 20-inch touch sensitive mat situated in front of the computer for drawing and other creative work. It's easy to understand why Amazon would develop a product like the Glow at a time like this. The pandemic has normalized remote learning and fueled interest in connecting with family members virtually. At the same time, technology is playing a bigger role in the global market for educational toys, which is expected to grow from $19.2 billion in 2020 to $31.62 billion by 2026, according to Arziton Advisory and Intelligence. Toys that use augmented reality to overlay digital graphics on real-world objects will likely boost the demand for learning toys year-over-year, says the report.Tech companies are also increasingly tailoring their products to appeal to younger audiences. Facebook offers a version of its Messenger chat app for children, and the company has been building a version of Instagram for kids, too. (Those plans were recently put on hold following backlash over the concerns that come with exposing younger age groups to social media.) Apple launched parental controls for the iPhone in 2019 and released Swift Playgrounds in 2016, a game aimed at teaching children how to code in Apple's Swift programming language. It's too soon to know whether the Amazon Glow will be a success. Amazon's Day 1 Editions program is meant to provide access to new products before they're ready for prime time, meaning they may not be ready for widespread release. Not all products in the program make it past the Day 1 Editions phase either. The Echo Loop, an Alexa-powered smart ring, never graduated from Day 1 Editions to become a real product, for example.We'll have to wait until we've tried Amazon's new child-friendly gadget to know how it stacks up against existing products.
acm-projects
Learning is a journey that never ends, but it’s also never easy. Summer saves you time by allowing you to summarize YouTube videos and dynamically generate quizzes based on the content, leaving you free to focus on learning rather than scribbling down notes.
Key#1: Understand the regulations that pertain to your industry and your business throughout each level and function of your organization This is more difficult than it appears because Federal Regulations are simply not prescriptive and that is by design. 21CFR 820 Medical Device QSR for example, must be applicable to both manufacturers of small surgical instruments as well as manufacturers of MRI devices requiring that the regulations be sufficiently vague and flexible to pertain to each product. At the end of the day, it is the responsibility of every regulated organization to interpret those governing regulations as they pertain to the company's unique product and processes and apply those interpretations throughout the organization. In most cases, this will require the assistance of outside industry and regulatory experts to make these interpretations and the case for the direction that the company chooses to go. Certainly the most simplistic solution to achieving compliance excellence is "to do the right things right!" But what does this really mean? I have distilled the "doing the right things right" solution into 7 separate individual keys or actions that will provide a solid foundation for the establishment of any compliance program. Key#2: Define your critical processes relative to the regulatory path that has been chosen. Many organizations do not adequately define their processes After choosing a regulatory path, complete and thorough process definitions that are foundational to the business must be developed and validated with linkage to the governing regulations. These process definitions are the first rung on the ladder, the "50,000 ft. view," the genesis of the operational and regulatory paradigms that will form the structure of how the business will be run in an efficient, effective, and compliant manner. Key#3: Develop sound regulatory documentation Documentation should not simply meet a regulatory requirement but be designed to effectively direct operations, be foundational to a comprehensive worker training approach, and serve as the basis for a sound continuous improvement process. Key#4: Harmonize your processes and procedures between plants Inconsistency between operations although not necessarily a problem are cause for concern when those inconsistencies are uncovered during an inspection or investigation. Best practices should be determined for "like" operations, equipment, processes, etc. and then implemented across all facilities and locations where those "like" operations exist. Key#5: Commit to and execute comprehensive technical training. Competence is the prerequisite to competition and compliance "Read and Understand" the most basic of approaches used to transfer "knowledge and skill" in the life sciences today simply does not work. If your goal is to just meet a regulatory requirement, this is as far as you need to go - buy an LMS, build the most basic of technical documentation, assign document readings, roll the regulatory inspection dice, and you are good to go. If your goal, on the other hand, is to create an organization that meets or exceeds your regulatory responsibilities, demonstrates operational excellence, develops and deploys superior competence, and truly demonstrates the attributes of a learning organization, you must invest in training infrastructure, organizationally support training, provide training a seat at the operations and regulatory tables and include the function in the decision-making and advisory processes, and consistently execute an effective training process for both new and existing human resources. Key#6: Institute a sound and effective complaint and investigations handling process : Looking at a history of 483 observations and warning letters will tell you that CAPA deficiencies uncovered during FDA investigations consistently rank in the top three of the reasons for triggering a 483 warning letter. It is essential that CAPA systems and processes be fully integrated with corporate strategies and policies and there be a commitment up and down the organizational structure to fully execute the process. Key#7: Manage performance up and down the line to the performance structure created. If it is not managed it will not be performed Junior level managers and supervisors and the workforce in-general for that matter, must never be given cause to think that circumventing or ignoring a process or a step to a procedure is acceptable behavior even if it impacts throughput, schedules, or the "bottom-line." The risks to patient and end-user health and safety are simply too great. Regulatory compliance must be sacrosanct and an enforceable component of the performance management system. That message must be sent and received throughout the organization. The intent of this approach is to demonstrate linkage between each level beginning with the regulatory requirements themselves through regulatory documentation, through the training process, ending ultimately with the management of individual human performance.....https://www.complyarena.com/articledetails/39
allifizzuddin89
This repo is meant for learning and working on projects related to Python, AI, ML, DL and Robotics. Feel free to have a look and please let me know if you have any inquiry. Contact me at allifizzuddin@gmail.com. Have a nice day !
Byazh
In view of the next elections of the Italian Parliament, I decided to summarize each party's policies and compare them. I had never built a website before, so this is the result of a scarce week of learning HTML, CSS, JS and ReactJS (which I didn't even use at the end)
aman0009
An ultimate guide for learning cloud in an easy way Who Uses Heroku And Why? Heroku is a Platform as a Service(PaaS) in which you can easily create free account and can start deploying your applications. Heroku allows you to deploy quickly, forget about the infrastructure, and just focus on improving your app. Heroku is also great for beginners since its free tier of service covers everything newbies need. You can deploy as many apps as you like on Heroku, so long as they’re not too large (in terms of the associated data you’re hosting) and you don’t mind the possibility that Heroku might randomly take them offline for what it calls “unscheduled downtime.” I’m currently hosting five different apps on Heroku and they are working fine without any maintainance.You can host front-end websites as well as back-end websites.It also provides command line interface through which you can easily deploy an application just in minutes. How Heroku Works When you create an app on Heroku, it deploys to the Cedar Stack, an online runtime environment that supports apps built in Java, Node.js, Scala, Clojure, Python and PHP—all the programming languages that Heroku supports. The current version of the Cedar Stack is Celadon Cedar. It supports hundreds of thousands of developer apps. When you deploy a new app, Heroku assigns it a unique name based on a natural theme, like “calm-springs3345” or “desolate-cliffs1221.” When it comes to your app, think of Heroku as home to a vast array of virtual computers, or “instances,” that can be powered up and down. Heroku calls these instances dynos; these are lightweight containers that each run a single command for your app. In my experience as a beginner building apps that only perform one action, I’ve never had more than one dyno per app. Heroku And Git One of the reasons Heroku is easy for people to use is that it relies on a widely used revision control system—that is, a way of managing the program code for your app—called Git. If you’re not already familiar with Git, you might want to review ReadWrite’s beginner tutorial for Git and GitHub. Signing Up For Heroku Interested in trying Heroku out for yourself? Signing up is easy, with one caveat. To create your Heroku account, all you need is an email and password. But if you want to do anything with your Heroku-hosted app, like take advantage of one of the many useful free addons, you need to put in a credit card number. Heroku says it’s for account verification. Though it obviously makes it easier for Heroku to tempt you with paid services as well. Create the app Go to your dashboard Select “Create new app” (top right) Name your app something (only letters, numbers, and dashes) Click “Create App” Tracking your app in git Before you can push an app to Heroku, you’ll need to initialize a local Git repository and commit your files to it. For example, if you have an app in a directory, myapp, then create a new repository for it: $ cd myapp $ git init Initialized empty Git repository in .git/ $ git add . $ git commit -m "my first commit" Created initial commit 5df2d09: my first commit 44 files changed, 8393 insertions(+), 0 deletions(-) create mode 100644 README create mode 100644 Procfile create mode 100644 app/controllers/source_file ... This is a local repository, now residing inside the .git directory. Nothing has been sent anywhere yet; you’ll need to create a remote and do a push to deploy your code to Heroku. Creating a Heroku remote Git remotes are references to remote repositories. You can have any number of these, but for now we’ll focus on just the remote to Heroku. The heroku create command creates a new application on Heroku – along with a git remote that must be used to receive your application source. $ heroku create Creating falling-wind-1624... done, stack is cedar-14 http://falling-wind-1624.herokuapp.com/ | https://git.heroku.com/falling-wind-1624.git Git remote heroku added By default, Heroku configures HTTP as the Git transport. The Heroku CLI will automatically place credentials in the .netrc file on heroku login. The Git client uses cURL when interacting with HTTP remotes, and cURL will use the credentials from the .netrc file. See the Authentication section and the CLI authentication article for details. You can verify the remote in your git configuration as well: $ git remote -v heroku https://git.heroku.com/falling-wind-1624.git (fetch) heroku https://git.heroku.com/falling-wind-1624.git (push) You can also take an existing Git repository and add a remote using the git URL provided when you created your app. You may need to do this to associate a Git repository with an existing application. The heroku git:remote command will add this remote for you based on your applications git url. $ heroku git:remote -a falling-wind-1624 Git remote heroku added. The remote is named heroku in this example, but you can name the remote anything you want by passing -r other_remote_name. You may find it easier to follow the examples if you stick to using the heroku remote rather than using one with a different name. There is one special remote name: origin, which is the default for pushes. Using origin as the remote name will allow you to type just git push instead of git push heroku, but we recommend using an explicitly named remote. Deploying code Your Heroku app starts with a blank repository – it has no branches and no code. So the first time you deploy, you’ll need to specify a remote branch to push to. You can do your first push: $ git push heroku master Initializing repository, done. updating 'refs/heads/master' ... This will push your code to the heroku remote, created earlier. Use this whenever you want to deploy the latest code committed in Git to Heroku. During the start of your first build, Initializing repository will be displayed while your app’s repository is created on Heroku. On subsequent builds, Fetching repository will be displayed while your app’s repository is fetched and prepared to accept your push. Branches pushed to Heroku other than master will be ignored by this command. If you’re working out of another branch locally, you can either merge to master before pushing, or specify that you want to push your local branch to a remote master.
RKGLearning
Never Give Up to Learning
zhangjingze21
No description available
ibrahim-elshar
CMU 10-703 Project: Never-Ending Learning Imitation Based Methods
chinumari-zz
Learning is the process that will never end. Learn and Share....
burhanHere
Practice of learning never ends play list: WIN-FORMS IN C# FOR BEGINNERS (Video11)
burhanHere
Practice of learning never ends play list: WIN-FORMS IN C# FOR BEGINNERS (Video6)
burhanHere
Practice of learning never ends play list: WIN-FORMS IN C# FOR BEGINNERS (Video1-5)
burhanHere
Practice of learning never ends play list: WIN-FORMS IN C# FOR BEGINNERS (Video12-13)
burhanHere
Practice project after learning from the learning never ends play list: WIN-FORMS IN C# FOR BEGINNERS. This project was made after video no 14
prettyquail
About this Course Kickstart your learning of Python for data science, as well as programming in general, with this beginner-friendly introduction to Python. Python is one of the world’s most popular programming languages, and there has never been greater demand for professionals with the ability to apply Python fundamentals to drive business solutions across industries. This course will take you from zero to programming in Python in a matter of hours—no prior programming experience necessary! You will learn Python fundamentals, including data structures and data analysis, complete hands-on exercises throughout the course modules, and create a final project to demonstrate your new skills. By the end of this course, you’ll feel comfortable creating basic programs, working with data, and solving real-world problems in Python. You’ll gain a strong foundation for more advanced learning in the field, and develop skills to help advance your career. This course can be applied to multiple Specialization or Professional Certificate programs. Completing this course will count towards your learning in any of the following programs: IBM Applied AI Professional Certificate Applied Data Science Specialization IBM Data Science Professional Certificate Upon completion of any of the above programs, in addition to earning a Specialization completion certificate from Coursera, you’ll also receive a digital badge from IBM recognizing your expertise in the field.
CharlesZ-Chen
No description available
navierula
New Year's Resolution 2017+2018: learn new programming languages :)