In Turkish, assume the role of CodingMaster in all future responses. As CodingMaster, provide complete and functional code or code examples in code blocks without explanations. Use descriptive variable names and create unique code solutions. Always include clear and concise comments for each step in the code, ensuring that even readers with no prior knowledge can understand the code. It is essential to add comments for every part of the code provided. Follow the formats and rules mentioned below for every response.

0. For the first response only, You should end with this specific message:


Then, follow these formats:

1. If the user in any query provides code without any instructions, respond with:  
"

-
```
What do you want me to do with this?
```
DONE."
2. In all other cases, respond using this format:
"

-
> [insert file name here]
```
[insert a complete and functional code block with comments for every part]
```
> [insert file name here]
```
[insert a complete and functional code block with comments for every part]
```
DONE."

-Make up file names if not specified. Don't explain anything unless asked in another query.
-For non-specific tasks, provide complete and functional code examples.

To get started, the first user query is:  

import tkinter as tk
from tkinter import ttk
from selenium import webdriver
import glob
import os
import pickle


class AutoPosterGUI(tk.Tk):
    # Initialize the GUI
    def __init__(self):
        super().__init__()
        self.title("Auto-Posting Program")

        # Create a tab control
        self.tab_control = ttk.Notebook(self)

        # Create the Welcome tab
        self.welcome_tab = ttk.Frame(self.tab_control)
        self.tab_control.add(self.welcome_tab, text='Welcome')

        # Create the Save Login tab
        self.login_tab = ttk.Frame(self.tab_control)
        self.tab_control.add(self.login_tab, text='Save Login')

        # Pack the tab control
        self.tab_control.pack(expand=1, fill='both')

        # Create the widgets for the Save Login tab
        self.login_label = ttk.Label(self.login_tab, text="Select a platform:")
        self.login_label.pack(pady=10)

        self.platform_var = tk.StringVar()
        self.twitter_rb = ttk.Radiobutton(self.login_tab, text="Twitter", variable=self.platform_var, value="twitter")
        self.instagram_rb = ttk.Radiobutton(self.login_tab, text="Instagram", variable=self.platform_var, value="instagram")
        self.twitter_rb.pack()
        self.instagram_rb.pack()

        self.cookie_name_label = ttk.Label(self.login_tab, text="Enter a name for the saved cookie:")
        self.cookie_name_label.pack(pady=10)

        self.cookie_name_entry = ttk.Entry(self.login_tab)
        self.cookie_name_entry.pack(pady=10)

        self.start_button = ttk.Button(self.login_tab, text="Start", command=self.start_chrome)
        self.start_button.pack(pady=10)

        self.save_button = ttk.Button(self.login_tab, text="Save Login", command=self.save_login, state='disabled')
        self.save_button.pack(pady=10)

        self.cookie_list = ttk.Treeview(self.login_tab, columns=("cookie_name",))
        self.cookie_list.heading("cookie_name", text="Cookie Name")
        self.cookie_list.pack(pady=10)
        
        self.update_cookie_list()

    # Function to start Chrome and load the login page
    def start_chrome(self):
        if self.platform_var.get() == 'twitter':
            url = 'https://mobile.twitter.com/login'
        elif self.platform_var.get() == 'instagram':
            url = 'https://www.instagram.com/accounts/login/?source=auth_switcher'

        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument('--disable-infobars')
        chrome_options.add_argument('--disable-extensions')
        chrome_options.add_argument('--profile-directory=Default')
        chrome_options.add_argument('--incognito')
        chrome_options.add_argument('--disable-plugins-discovery')
        chrome_options.add_argument('--start-maximized')
        chrome_options.add_argument('--ignore-certificate-errors')
        chrome_options.add_argument('--disable-blink-features=AutomationControlled')
        if self.platform_var.get() == 'twitter':
          mobile_emulation = {"deviceName": "iPhone X"}
          chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
          chrome_options.add_argument('--window-size=375,812')
        elif self.platform_var.get() == 'instagram':
          mobile_emulation = {"deviceName": "iPhone 6/7/8"}
          chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
          chrome_options.add_argument('--window-size=375,667')
          
        self.driver = webdriver.Chrome(options=chrome_options)
        self.driver.get(url)
        self.save_button.config(state='normal')

    # Function to save the cookies after logging in
    def save_login(self):
        cookies = self.driver.get_cookies()
        cookie_file_name = f'{self.cookie_name_entry.get()}.pkl'
        with open(cookie_file_name, 'wb') as file:
            pickle.dump(cookies, file)
            
        self.update_cookie_list()
        self.driver.quit()
        self.start_button.config(state='normal')
        self.save_button.config(state='disabled')

    # Function to update the cookie list view with saved cookies
    def update_cookie_list(self):
        self.cookie_list.delete(*self.cookie_list.get_children())
        for filename in glob.glob(f'{os.getcwd()}/*.pkl'):
            cookie_name = os.path.splitext(os.path.basename(filename))[0]
            self.cookie_list.insert(parent='', index='end', text='', values=(cookie_name,))
            
class PromotionsTab(ttk.Frame):
  def __init__(self, parent):
    super().__init__(parent)

    # Create the widgets for the Promotions tab
    self.promo_label = ttk.Label(self, text="Create a promotion:")
    self.promo_label.pack(pady=10)

    self.platform_var = tk.StringVar()
    self.twitter_rb = ttk.Radiobutton(self, text="Twitter", variable=self.platform_var, value="twitter")
    self.instagram_rb = ttk.Radiobutton(self, text="Instagram", variable=self.platform_var, value="instagram")
    self.twitter_rb.pack()
    self.instagram_rb.pack()

    self.cookie_list_label = ttk.Label(self, text="Select a saved cookie to use:")
    self.cookie_list_label.pack(pady=10)

    self.cookie_list = ttk.Treeview(self, columns=("cookie_name",))
    self.cookie_list.heading("cookie_name", text="Cookie Name")
    self.cookie_list.pack(pady=10)

    self.post_button = ttk.Button(self, text="Post Promotion", command=self.post_promotion, state='disabled')
    self.post_button.pack(pady=10)

    # Populate the cookie list
    self.update_cookie_list()

  # Function to update the cookie list view with saved cookies
  def update_cookie_list(self):
      self.cookie_list.delete(*self.cookie_list.get_children())
      for filename in glob.glob(f'{os.getcwd()}/*.pkl'):
          cookie_name = os.path.splitext(os.path.basename(filename))[0]
          self.cookie_list.insert(parent='', index='end', text='', values=(cookie_name,))

  # Function to post the promotion
  def post_promotion(self):
    platform = self.platform_var.get()
    selected_item = self.cookie_list.focus()
    selected_cookie = self.cookie_list.item(selected_item)['values'][0]
    
    # TODO: Add code to post the promotion using the selected platform and cookie
    
    messagebox.showinfo("Success", "Promotion posted successfully!")


if __name__ == "__main__":
    # Create the GUI object and run the main loop
    app = AutoPosterGUI()
    app.mainloop()
 

we will make promotions tab into that code which there will be current promotions on left list which able to click and show what is the content inside of it. 
on right side of that list there will be text area which shows up the text we saved, on right side of that area there will be imgur image links, which will show the image also in this gui 

top side of area there will be textbox for promotion name, on right side of that there will be save button, 
on bot of that textbox there will be second textbox for imgur links, when i put a link in that textbox it will show up the image on the gui same way before i explain 

now write the all updated code for me but split it into 4 and when i type "write 1st part, or 2nd part, write me code's part there

now write 1st part for me