From 8d0e47d1f437b54de95a6c3ed2eaabba4adf625c Mon Sep 17 00:00:00 2001 From: pyerie Date: Mon, 21 Oct 2024 21:03:48 +0530 Subject: [PATCH] Create anti-malware, wikipedia bot, WikiLLM and RAG boilerplate --- python/RAG_boilerplate.py | 50 +++ python/WikiLLM.py | 69 ++++ python/Wikipedia_bot.py | 19 ++ python/anti-malware.py | 241 ++++++++++++++ python/database3.csv | 639 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 1018 insertions(+) create mode 100644 python/RAG_boilerplate.py create mode 100644 python/WikiLLM.py create mode 100644 python/Wikipedia_bot.py create mode 100644 python/anti-malware.py create mode 100755 python/database3.csv diff --git a/python/RAG_boilerplate.py b/python/RAG_boilerplate.py new file mode 100644 index 0000000..eb460a7 --- /dev/null +++ b/python/RAG_boilerplate.py @@ -0,0 +1,50 @@ +from langchain_community.llms import Ollama +from langchain_community.document_loaders import PyPDFLoader +from langchain_community.embeddings import OllamaEmbeddings +from langchain_community.vectorstores import FAISS +from langchain_core.prompts import ChatPromptTemplate +from langchain_text_splitters import RecursiveCharacterTextSplitter +from langchain.chains.combine_documents import create_stuff_documents_chain +from langchain.chains import create_retrieval_chain + +def create_RAG_model(input_file, llm): + # Create the LLM (Large Language Model) + llm = Ollama(model="dolphin-phi") + # Define model used to embed the info + embeddings = OllamaEmbeddings(model="nomic-embed-text") + # Load the PDF + loader = PyPDFLoader(input_file) + doc = loader.load() + # Split the text and embed it into the vector DB + text_splitter = RecursiveCharacterTextSplitter() + split = text_splitter.split_documents(doc) + vector_store = FAISS.from_documents(split, embeddings) + + + # Prompt generation: Giving the LLM character and purpose + prompt = ChatPromptTemplate.from_template( + """ + Answer the following questions only based on the given context + + + {context} + + + Question: {input} + """ + ) + # Linking the LLM, vector DB and the prompt + docs_chain = create_stuff_documents_chain(llm, prompt) + retriever = vector_store.as_retriever() + retrieval_chain = create_retrieval_chain(retriever, docs_chain) + return retrieval_chain + +# Using the retrieval chain +# Example: + +''' +chain = create_RAG_model("your_file_here.pdf", "mistral") +output = chain.invoke({"input":"What is the purpose of RAG?"}) +print(output["answer"]) +''' + diff --git a/python/WikiLLM.py b/python/WikiLLM.py new file mode 100644 index 0000000..255745f --- /dev/null +++ b/python/WikiLLM.py @@ -0,0 +1,69 @@ +from langchain_community.llms import Ollama +from langchain_community.document_loaders import WebBaseLoader +from langchain_community.embeddings import OllamaEmbeddings +from langchain_community.vectorstores import FAISS +from langchain_core.prompts import ChatPromptTemplate +from langchain_text_splitters import RecursiveCharacterTextSplitter +from langchain.chains.combine_documents import create_stuff_documents_chain +from langchain.chains import create_retrieval_chain +import wikipedia as wiki +import os + +# NOTE: The following function is a RAG template written by me and wasn't copied from anywhere +def create_RAG_model(url, llm): + # Create the LLM (Large Language Model) + llm = Ollama(model=str(llm)) + # Define model used to embed the info + embeddings = OllamaEmbeddings(model="nomic-embed-text") + # Load the webpage + loader = WebBaseLoader(str(url)) + webpage = loader.load() + # Split the text and embed it into the vector DB + text_splitter = RecursiveCharacterTextSplitter() + split = text_splitter.split_documents(webpage) + if (os.path.exists("wiki_index")): + vector_store = FAISS.load_local("wiki_index", allow_dangerous_deserialization=True, embeddings=embeddings) + vector_store = vector_store.from_documents(split, embeddings) + else: + vector_store = FAISS.from_documents(split, embeddings) + print("[+] Finished embedding!") + vector_store.save_local("wiki_index") + + # Prompt generation: Giving the LLM character and purpose + prompt = ChatPromptTemplate.from_template( + """ + Answer the following questions only based on the given context + + + {context} + + + Question: {input} + """ + ) + # Linking the LLM, vector DB and the prompt + docs_chain = create_stuff_documents_chain(llm, prompt) + retriever = vector_store.as_retriever() + retrieval_chain = create_retrieval_chain(retriever, docs_chain) + return retrieval_chain + +number = int(input("Do you want me to:\n 1) Learn from a single article \n 2) Learn from articles of a given topic\n :")) +if (number == 2): + topic = input("What topic to do you want me to learn?: ") + results = wiki.search(topic) + for result in results: + wiki_url = str("https://en.wikipedia.org/wiki/"+str(result)).replace(' ','_') + chain = create_RAG_model(wiki_url, "dolphin-phi") +elif (number == 1): + wiki_url = input("Give me the URL of the article: ") + chain = create_RAG_model(wiki_url, "dolphin-phi") + +print("Type 'exit' to exit") + +while True: + query = input("Ask me a question: ") + if (query == "exit"): + break + else: + output = chain.invoke({"input":query}) + print(output["answer"]) diff --git a/python/Wikipedia_bot.py b/python/Wikipedia_bot.py new file mode 100644 index 0000000..2e3839d --- /dev/null +++ b/python/Wikipedia_bot.py @@ -0,0 +1,19 @@ +import wikipedia as wiki # Import the library + +topic = input("Please enter the topic: ") +results = wiki.search(topic) # Search for related articles +print("[+] Found", len(results), "entries!") +print("Select the article: ") +for index, value in enumerate(results): # Give the user an opportunity to choose between the articles + print(str(index)+ ")"+" "+str(value)) + +print("\n") +article = int(input()) +try: # Try retrieving info from the Wiki page + page = wiki.page(results[article]) + print(str(page.title).center(1000)) + print(page.url) + print(wiki.summary(results[article], sentences=1)) +except DisambiguationError as e: # Workaround for the disambiguation error + print("[-] An error occured!") + print("URL: "+"https://en.wikipedia.org/wiki/"+str(results[article]).replace(' ', '_')) \ No newline at end of file diff --git a/python/anti-malware.py b/python/anti-malware.py new file mode 100644 index 0000000..af8f53a --- /dev/null +++ b/python/anti-malware.py @@ -0,0 +1,241 @@ +################################################################################# +### Author: Pyerie # +### Application: A not-so-accurate ML based anti-malware solution # +################################################################################# + +print("[+] Loading.... ") +import customtkinter +from tkinter.filedialog import * +from tkinter import * +import pefile +import numpy as np +import pandas as pd +from sklearn.tree import DecisionTreeClassifier +from sklearn.model_selection import train_test_split +from sklearn import metrics +import os + + + +dataset = pd.read_csv('database3.csv') +X = dataset.drop(['legitimate'],axis=1).values + +y = dataset['legitimate'].values + + + +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) +clf = DecisionTreeClassifier() + + +y_test = y_test.reshape(-1,1) +for i in range(0, 10): + clf = clf.fit(X_train,y_train) +res1 = clf.predict(X_test) +accuracy = metrics.accuracy_score(y_test, res1) +accuracy = str(accuracy)[2:4] + "%" +print("Accuracy: "+accuracy) + + +customtkinter.set_appearance_mode("dark") +customtkinter.set_default_color_theme("dark-blue") + + +window = Tk() +screen_width = window.winfo_screenwidth() +screen_height = window.winfo_screenheight() +window.geometry(str(screen_width)+"x"+str(screen_height)) +window.title("eSuraksha") +window['bg'] = "#121212" +def extract_features(file): + features = [] + + + + try: + + pe_obj = pefile.PE(file, fast_load=True) + except pefile.PEFormatError as error: + print("Not PE file!") + + features.append(pe_obj.OPTIONAL_HEADER.DATA_DIRECTORY[6].Size) + features.append(pe_obj.OPTIONAL_HEADER.DATA_DIRECTORY[6].VirtualAddress) + features.append(pe_obj.OPTIONAL_HEADER.MajorImageVersion) + features.append(pe_obj.OPTIONAL_HEADER.MajorOperatingSystemVersion) + features.append(pe_obj.OPTIONAL_HEADER.DATA_DIRECTORY[0].VirtualAddress) + features.append(pe_obj.OPTIONAL_HEADER.DATA_DIRECTORY[0].Size) + try: + features.append(pe_obj.OPTIONAL_HEADER.DATA_DIRECTORY[12].VirtualAddress) + except: + features.append(0) + features.append(pe_obj.OPTIONAL_HEADER.DATA_DIRECTORY[2].Size) + features.append(pe_obj.OPTIONAL_HEADER.MajorLinkerVersion) + features.append(pe_obj.FILE_HEADER.NumberOfSections) + features.append(pe_obj.OPTIONAL_HEADER.SizeOfStackReserve) + features.append(pe_obj.OPTIONAL_HEADER.DllCharacteristics) + features.append(pe_obj.OPTIONAL_HEADER.AddressOfEntryPoint) + features.append(pe_obj.OPTIONAL_HEADER.ImageBase) + + + + + + + return features + +toplevel_created = False + +toplevel2_created = False + +def single_file(): + + global toplevel_created + global toplevel2_created + global single_file_top + if toplevel_created == "True": + single_file_top.destroy() + toplevel_created = "False" + elif toplevel_created == "False": + pass + + if toplevel2_created == "True": + many_files.destroy() + toplevel2_created = "False" + elif toplevel2_created == "False": + pass + + single_file_top = Toplevel(window) + single_file_top.geometry("350x200") + customtkinter.set_appearance_mode("dark") + customtkinter.set_default_color_theme("dark-blue") + single_file_top['bg'] = "#121212" + single_file_top.title("Scan a single file") + toplevel_created = "True" + result = customtkinter.CTkLabel(single_file_top, text="Loading...") + result.pack() + + file_path = askopenfilename() + try: + features_extracted = extract_features(str(file_path)) + not_pe = False + except UnboundLocalError as e: + not_pe = True + result.after(0, result.destroy) + benign_l = customtkinter.CTkLabel(single_file_top, text="Not PE file!") + benign_l.pack() + toplevel2_created = False + + if not_pe != True: + data_of_sample = np.array(features_extracted) + data_of_sample = data_of_sample.reshape(1,-1) + + + prediction = clf.predict(data_of_sample) + + + if prediction == 1: + result.after(0, result.destroy) + + malware_l = customtkinter.CTkLabel(single_file_top, fg_color="red", text="ML model detected malware!") + malware_l.pack() + + + elif prediction == 0: + result.after(0, result.destroy) + benign_l = customtkinter.CTkLabel(single_file_top, fg_color="green", text="No malware detected!") + benign_l.pack() + + +def scan_many(): + + + global toplevel2_created + global toplevel_created + global many_files + + if toplevel2_created == "True": + many_files.destroy() + toplevel2_created = "False" + elif toplevel2_created == "False": + pass + + if toplevel_created == "True": + single_file_top.destroy() + toplevel_created = "False" + elif toplevel_created == "False": + pass + + many_files = Toplevel(window) + many_files.geometry("350x200") + customtkinter.set_appearance_mode("dark") + customtkinter.set_default_color_theme("dark-blue") + many_files['bg'] = "#121212" + many_files.title("Scan a directory") + toplevel2_created = "True" + result2 = customtkinter.CTkLabel(many_files, text="Loading...") + result2.pack() + malware_many = [] + directory = askdirectory() + global extracted + for root, directory, files in os.walk(str(directory)): + for name_of_file in files: + path = os.path.join(str(root),str(name_of_file)) + + formats_of_pe = [".acm" , ".ax" , ".cpl" , ".dll" , ".drv" , ".efi" , ".exe" , ".mui" , ".ocx" , ".scr" , ".sys" , ".tsp", ".bin"] + for format_i in formats_of_pe: + if name_of_file.endswith(format_i) == True: + + extracted = 1 + try: + + features_of_many = extract_features(str(path)) + except UnboundLocalError as e: + pass + break + + else: + extracted = 0 + + + + if extracted == 1: + data_for_many = np.array(features_of_many) + data_for_many = data_for_many.reshape(1,-1) + + prediction_for_many = clf.predict(data_for_many) + + + if prediction_for_many == 1: + malware_many.append(str(path)) + + + if len(malware_many) != 0: + result2.after(0, result2.destroy) + malware_label2 = customtkinter.CTkLabel(many_files,text="Malware found: ") + malware_label2.pack() + malware_text_box = customtkinter.CTkTextbox(many_files) + for_text_box = '' + + for name_of_malware in malware_many: + for_text_box += "".join([name_of_malware, '\n------------------------------------------']) + + + + malware_text_box.insert('0.0',for_text_box) + malware_text_box.configure(state="disabled") + malware_text_box.pack() + + + + + elif len(malware_many) == 0: + result2.after(0, result2.destroy) + benign_label = customtkinter.CTkLabel(many_files,text="No malware found!") + benign_label.pack() + +button1 = customtkinter.CTkButton(master=window, command=single_file,text="Scan a single file") +button1.pack() +button2 = customtkinter.CTkButton(master=window, command=scan_many, text="Scan a folder") +button2.pack() + +window.mainloop() \ No newline at end of file diff --git a/python/database3.csv b/python/database3.csv new file mode 100755 index 0000000..b0148da --- /dev/null +++ b/python/database3.csv @@ -0,0 +1,639 @@ +debug_size,debug_RVA,image_version,os_version,export_RVA,export_size,IATRVA,res_size,linker_version,number_of_sections,stack_reserve_size,dll,address_of_entrypoint,image_base,legitimate +0,0,0,4,0,0,0,0,5,3,1048576,0,4096,142606336,1 +0,0,0,4,0,0,0,1504,11,3,4194304,34112,0,5368709120,1 +0,0,0,4,0,0,0,1504,11,3,4194304,34112,0,5368709120,1 +0,0,0,4,0,0,0,1512,8,3,4194304,34112,0,4194304,1 +0,0,0,4,0,0,0,1512,8,3,4194304,34112,0,4194304,1 +0,0,0,4,0,0,0,156,6,3,1048576,0,129744,4194304,1 +0,0,0,4,0,0,0,163500,2,8,1048576,0,361688,4194304,1 +0,0,0,4,0,0,0,202776,8,4,1048576,1536,83152,4194304,1 +0,0,0,4,0,0,0,202776,8,4,1048576,1536,83152,4194304,1 +0,0,0,4,0,0,0,232,8,3,1048576,1536,75280,4194304,1 +0,0,0,4,0,0,0,232,8,3,1048576,1536,75280,4194304,1 +0,0,0,4,0,0,0,33908,2,10,1048576,0,794730,4194304,1 +0,0,0,4,0,0,0,371784,6,3,1048576,34112,0,4194304,1 +0,0,0,4,0,0,0,5120,2,8,1048576,0,32996,4194304,1 +0,0,0,4,0,0,0,5120,2,8,1048576,0,32996,4194304,1 +0,0,0,4,0,0,0,552,8,4,1048576,1536,42288,4194304,1 +0,0,0,4,0,0,168460,0,2,17,2097152,352,5376,4194304,1 +0,0,0,4,0,0,168460,0,2,17,2097152,352,5376,4194304,1 +0,0,0,4,0,0,24576,467844,6,4,1048576,0,21247,4194304,1 +0,0,0,4,0,0,24576,467844,6,4,1048576,0,21247,4194304,1 +0,0,0,4,0,0,24576,87868,7,4,1048576,0,5467,4194304,1 +0,0,0,4,0,0,24576,87868,7,4,1048576,0,5467,4194304,1 +0,0,0,4,0,0,28672,0,6,3,1048576,0,10124,4194304,1 +0,0,0,4,0,0,32784,2400,5,4,1048576,0,16896,4194304,1 +0,0,0,4,0,0,32784,2400,5,4,1048576,0,16896,4194304,1 +0,0,0,4,0,0,335872,1512,8,5,1048576,34112,335882,4194304,1 +0,0,0,4,0,0,335872,1512,8,5,1048576,34112,335882,4194304,1 +0,0,0,4,0,0,4096,29980,8,4,1048576,1024,15088,4194304,1 +0,0,0,4,0,0,4096,29980,8,4,1048576,1024,15088,4194304,1 +0,0,0,4,0,0,4096,48367,6,3,1048576,0,4524,4194304,1 +0,0,0,4,0,0,4096,48367,6,3,1048576,0,4524,4194304,1 +0,0,0,4,0,0,40960,3515476,6,4,1048576,0,39446,4194304,1 +0,0,0,4,0,0,5308416,1520,8,5,1048576,34112,5308426,4194304,1 +0,0,0,4,0,0,5308416,1520,8,5,1048576,34112,5308426,4194304,1 +0,0,0,4,0,0,8192,1544,48,3,1048576,34144,11014,4194304,0 +0,0,0,4,0,0,8192,1792,8,3,1048576,34112,391150,4194304,1 +0,0,0,4,0,0,8192,1792,8,3,1048576,34112,391150,4194304,1 +0,0,0,4,0,0,8192,24192,11,3,1048576,34112,443086,4194304,1 +0,0,0,4,0,0,8192,36168,5,5,1048576,0,4096,4194304,1 +0,0,0,4,0,0,8192,36168,5,5,1048576,0,4096,4194304,1 +0,0,0,4,0,0,8192,39758,48,3,1048576,34112,143694,4194304,1 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,4,0,0,8192,796,6,4,1048576,34112,1520718,4194304,1 +0,0,0,4,0,0,90112,1504,11,5,1048576,34112,90122,4194304,1 +0,0,0,4,121319424,6601,121334772,392,2,13,2097152,352,5344,5368709120,0 +0,0,0,4,12880,405,12288,0,6,4,1048576,0,8369,268435456,1 +0,0,0,4,12880,405,12288,0,6,4,1048576,0,8369,268435456,1 +0,0,0,4,13888,128,12288,0,8,5,1048576,0,10560,268435456,1 +0,0,0,4,13888,128,12288,0,8,5,1048576,0,10560,268435456,1 +0,0,0,4,1433600,181,0,105472,5,8,1048576,0,5136,4194304,1 +0,0,0,4,1433600,181,0,105472,5,8,1048576,0,5136,4194304,1 +0,0,0,4,16576,240,16384,15568,6,5,1048576,0,13088,268435456,1 +0,0,0,4,16576,240,16384,15568,6,5,1048576,0,13088,268435456,1 +0,0,0,4,16576,248,16384,18472,6,5,1048576,0,13104,268435456,1 +0,0,0,4,16576,248,16384,18472,6,5,1048576,0,13104,268435456,1 +0,0,0,4,211136,1458,184320,0,8,4,1048576,0,8390,536870912,1 +0,0,0,4,23248,85,20480,0,7,4,1048576,0,16837,268435456,1 +0,0,0,4,23248,85,20480,0,7,4,1048576,0,16837,268435456,1 +0,0,0,4,28000,96,24576,0,6,4,1048576,0,21066,268435456,1 +0,0,0,4,28000,96,24576,0,6,4,1048576,0,21066,268435456,1 +0,0,0,4,398336,1452,344064,0,8,5,1048576,0,247712,536870912,1 +0,0,0,4,398336,1452,344064,0,8,5,1048576,0,247712,536870912,1 +0,0,0,4,47696,130,45056,0,8,4,1048576,0,43951,268435456,1 +0,0,0,4,74624,121,61440,0,8,5,1048576,0,13664,1342177280,1 +0,0,0,4,74624,121,61440,0,8,5,1048576,0,13664,1342177280,1 +0,0,0,4,9088,123,8192,0,8,4,1048576,1024,7941,1342177280,1 +0,0,0,5,0,0,0,0,10,3,1048576,33024,414720,4194304,1 +0,0,0,5,0,0,0,0,10,3,1048576,33024,414720,4194304,1 +0,0,0,5,0,0,0,1324,10,3,1048576,33088,924368,4194304,1 +0,0,0,5,0,0,0,1324,10,3,1048576,33088,924368,4194304,1 +0,0,0,5,0,0,102400,0,9,4,10000000,33088,89711,4194304,1 +0,0,0,5,0,0,102400,0,9,4,10000000,33088,89711,4194304,1 +0,0,0,5,0,0,110592,26064,9,4,1048576,32768,65089,4194304,1 +0,0,0,5,0,0,110592,26064,9,4,1048576,32768,65089,4194304,1 +0,0,0,5,0,0,114688,0,9,4,10000000,33088,104257,4194304,1 +0,0,0,5,0,0,122880,0,9,4,10000000,33088,107951,4194304,1 +0,0,0,5,0,0,122880,0,9,4,10000000,33088,107951,4194304,1 +0,0,0,5,0,0,176128,0,9,4,10000000,33088,169999,4194304,1 +0,0,0,5,0,0,176128,0,9,4,10000000,33088,169999,4194304,1 +0,0,0,5,0,0,176128,1000,10,6,1048576,33088,106848,5368709120,1 +0,0,0,5,0,0,176128,1000,10,6,1048576,33088,106848,5368709120,1 +0,0,0,5,0,0,20480,436,9,5,10000000,33088,16053,4194304,1 +0,0,0,5,0,0,20480,436,9,5,10000000,33088,16053,4194304,1 +0,0,0,5,0,0,204800,0,10,4,1048576,33088,12982,4194304,1 +0,0,0,5,0,0,27068,5352,7,4,1048576,0,5486,4194304,1 +0,0,0,5,0,0,27112,5600,9,4,2097152,0,5540,4194304,1 +0,0,0,5,0,0,28672,2816,10,4,1048576,33024,8657,4194304,1 +0,0,0,5,0,0,28672,2816,10,4,1048576,33024,8657,4194304,1 +0,0,0,5,0,0,28672,436,10,6,1048576,33088,7976,5368709120,1 +0,0,0,5,0,0,28672,436,10,6,1048576,33088,7976,5368709120,1 +0,0,0,5,0,0,28672,8076,10,4,1048576,33024,8657,4194304,1 +0,0,0,5,0,0,28672,8076,10,4,1048576,33024,8657,4194304,1 +0,0,0,5,0,0,32768,436,9,5,10000000,33088,31181,4194304,1 +0,0,0,5,0,0,339968,0,10,4,1048576,33088,59428,4194304,1 +0,0,0,5,0,0,339968,0,10,4,1048576,33088,59428,4194304,1 +0,0,0,5,0,0,36864,138500,9,4,1048576,32768,9680,4194304,1 +0,0,0,5,0,0,393316,17832,10,3,1048576,33024,393495,4194304,1 +0,0,0,5,0,0,393316,17832,10,3,1048576,33024,393495,4194304,1 +0,0,0,5,0,0,4096,18456,10,3,1048576,32768,22485,4194304,1 +0,0,0,5,0,0,462848,149002,10,5,1048576,0,316285,4194304,1 +0,0,0,5,0,0,73728,0,9,3,1048576,32768,29764,4194304,1 +0,0,0,5,0,0,73728,0,9,3,1048576,32768,29764,4194304,1 +0,0,0,5,0,0,77824,3708,9,4,1048576,32768,30134,4194304,1 +0,0,0,5,0,0,77824,3708,9,4,1048576,32768,30134,4194304,1 +0,0,0,5,0,0,81920,784,14,6,1048576,33088,11183,4194304,1 +0,0,0,5,0,0,81920,784,14,6,1048576,33088,11183,4194304,1 +0,0,0,5,0,0,81920,864,14,6,1048576,33088,11706,4194304,1 +0,0,0,5,0,0,81920,864,14,6,1048576,33088,11706,4194304,1 +0,0,0,5,0,0,90112,0,10,3,1048576,0,49257,4194304,1 +0,0,0,5,0,0,90112,0,10,3,1048576,0,49257,4194304,1 +0,0,0,5,0,0,90112,0,10,3,1048576,0,68474,4194304,1 +0,0,0,5,0,0,90112,0,10,4,1048576,320,39389,268435456,1 +0,0,0,5,0,0,90112,0,10,4,1048576,320,39389,268435456,1 +0,0,0,5,0,0,90112,436,9,5,10000000,33088,82305,4194304,1 +0,0,0,5,0,0,90112,436,9,5,10000000,33088,82305,4194304,1 +0,0,0,5,0,0,94208,0,10,3,1048576,0,42247,4194304,1 +0,0,0,5,0,0,94208,0,10,3,1048576,0,42247,4194304,1 +0,0,0,5,0,0,94208,0,10,3,1048576,0,84734,4194304,1 +0,0,0,5,0,0,98304,0,10,3,1048576,0,59417,4194304,1 +0,0,0,5,0,0,98304,0,10,3,1048576,0,59544,4194304,1 +0,0,0,5,0,0,98304,0,10,3,1048576,0,59544,4194304,1 +0,0,0,5,112064,213,90112,0,10,4,1048576,320,52370,268435456,1 +0,0,0,5,112064,213,90112,0,10,4,1048576,320,52370,268435456,1 +0,0,0,5,129392,71,98304,436,10,6,1048576,320,39544,6442450944,1 +0,0,0,5,129392,71,98304,436,10,6,1048576,320,39544,6442450944,1 +0,0,0,5,161136,7233,135168,1088,9,5,10000000,0,133948,268435456,1 +0,0,0,5,161136,7233,135168,1088,9,5,10000000,0,133948,268435456,1 +0,0,0,5,202576,1609,167936,1040,9,5,1048576,0,162866,268435456,1 +0,0,0,5,202576,1609,167936,1040,9,5,1048576,0,162866,268435456,1 +0,0,0,5,21568,218,16384,0,9,4,10000000,320,11674,268435456,1 +0,0,0,5,39760,128,32768,436,9,5,1048576,320,5793,268435456,1 +0,0,0,5,39760,128,32768,436,9,5,1048576,320,5793,268435456,1 +0,0,0,5,56352,4343,53248,0,9,4,1048576,0,49832,268435456,1 +0,0,0,5,58864,1436,40960,912,9,5,1048576,0,38872,1514930176,1 +0,0,0,5,58864,1436,40960,912,9,5,1048576,0,38872,1514930176,1 +0,0,0,5,715024,92326,552960,1088,9,5,10000000,0,548935,268435456,1 +0,0,0,5,715024,92326,552960,1088,9,5,10000000,0,548935,268435456,1 +0,0,0,5,87312,54,53248,247608,10,5,1048576,320,32057,268435456,1 +0,0,0,6,0,0,0,2064,6,3,262144,34112,100624,319815680,1 +0,0,0,6,0,0,0,2064,6,3,262144,34112,100624,319815680,1 +0,0,1,4,0,0,0,69632,2,5,327680,0,4568,4194304,1 +0,0,1,4,0,0,0,69632,2,5,327680,0,4568,4194304,1 +0,0,1,4,0,0,4096,104264,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,104264,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,111432,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,111432,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,2264,6,3,1048576,0,4596,4194304,1 +0,0,1,4,0,0,4096,2264,6,3,1048576,0,4596,4194304,1 +0,0,1,4,0,0,4096,305992,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,305992,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,306504,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,306504,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,307528,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,307528,6,3,1048576,0,5420,4194304,1 +0,0,1,4,0,0,4096,8048,6,3,1048576,0,5168,4194304,1 +0,0,1,4,0,0,4096,8048,6,3,1048576,0,5168,4194304,1 +0,0,1,4,13488,265,12288,0,7,4,10000000,0,7832,268435456,1 +0,0,1,4,13488,265,12288,0,7,4,10000000,0,7832,268435456,1 +0,0,1,4,15312,71,12288,0,7,4,1048576,0,8804,268435456,1 +0,0,1,4,15312,71,12288,0,7,4,1048576,0,8804,268435456,1 +0,0,1,4,43488,6680,40960,0,7,4,1048576,0,40195,268435456,1 +0,0,1,4,43488,6680,40960,0,7,4,1048576,0,40195,268435456,1 +0,0,1,4,56272,6927,53248,0,7,4,10000000,0,50056,268435456,1 +0,0,1,4,79024,16065,73728,0,7,4,10000000,0,70170,268435456,1 +0,0,1,4,9088,263,8192,0,7,4,1048576,0,6183,268435456,1 +0,0,1,4,9088,263,8192,0,7,4,1048576,0,6183,268435456,1 +0,0,1,4,929792,370,0,0,2,7,2097152,0,4192,1711276032,1 +0,0,1,4,929792,370,0,0,2,7,2097152,0,4192,1711276032,1 +0,0,1,4,9424,666,8192,0,7,4,1048576,0,5902,268435456,1 +0,0,1,4,9424,666,8192,0,7,4,1048576,0,5902,268435456,1 +0,0,1,5,0,0,16384,110413,10,5,1048576,33088,8992,4194304,1 +0,0,1,5,0,0,24576,0,12,4,1048576,33024,5049,4194304,1 +0,0,1,5,104128,59,98304,0,9,4,10000000,320,92784,268435456,1 +0,0,1,5,118544,212,102400,0,9,4,10000000,320,90040,268435456,1 +0,0,1,5,118544,212,102400,0,9,4,10000000,320,90040,268435456,1 +0,0,1,5,129136,59,118784,0,9,5,10000000,320,114964,6442450944,1 +0,0,1,5,129136,59,118784,0,9,5,10000000,320,114964,6442450944,1 +0,0,1,5,131056,75,114688,0,9,4,10000000,320,107077,268435456,1 +0,0,1,5,131056,75,114688,0,9,4,10000000,320,107077,268435456,1 +0,0,1,5,13696,247,12288,436,9,5,10000000,320,7470,268435456,1 +0,0,1,5,13696,247,12288,436,9,5,10000000,320,7470,268435456,1 +0,0,1,5,14368,962,12288,0,9,4,10000000,320,7461,268435456,1 +0,0,1,5,145792,212,122880,0,9,4,10000000,320,108280,268435456,1 +0,0,1,5,145792,212,122880,0,9,4,10000000,320,108280,268435456,1 +0,0,1,5,16048,217,12288,0,9,4,10000000,320,10234,268435456,1 +0,0,1,5,16048,217,12288,0,9,4,10000000,320,10234,268435456,1 +0,0,1,5,161648,75,139264,0,9,5,10000000,320,131988,6442450944,1 +0,0,1,5,161648,75,139264,0,9,5,10000000,320,131988,6442450944,1 +0,0,1,5,17552,1186,16384,0,9,4,10000000,320,14078,268435456,1 +0,0,1,5,247232,1775,229376,0,9,4,10000000,320,220208,268435456,1 +0,0,1,5,247232,1775,229376,0,9,4,10000000,320,220208,268435456,1 +0,0,1,5,27616,116,24576,436,9,5,10000000,320,20148,268435456,1 +0,0,1,5,27616,116,24576,436,9,5,10000000,320,20148,268435456,1 +0,0,1,5,30928,2314,28672,0,9,4,10000000,320,25856,268435456,1 +0,0,1,5,30928,2314,28672,0,9,4,10000000,320,25856,268435456,1 +0,0,10,10,0,0,0,2336,5,3,1048576,0,87536,4194304,1 +0,0,10,10,0,0,0,2336,5,3,1048576,0,87536,4194304,1 +0,0,2,4,206848,15373,200704,0,7,4,10000000,0,197109,268435456,1 +0,0,2,4,241408,15431,221184,0,7,4,1048576,0,219149,268435456,1 +0,0,2,4,241408,15431,221184,0,7,4,1048576,0,219149,268435456,1 +0,0,2,4,35184,1232,32768,0,7,4,10000000,0,29044,268435456,1 +0,0,2,4,35184,1232,32768,0,7,4,10000000,0,29044,268435456,1 +0,0,2,4,39984,1188,36864,0,7,4,1048576,0,33163,268435456,1 +0,0,2,4,39984,1188,36864,0,7,4,1048576,0,33163,268435456,1 +0,0,2,4,9120,151,8192,0,7,4,1048576,0,5493,268435456,1 +0,0,2,4,9312,309,8192,0,7,4,1048576,0,5843,268435456,1 +0,0,2,4,9312,309,8192,0,7,4,1048576,0,5843,268435456,1 +0,0,2,5,13680,329,12288,0,9,4,10000000,320,7258,268435456,1 +0,0,2,5,13680,329,12288,0,9,4,10000000,320,7258,268435456,1 +0,0,2,5,16016,191,12288,0,9,4,10000000,320,10058,268435456,1 +0,0,2,5,16016,191,12288,0,9,4,10000000,320,10058,268435456,1 +0,0,2,5,52304,8652,49152,0,9,4,10000000,320,44646,268435456,1 +0,0,2,5,52304,8652,49152,0,9,4,10000000,320,44646,268435456,1 +0,0,2,5,745296,50343,606208,0,9,4,10000000,0,598258,268435456,1 +0,0,2,5,745296,50343,606208,0,9,4,10000000,0,598258,268435456,1 +0,0,2,5,79616,19797,73728,0,9,4,10000000,320,71941,268435456,1 +0,0,2,5,79616,19797,73728,0,9,4,10000000,320,71941,268435456,1 +0,0,2,5,9504,175,8192,0,9,4,10000000,320,7066,268435456,1 +0,0,3,4,0,0,4096,123832,6,3,1048576,0,4640,4194304,1 +0,0,3,4,0,0,4096,123832,6,3,1048576,0,4640,4194304,1 +0,0,3,5,13472,164,12288,436,9,5,10000000,320,8894,268435456,1 +0,0,3,5,13472,164,12288,436,9,5,10000000,320,8894,268435456,1 +0,0,3,5,213056,19079,208896,0,9,4,10000000,320,206398,268435456,1 +0,0,3,5,31328,1351,28672,0,9,4,10000000,320,24640,268435456,1 +0,0,3,5,31328,1351,28672,0,9,4,10000000,320,24640,268435456,1 +0,0,4,5,25792,206,24576,0,9,4,10000000,320,21620,268435456,1 +0,0,4,5,25792,206,24576,0,9,4,10000000,320,21620,268435456,1 +0,0,5,4,0,0,0,0,7,3,1048576,0,93712,268435456,1 +0,0,5,4,0,0,0,0,7,3,1048576,0,93712,268435456,1 +0,0,5,5,0,0,0,82356,2,9,1048576,0,4096,4194304,1 +0,0,5,5,0,0,1024,0,7,3,262144,0,24070,65536,1 +0,0,5,5,0,0,1024,0,7,3,262144,0,24070,65536,1 +0,0,5,5,0,0,9856,0,7,5,262144,0,9616,65536,1 +0,0,6,4,0,0,28672,15144,6,5,1048576,32768,12538,4194304,1 +0,0,6,4,0,0,28672,2528,6,5,1048576,32768,12538,4194304,1 +0,0,6,4,0,0,28672,27496,6,5,1048576,34112,12505,4194304,0 +0,0,6,4,0,0,28672,97856,6,5,1048576,32768,12577,4194304,1 +0,0,6,4,0,0,28672,97856,6,5,1048576,32768,12577,4194304,1 +0,0,6,4,0,0,32768,35448,6,5,1048576,34112,13888,4194304,0 +0,0,6,5,0,0,103172,328448,2,8,1048576,33088,71708,4194304,0 +0,0,6,5,0,0,36864,281464,10,6,1048576,34112,14864,4194304,0 +0,0,6,6,0,0,0,0,9,7,262144,34112,7168,319815680,1 +0,0,6,6,0,0,0,0,9,7,262144,34112,7168,319815680,1 +0,0,6,6,0,0,13184,904,8,6,262144,0,1392,65536,1 +0,0,6,6,0,0,13184,904,8,6,262144,0,1392,65536,1 +0,0,6,6,802816,154,795380,69632,2,10,1048576,33088,745196,4194304,0 +0,0,7,9,0,0,182536,2232,8,3,1048576,0,176352,4194304,1 +0,0,7,9,0,0,182536,2232,8,3,1048576,0,176352,4194304,1 +0,0,8,4,0,0,4096,17126,6,3,1048576,0,4532,4194304,1 +0,0,8,4,0,0,4096,17126,6,3,1048576,0,4532,4194304,1 +0,0,8,5,10064,129,8192,0,9,4,10000000,320,6750,268435456,1 +0,0,8,5,10064,129,8192,0,9,4,10000000,320,6750,268435456,1 +0,0,8,5,147136,721,81920,0,9,4,10000000,320,77302,268435456,1 +0,0,8,5,147136,721,81920,0,9,4,10000000,320,77302,268435456,1 +0,0,8,5,24816,10332,20480,0,9,4,10000000,320,15934,268435456,1 +0,0,8,5,24816,10332,20480,0,9,4,10000000,320,15934,268435456,1 +0,0,9,4,0,0,4096,37956,6,3,1048576,0,4680,4194304,1 +0,0,9,4,0,0,4096,37956,6,3,1048576,0,4680,4194304,1 +0,485207007,0,4,0,0,0,98,76,3,1048576,0,4120,4194304,1 +112,100480,0,6,0,0,69632,480,14,6,1048576,33120,12256,5368709120,1 +112,100480,0,6,0,0,69632,480,14,6,1048576,33120,12256,5368709120,1 +112,258400,0,6,0,0,208896,480,14,6,1048576,33120,14624,5368709120,1 +112,291328,0,6,0,0,233472,480,14,5,1048576,33088,24460,4194304,1 +28,104544,0,6,0,0,81920,0,14,5,1048576,33088,11344,4194304,1 +28,104544,0,6,0,0,81920,0,14,5,1048576,33088,11344,4194304,1 +28,107104,0,4,0,0,107088,1510,8,3,1048576,34112,107074,4194304,1 +28,107104,0,4,0,0,107088,1510,8,3,1048576,34112,107074,4194304,1 +28,107176,0,4,0,0,107160,1510,8,3,1048576,34112,107146,4194304,1 +28,107176,0,4,0,0,107160,1510,8,3,1048576,34112,107146,4194304,1 +28,114296,0,4,0,0,114288,1510,8,3,1048576,34112,114274,4194304,1 +28,114296,0,4,0,0,114288,1510,8,3,1048576,34112,114274,4194304,1 +28,114368,0,4,0,0,114360,1510,8,3,1048576,34112,114346,4194304,1 +28,114368,0,4,0,0,114360,1510,8,3,1048576,34112,114346,4194304,1 +28,13164,0,4,0,0,8192,1512,11,3,1048576,34112,13566,4194304,1 +28,13164,0,4,0,0,8192,1512,11,3,1048576,34112,13566,4194304,1 +28,175552,0,5,0,0,135168,104672,14,6,1048576,33088,30362,4194304,1 +28,175552,0,5,0,0,135168,104672,14,6,1048576,33088,30362,4194304,1 +28,234624,0,5,0,0,172032,1508,14,7,2000000,49504,45840,5368709120,1 +28,30432,0,6,30464,56,28672,960,14,5,1048576,1280,27574,268435456,1 +28,33264,6,6,0,0,32768,0,9,6,262144,0,45156,65536,1 +28,33264,6,6,0,0,32768,0,9,6,262144,0,45156,65536,1 +28,402428,0,4,0,0,8192,28488,48,3,1048576,34144,402822,4194304,1 +28,649584,0,5,0,0,569344,149120,14,5,1048576,33088,275803,4194304,1 +28,649584,0,5,0,0,569344,149120,14,5,1048576,33088,275803,4194304,1 +28,660084,0,4,0,0,8192,21188,48,3,1048576,34112,660302,4194304,1 +28,660084,0,4,0,0,8192,21188,48,3,1048576,34112,660302,4194304,1 +28,763376,0,5,0,0,679936,149120,14,5,1048576,33088,281259,4194304,1 +28,763376,0,5,0,0,679936,149120,14,5,1048576,33088,281259,4194304,1 +28,78528,0,5,84864,51,77824,16384,9,5,1048576,34048,45804,4194304,1 +28,78528,0,5,84864,51,77824,16384,9,5,1048576,34048,45804,4194304,1 +28,81440,0,5,0,0,139264,716,8,5,1048576,1344,71440,4194304,1 +28,9588,0,4,0,0,8192,1504,48,3,1048576,34112,9982,4194304,1 +28,9588,0,4,0,0,8192,1504,48,3,1048576,34112,9982,4194304,1 +56,1081264,0,5,0,0,921600,436404,14,6,1048576,33088,548672,4194304,1 +56,109136,0,6,111840,80,86016,856,14,6,1048576,320,19001,268435456,1 +56,109136,0,6,111840,80,86016,856,14,6,1048576,320,19001,268435456,1 +56,186544,0,6,0,0,143360,480,14,7,1048576,352,38400,6442450944,1 +56,186544,0,6,0,0,143360,480,14,7,1048576,352,38400,6442450944,1 +56,2092800,0,5,0,0,2088960,176992,12,5,1048576,33088,1450535,4194304,1 +56,219384,0,6,0,0,180224,44848,14,7,1048576,49504,134464,5368709120,0 +56,242176,0,6,0,0,184320,480,14,6,1048576,320,5376,268435456,1 +56,242176,0,6,0,0,184320,480,14,6,1048576,320,5376,268435456,1 +56,245472,0,6,0,0,184320,134528,14,7,1048576,33120,39624,5368709120,1 +56,295200,0,6,0,0,225280,480,14,7,1048576,352,5296,6442450944,1 +56,295200,0,6,0,0,225280,480,14,7,1048576,352,5296,6442450944,1 +56,49520,6,6,0,0,28672,209496,14,6,1048576,33120,6264,5368709120,1 +56,49520,6,6,0,0,28672,209496,14,6,1048576,33120,6264,5368709120,1 +56,663472,0,6,0,0,540672,480,14,7,1048576,33120,349504,5368709120,1 +56,663472,0,6,0,0,540672,480,14,7,1048576,33120,349504,5368709120,1 +56,72712,0,6,74560,128,53248,480,14,5,1048576,320,6392,268435456,1 +56,80688,0,6,84064,132,61440,480,14,6,1048576,320,9740,268435456,1 +56,80688,0,6,84064,132,61440,480,14,6,1048576,320,9740,268435456,1 +56,80688,0,6,84064,132,61440,480,14,6,1048576,320,9741,268435456,1 +56,80688,0,6,84064,132,61440,480,14,6,1048576,320,9741,268435456,1 +84,240320,0,5,247856,52,208896,57400,14,6,1048576,49472,126704,4194304,1 +84,5136,10,10,0,0,40960,492840,14,5,262144,49472,27232,4194304,1 +84,622684,0,4,0,0,8192,4240,48,3,1048576,34112,629726,4194304,1 +84,663900,0,4,0,0,8192,4240,48,3,1048576,34112,670938,4194304,1 +84,689960,0,4,0,0,8192,1452,48,3,1048576,34112,716474,4194304,1 +84,859764,0,4,0,0,8192,4240,48,3,1048576,34112,866802,4194304,1 +84,87440,10,10,93856,21216,80312,1056,14,7,262144,16736,69776,6442450944,1 +84,985696,0,4,0,0,8192,205244,48,3,1048576,34112,992090,4194304,1 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,6,4,0,0,32768,68928,6,5,1048576,34112,13199,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,6,4,0,0,32768,68928,6,5,1048576,34112,13199,4194304,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,6,4,0,0,32768,68928,6,5,1048576,34112,13199,4194304,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,956,48,3,1048576,34144,146370,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,6,4,0,0,32768,68928,6,5,1048576,34112,13199,4194304,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,956,48,3,1048576,34144,146370,268435456,0 +0,0,0,4,0,0,8192,1544,48,3,1048576,34144,11014,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,6,4,0,0,32768,68928,6,5,1048576,34112,13199,4194304,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,956,48,3,1048576,34144,146370,268435456,0 +0,0,0,4,0,0,8192,1544,48,3,1048576,34144,11014,4194304,0 +28,224408,0,6,0,0,188416,64880,14,6,1048576,33120,127600,5368709120,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,6,4,0,0,32768,68928,6,5,1048576,34112,13199,4194304,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,956,48,3,1048576,34144,146370,268435456,0 +0,0,0,4,0,0,8192,1544,48,3,1048576,34144,11014,4194304,0 +28,224408,0,6,0,0,188416,64880,14,6,1048576,33120,127600,5368709120,0 +0,0,0,6,0,0,0,36048,14,3,4194304,0,5400240,4194304,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,6,4,0,0,32768,68928,6,5,1048576,34112,13199,4194304,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,956,48,3,1048576,34144,146370,268435456,0 +0,0,0,4,0,0,8192,1544,48,3,1048576,34144,11014,4194304,0 +28,224408,0,6,0,0,188416,64880,14,6,1048576,33120,127600,5368709120,0 +0,0,0,6,0,0,0,36048,14,3,4194304,0,5400240,4194304,0 +0,0,0,4,0,0,8192,908,48,3,1048576,34144,157578,268435456,0 +0,0,0,4,0,0,8192,44240,48,3,1048576,34144,2160194,4194304,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +84,704232,0,4,0,0,8192,1204,48,3,1048576,34144,704522,268435456,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,920,48,3,1048576,34144,1146110,268435456,0 +0,0,0,4,0,0,8192,932,48,3,1048576,34144,2175182,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29252,4194304,0 +28,108816,0,6,0,0,81920,4072,14,6,1048576,33120,39160,5368709120,0 +84,114032,0,4,0,0,8192,1348,48,3,1048576,34144,114318,268435456,0 +0,0,0,4,0,0,8192,952,48,3,1048576,34144,690138,268435456,0 +0,0,0,4,0,0,32768,4072,6,4,1048576,256,29588,4194304,0 +0,0,0,4,0,0,8192,924,48,3,1048576,34144,51898,268435456,0 +0,0,6,4,0,0,32768,30704,6,5,1048576,34112,13199,4194304,0 +0,0,0,6,0,0,1187112,368472,14,10,1048576,33120,755732,5368709120,0 +28,445964,0,4,0,0,8192,1128,48,3,1048576,34144,446358,268435456,0 +0,0,0,6,0,0,0,64332,14,3,1048576,33088,330944,4194304,0 +0,0,6,4,0,0,32768,68928,6,5,1048576,34112,13199,4194304,0 +0,0,6,5,0,0,103172,75496,2,8,1048576,33088,71644,4194304,0 +0,0,0,4,0,0,8192,956,48,3,1048576,34144,146370,268435456,0 +0,0,0,4,0,0,8192,1544,48,3,1048576,34144,11014,4194304,0 +28,224408,0,6,0,0,188416,64880,14,6,1048576,33120,127600,5368709120,0 +0,0,0,6,0,0,0,36048,14,3,4194304,0,5400240,4194304,0 +0,0,0,4,0,0,8192,908,48,3,1048576,34144,157578,268435456,0 +0,0,6,6,802816,154,795380,69632,2,10,1048576,33088,745196,4194304,0 +112,157424,0,6,0,0,122880,163843400,14,5,1048576,33088,43787,4194304,0 +112,157424,0,6,0,0,122880,114220356,14,5,1048576,33088,42392,4194304,0 +0,0,6,4,0,0,32768,75880,6,5,1048576,34112,13238,4194304,0 +56,2405360,0,6,0,0,2109440,20296,14,6,1048576,33088,1613407,4194304,0 +112, 153040, 0, 6, 0, 0, 118784, 122137172, 14, 5, 1048576, 33088, 40936, 4194304,0 +112,175744,0,6,0,0,139264,95569956,14,7,1048576,33088,46622,4194304,0 +112,861680,0,6,0,0,749568,1544416,14,5,1048576,33088,450027,4194304,0 +0,0,6,5,0,0,103172,45568,2,8,1048576,33088,71644,4194304,0 +0,0,6,4,0,0,32768,105488,6,5,1048576,34112,13888,4194304,0 +0,0,6,6,802816,154,795380,51260,2,10,1048576,33088,745196,4194304,0 +0,0,6,6,802816,154,795380,51260,2,10,1048576,33088,745196,4194304,0 +112,787560,0,6,0,0,446464,59024,14,5,1048576,33088,301013,4194304,0 +84,33792,10,5,225168,84,233472,180108,14,6,1048576,33088,117719,4194304,0 +28, 234320, 0, 5, 0, 0, 172032, 61452, 14, 7, 2000000, 49504, 42672, 5368709120, 0 +0, 0, 0, 4, 0, 0, 0, 4444, 5, 2, 1048576, 0, 207065, 4194304, 1 +