
    Vhu                         d dl mZmZmZ eZdZdZdZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZmZmZmZmZmZ d d	lmZ d d
lmZ d dlmZ g Zd Zd Z	 	 	 	 	 	 ddZ 	 	 	 	 ddZ!d Z"d Z#e$dk(  r e#        yy)    )absolute_importdivisionprint_functionaM  
---
module: mysql_db
short_description: Add or remove MySQL or MariaDB databases from a remote host
description:
- Add or remove MySQL or MariaDB databases from a remote host.
options:
  name:
    description:
    - Name of the database to add or remove.
    - I(name=all) may only be provided if I(state) is C(dump) or C(import).
    - List of databases is provided with I(state=dump), I(state=present) and I(state=absent).
    - If I(name=all) it works like --all-databases option for mysqldump (Added in 2.0).
    required: true
    type: list
    elements: str
    aliases: [db]
  state:
    description:
    - The database state.
    type: str
    default: present
    choices: ['absent', 'dump', 'import', 'present']
  collation:
    description:
    - Collation mode (sorting). This only applies to new table/databases and
      does not update existing ones, this is a limitation of MySQL.
    type: str
    default: ''
  encoding:
    description:
    - Encoding mode to use, examples include C(utf8) or C(latin1_swedish_ci),
      at creation of database, dump or importation of sql script.
    type: str
    default: ''
  target:
    description:
    - Location, on the remote host, of the dump file to read from or write to.
    - Uncompressed SQL files (C(.sql)) as well as bzip2 (C(.bz2)), gzip (C(.gz)),
      xz (Added in 2.0) and zstd (C(.zst)) (Added in 3.12.0) compressed files are supported.
    type: path
  single_transaction:
    description:
    - Execute the dump in a single transaction.
    type: bool
    default: false
  quick:
    description:
    - Option used for dumping large tables.
    type: bool
    default: true
  ignore_tables:
    description:
    - A list of table names that will be ignored in the dump
      of the form database_name.table_name.
    type: list
    elements: str
    default: []
  hex_blob:
    description:
    - Dump binary columns using hexadecimal notation.
    type: bool
    default: false
    version_added: '0.1.0'
  force:
    description:
    - Continue dump or import even if we get an SQL error.
    - Used only when I(state) is C(dump) or C(import).
    type: bool
    default: false
    version_added: '0.1.0'
  master_data:
    description:
      - Option to dump a master replication server to produce a dump file
        that can be used to set up another server as a slave of the master.
      - C(0) to not include master data.
      - C(1) to generate a 'CHANGE MASTER TO' statement
        required on the slave to start the replication process.
      - C(2) to generate a commented 'CHANGE MASTER TO'.
      - Can be used when I(state=dump).
    type: int
    choices: [0, 1, 2]
    default: 0
    version_added: '0.1.0'
  skip_lock_tables:
    description:
      - Skip locking tables for read. Used when I(state=dump), ignored otherwise.
    type: bool
    default: false
    version_added: '0.1.0'
  dump_extra_args:
    description:
      - Provide additional arguments for mysqldump.
        Used when I(state=dump) only, ignored otherwise.
    type: str
    version_added: '0.1.0'
  use_shell:
    description:
      - Used to prevent C(Broken pipe) errors when the imported I(target) file is compressed.
      - If C(yes), the module will internally execute commands via a shell.
      - Used when I(state=import), ignored otherwise.
    type: bool
    default: false
    version_added: '0.1.0'
  unsafe_login_password:
    description:
      - If C(no), the module will safely use a shell-escaped
        version of the I(login_password) value.
      - It makes sense to use C(yes) only if there are special
        symbols in the value and errors C(Access denied) occur.
      - Used only when I(state) is C(import) or C(dump) and
        I(login_password) is passed, ignored otherwise.
    type: bool
    default: false
    version_added: '0.1.0'
  restrict_config_file:
    description:
      - Read only passed I(config_file).
      - When I(state) is C(dump) or C(import),
        by default the module passes I(config_file) parameter
        using C(--defaults-extra-file) command-line argument to C(mysql/mysqldump) utilities
        under the hood that read named option file in addition to usual option files.
      - If this behavior is undesirable, use C(yes) to read only named option file.
    type: bool
    default: false
    version_added: '0.1.0'
  check_implicit_admin:
    description:
      - Check if mysql allows login as root/nopassword before trying supplied credentials.
      - If success, passed I(login_user)/I(login_password) will be ignored.
    type: bool
    default: false
    version_added: '0.1.0'
  config_overrides_defaults:
    description:
      - If C(yes), connection parameters from I(config_file) will override the default
        values of I(login_host) and I(login_port) parameters.
      - Used when I(stat) is C(present) or C(absent), ignored otherwise.
      - It needs Python 3.5+ as the default interpreter on a target host.
    type: bool
    default: false
    version_added: '0.1.0'
  chdir:
    description:
    - Changes the current working directory.
    - Can be useful, for example, when I(state=import) and a dump file contains relative paths.
    type: path
    version_added: '3.4.0'
  pipefail:
    description:
    - Use C(bash) instead of C(sh) and add C(-o pipefail) to catch errors from the
      mysql_dump command when I(state=dump) and compression is used.
    - The default is C(no) to prevent issues on systems without bash as a default interpreter.
    - The default will change to C(yes) in community.mysql 4.0.0.
    type: bool
    default: false
    version_added: '3.4.0'

seealso:
- module: community.mysql.mysql_info
- module: community.mysql.mysql_variables
- module: community.mysql.mysql_user
- module: community.mysql.mysql_replication
- name: MySQL command-line client reference
  description: Complete reference of the MySQL command-line client documentation.
  link: https://dev.mysql.com/doc/refman/8.0/en/mysql.html
- name: mysqldump reference
  description: Complete reference of the ``mysqldump`` client utility documentation.
  link: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
- name: CREATE DATABASE reference
  description: Complete reference of the CREATE DATABASE command documentation.
  link: https://dev.mysql.com/doc/refman/8.0/en/create-database.html
- name: DROP DATABASE reference
  description: Complete reference of the DROP DATABASE command documentation.
  link: https://dev.mysql.com/doc/refman/8.0/en/drop-database.html
author: "Ansible Core Team"
requirements:
   - mysql (command line binary)
   - mysqldump (command line binary)
notes:
   - Compatible with MariaDB or MySQL.
   - Requires the mysql and mysqldump binaries on the remote host.
   - This module is B(not idempotent) when I(state) is C(import),
     and will import the dump file each time if run more than once.
attributes:
  check_mode:
    support: full
extends_documentation_fragment:
- community.mysql.mysql
a  
# If you encounter the "Please explicitly state intended protocol" error,
# use the login_unix_socket argument
- name: Create a new database with name 'bobdata'
  community.mysql.mysql_db:
    name: bobdata
    state: present
    login_unix_socket: /run/mysqld/mysqld.sock

- name: Create new databases with names 'foo' and 'bar'
  community.mysql.mysql_db:
    name:
      - foo
      - bar
    state: present

# Copy database dump file to remote host and restore it to database 'my_db'
- name: Copy database dump file
  copy:
    src: dump.sql.bz2
    dest: /tmp

- name: Restore database
  community.mysql.mysql_db:
    name: my_db
    state: import
    target: /tmp/dump.sql.bz2

- name: Restore database ignoring errors
  community.mysql.mysql_db:
    name: my_db
    state: import
    target: /tmp/dump.sql.bz2
    force: true

- name: Dump multiple databases
  community.mysql.mysql_db:
    state: dump
    name: db_1,db_2
    target: /tmp/dump.sql

- name: Dump multiple databases
  community.mysql.mysql_db:
    state: dump
    name:
      - db_1
      - db_2
    target: /tmp/dump.sql

- name: Dump all databases to hostname.sql
  community.mysql.mysql_db:
    state: dump
    name: all
    target: /tmp/dump.sql

- name: Dump all databases to hostname.sql including master data
  community.mysql.mysql_db:
    state: dump
    name: all
    target: /tmp/dump.sql
    master_data: 1

# Import of sql script with encoding option
- name: >
    Import dump.sql with specific latin1 encoding,
    similar to mysql -u <username> --default-character-set=latin1 -p <password> < dump.sql
  community.mysql.mysql_db:
    state: import
    name: all
    encoding: latin1
    target: /tmp/dump.sql

# Dump of database with encoding option
- name: >
    Dump of Databse with specific latin1 encoding,
    similar to mysqldump -u <username> --default-character-set=latin1 -p <password> <database>
  community.mysql.mysql_db:
    state: dump
    name: db_1
    encoding: latin1
    target: /tmp/dump.sql

- name: Delete database with name 'bobdata'
  community.mysql.mysql_db:
    name: bobdata
    state: absent

- name: Make sure there is neither a database with name 'foo', nor one with name 'bar'
  community.mysql.mysql_db:
    name:
      - foo
      - bar
    state: absent

# Dump database with argument not directly supported by this module
# using dump_extra_args parameter
- name: Dump databases without including triggers
  community.mysql.mysql_db:
    state: dump
    name: foo
    target: /tmp/dump.sql
    dump_extra_args: --skip-triggers

- name: Try to create database as root/nopassword first. If not allowed, pass the credentials
  community.mysql.mysql_db:
    check_implicit_admin: true
    login_user: bob
    login_password: 123456
    name: bobdata
    state: present

- name: Dump a database with compression and catch errors from mysqldump with bash pipefail
  community.mysql.mysql_db:
    state: dump
    name: foo
    target: /tmp/dump.sql.gz
    pipefail: true
a  
db:
  description: Database names in string format delimited by white space.
  returned: always
  type: str
  sample: "foo bar"
db_list:
  description: List of database names.
  returned: always
  type: list
  sample: ["foo", "bar"]
executed_commands:
  description: List of commands which tried to run.
  returned: if executed
  type: list
  sample: ["CREATE DATABASE acme"]
  version_added: '0.1.0'
N)AnsibleModule)mysql_quote_identifier)mysql_connectmysql_drivermysql_driver_fail_msgmysql_common_argument_specget_server_implementationget_server_version)LooseVersion)shlex_quote)	to_nativec                 \    d}|D ]  }|| j                  d|f      z  } |t        |      k(  S )Nr   zJSELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = %s)executelen)cursordbreseach_dbs       l/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/mysql/plugins/modules/mysql_db.py	db_existsr   m  s@    
C xv~~jmtlvwwx#b'>    c                     |sy|D ]7  }dt        |d      z  }t        j                  |       | j                  |       9 y)NFzDROP DATABASE %sdatabaseT)r   executed_commandsappendr   )r   r   r   querys       r   	db_deleter    t  sH     "%;GZ%PP  'u r   c                  	   d}|	dk(  rt        |
      t        d      k\  rd}	 | j                  |d      g}|r=|r|j	                  d	t        |      z         n|j	                  d
t        |      z         |r|j	                  d       nU||j	                  dt        |      z         |4|s|j	                  dt        |      z         n|j	                  d|z         ||j	                  dt        |      z         ||j	                  dt        |      z         ||j	                  dt        |      z         |r|j	                  d       ||j	                  dt        |      z         n|j	                  dt        |      |fz         |r|j	                  d       njt        |      dkD  r0|j	                  dj                  dj                  |                   n,|j	                  dt        dj                  |            z         |r|j	                  d       |"|dk7  r|j	                  dt        |      z         |r|j	                  d       |r|j	                  d       |r'|D ]"  }|j	                  dj                  |             $ |r|j	                  d       |rE|	dk(  r,t        |
      t        d      k\  r|j	                  d |z         n|j	                  d!|z         ||j	                  |       d } t        j                  j                  |      d"   d#k(  r| j                  d$d      } nt        j                  j                  |      d"   d%k(  r| j                  d&d      } not        j                  j                  |      d"   d'k(  r| j                  d(d      } n7t        j                  j                  |      d"   d)k(  r| j                  d*d      } dj                  |      }| r|d+| d,t        |      }|rd-|z   }n|d.t        |      z  z  }t        j	                  |       |r| j                  |dd/0      \  }!}"}#n| j                  |d1      \  }!}"}#|!|"|#fS # t        $ r}dddt        |      z  fcY d }~S d }~ww xY w)2N	mysqldumpmariadb10.4.6zmariadb-dumpT    z"Error determining dump command: %s--defaults-file=%s--defaults-extra-file=%s--user=root --password=''	--user=%s--password=%s--ssl-cert=%s--ssl-key=%s--ssl-ca=%sz--force--socket=%sz--host=%s --port=%iz--all-databasesz--databases {0} %sz--skip-lock-tables--default-character-set=%sz--single-transaction=truez--quickz--ignore-table={0}z
--hex-blobmysqlz8.2.0z--source-data=%sz--master-data=%s.gzgzip.bz2bzip2.xzxz.zstzstd | z > zset -o pipefail && z > %sbash)use_unsafe_shell
executabler?   )r   get_bin_path	Exceptionstrr   r   r   formatjoinospathsplitextr   run_command)$modulehostuserpassworddb_nametargetall_databasesportconfig_fileserver_implementationserver_versionsocketssl_certssl_keyssl_casingle_transactionquickignore_tableshex_blobencodingforcemaster_dataskip_lock_tablesdump_extra_argsunsafe_passwordrestrict_config_filecheck_implicit_adminpipefailcmd_strcmdean_ignored_tablerH   rcstdoutstderrs$                                       r   db_dumprn   ~  s2    G	)l>.Jl[cNd.d D""7D12
 JJ+k+.FFGJJ1K4LLM

./JJ{[%667"

?[-BBC

?X56

?[%::;

>K$889

=;v#667

9

=;v#667

(K,=t+DDE

$%	W	

$++CHHW,=>?

4+chhw&7889

'(8r>

/+h2GGH

./

9 - 	FJJ+223CDE	F

< !W,^,W0EEJJ)K78JJ)K78"

?#D	ww#u,""640			&	!"	%	/""7D1			&	!"	%	.""4.			&	!"	%	/""640
((3-C #T;v+>?'#-CwV,,,S!#//dW]/^FF#//d/KFFvvu  D":SVCCCDs   Q) )	R2RRRc                 	   t         j                  j                  |      s| j                  d|z        S d}|	dk(  rt	        |
      t	        d      k\  rd}	 | j                  |d      g}|r=|r|j                  d
t        |      z         n|j                  dt        |      z         |r|j                  d       nU|r|j                  dt        |      z         |r4|s|j                  dt        |      z         n|j                  d|z         ||j                  dt        |      z         ||j                  dt        |      z         ||j                  dt        |      z         |r|j                  d       ||j                  dt        |      z         n1|j                  dt        |      z         |j                  d|z         |"|dk7  r|j                  dt        |      z         |s:|j                  d       |j                  t        dj                  |                   d }t         j                  j                  |      d   dk(  r| j                  dd      }nt         j                  j                  |      d   dk(  r| j                  dd      }nqt         j                  j                  |      d   dk(  r| j                  dd      }n8t         j                  j                  |      d   d k(  r| j                  d!d      }|rYt        j                  |d"|d#|       |st        j                  |d$|gt        j                  t        j                  %      }t        j                  ||j                   t        j                  t        j                  &      }|j#                         \  }}|j                   j%                          |j'                          |j(                  d'k7  r)|j*                  j-                         }|j(                  d|fS |j(                  ||fS d(j                  |      }|d"t        |      d#|}| j/                  |d)      \  }}} ||| fS d(j                  |      }|d*t        |      z  z  }t        j                  |       | j/                  |d)      \  }}} ||| fS # t        $ r}ddd	t        |      z  fcY d }~S d }~ww xY w)+Nz$target %s does not exist on the hostmsgr3   r#   r$   Tr%   r&   z+Error determining mysql/mariadb command: %sr'   r(   r)   r*   r+   r,   r-   r.   z-fr/   z	--host=%sz	--port=%ir2   z--one-databaser4   r5   r6   )requiredr7   r8   r9   r:   r;   r<   z -dc r=   z-dc)rl   rm   )stdinrl   rm   r   r0   rA   z < %s)rG   rH   exists	fail_jsonr   rB   rC   rD   r   r   rF   rI   r   
subprocessPopenPIPErl   communicateclosewait
returncoderm   readrJ   )!rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r^   r_   	use_shellrc   rd   re   rg   rh   ri   comp_prog_pathp1p2stdout2stderr2stderr1rk   rl   rm   s!                                    r   	db_importr     sP   
 77>>&!$JV$STTG	)l>.Jl[cNd.dM""7D12
 JJ+k+.FFGJJ1K4LLM

./JJ{[%667"

?[-BBC

?X56

?[%::;

>K$889

=;v#667

4

=;v#667

;T!223

;%&8r>

/+h2GGH

#$

;rwww/01N	ww#u,,,Vd,C			&	!"	%	/,,Wt,D			&	!"	%	.,,TD,A			&	!"	%	/,,Vd,C  ^VS!QR!!>5&"A*//blbqbqrB!!#RYYzWaWfWfgB!#!1WgIIOOGGI}}!))..*}}b'11}}gw66 ((3-C&4k&6I3OC!'!3!3C$!3!OBvv%% hhsmwV,,,  %#//d/KFF66!!c  M"Cc!fLLLMs   S 	S*S%S*%S*c                    |syt        ||      }d}|D ]  }dt        |d      j                  dd      z  g}|r|j                  d       |r|j                  d	       d
j	                  |      }|| j                  ||      z  }	 t        j                  | j                  ||              |dkD  S # t        $ r" t        j                  | j                         Y t        $ r t        j                  |       Y w xY w)NF)enccollater   zCREATE DATABASE %sr   %z%%zCHARACTER SET %(enc)szCOLLATE %(collate)sr0   )dictr   replacer   rF   r   r   mogrifyAttributeError	_executedrC   )r   r   r^   	collationquery_paramsr   r   r   s           r   	db_creater   I  s    Hi8L
C ,%(>w
(S([([\_ae(ffgLL01LL./v~~e\22	,$$V^^E<%HI, 7N	  	7$$V%5%56 	,$$U+	,s   %B11(C;C;:C;c                  Z   t               } | j                  t        ddddg      t        dd      t        dd      t        d	      t        dd
g d      t        dd      t        dd      t        ddg       t        dd      t        dd      t        ddg d      t        dd      t        d	      t        dd      t        ddd      t        dd      t        dd      t        dd      t        d	      t        dd             t        | d      }t        |j                  t               |j                  d   }|s|j                  d|g        |D cg c]  }|j                          }}|j                  d   }|j                  d   }|j                  d   }|j                  d   }|j                  d   }|j                  d   }	|	dk  s|	d kD  r|j                  d!       |j                  d"   }
|j                  d#   }|j                  d$   }|j                  d%   }|j                  d&   }|j                  d'   }|j                  d(   }|j                  d)   }|j                  d*   }|j                  d+   }|j                  d,   }|D ]  }|dk(  s	|j                  d-        |j                  d.   }|j                  d/   }|j                  d0   }|j                  d1   }|j                  d2   }|j                  d3   }|j                  d4   }|j                  d5   }|j                  d6   }|j                  d7   }|j                  d8   } |j                  d9   }!|j                  d:   }"|!r	 t        j                  |!       t        |      d=kD  r|d>k(  r|j                  d?       d@j                  |      }$d}%|dAv r ||j                  dB|z         |dCgk(  rd}%n|dCgk(  r|j                  dD       	 d }&|r	 t        |dEd||
||||| F
      \  }&}'|&st        |||||
|||| |G
      \  }&}'t'        &      }(t)        |&      })d}*t        j                   j#                  |      sd }g }+g },|%s7|D ]2  }-t+        |&|-g      r|+j-                  |-       "|,j-                  |-       4 |dLk(  rP|j.                  r|j                  t1        |+      |$|       	 t3        |&|+      }*|j                  |*|$|t4        N       y |d
k(  rV|j.                  r|j                  t1        |,      |$|       d}*|,r	 t7        |&|,||      }*|j                  |*|$|t4        N       y |dQk(  r|,r&|%s$|j                  dRdSj                  |,      z         |j.                  r|j                  d|$|       t=        |||||||%|	||(|)||
|||||||||||||||"      \  }.}/}0|.dk7  r|j                  dT|0z         |j                  d|$||/t4        U       y |d>k(  r|j.                  r|j                  d|$|       |,r|%s	 t7        |&|,||       t?        |||||||%|	||(|)||
||||||||      \  }.}/}0|.dk7  r|j                  dT|0z         |j                  d|$||/t4        U       y y c c}w # t        $ r"}#|j                  d;|!d<|#       Y d }#~#:d }#~#ww xY w# t        $ r}#d}Y d }#~#d }#~#ww xY w# t        $ rm}#t        j                   j#                  |      r"|j                  dH|dIt%        |#             n!|j                  dJ|dKt%        |#             Y d }#~# d }#~#ww xY w# t        $ r)}#|j                  dMt%        |#      z         Y d }#~#d }#~#ww xY w# t        $ r<}#|j                  dOt%        |#      z  t9        j:                         P       Y d }#~#d }#~#ww xY w# t        $ r<}#|j                  dOt%        |#      z  t9        j:                         P       Y d }#~#d }#~#ww xY w)VNlistrD   Tr   )typeelementsrr   aliasesr&   )r   defaultrH   )r   present)absentdumpimportr   )r   r   choicesboolF)r   r   r   )r   r   intr   )r   r%      )r   r   no_log)namer^   r   rP   staterZ   r[   r\   r]   r_   r`   ra   rb   r~   unsafe_login_passwordrd   re   config_overrides_defaultschdirrf   )argument_specsupports_check_moderp   r   )changedr   db_listr^   r   r   rP   login_unix_socket
login_porti  z5login_port must be a valid unix port number (0-65535)client_cert
client_keyca_certcheck_hostnameconnect_timeoutrS   login_passwordr   
login_user
login_hostr\   z%Name of ignored table cannot be emptyrZ   r[   r]   r_   r`   ra   rb   r~   rd   re   r   r   rf   z'Cannot change the current directory to z: r%   r   z6Multiple databases are not supported with state=importr0   )r   r   z with state=%s target is requiredallzGname is not allowed to equal 'all' unless state equals import, or dump.root)r   r   r   )r   r   r   zRunable to connect to database, check login_user and login_password are correct or z) has the credentials. Exception message: zunable to find z. Exception message: r   zerror deleting database: %s)r   r   r   r   zerror creating database: %s)rq   	exceptionr   z&Cannot dump database(s) %r - not foundz, r1   )r   r   r   rq   r   ) r   updater   r   r	   ru   r
   params	exit_jsonstriprG   r   rC   r   rF   r   rH   rt   r   r   r   r   r   
check_moder   r    r   r   	traceback
format_excrn   r   )1r   rK   r   r   r^   r   r   rP   rV   r   rW   rX   rY   r   r   rS   r   r   r   r   r\   a_tablerZ   r[   r]   r_   r`   ra   rb   r~   rd   re   r   r   rf   ri   rO   rQ   r   db_connrT   rU   r   existence_listnon_existence_listeach_databaserk   rl   rm   s1                                                    r   mainr   e  s   .0MvtfM5"-E2. y:abVU;-Ce&1.eQ	B659%(FE2"dK!vu=!vu="&FE"B651)  . # F
 23	v	B2r:)+	,g'--/	,B	,}}Z(Hk*IMM'"E]]8$F]]./F|,JA~e+TU}}]+HmmL)G]]9%F]]#34Nmm$56O--.K]]#34N"MM*AB|,J|,JMM/2M  Jb=!HIJ  ';<MM'"E}}Z(HMM'"E--.K}}%78mm$56Ok*I!==)?@!==)?@ &.I JMM'"E}}Z(H	[HHUO 2w{u(UVhhrlGM"">!Ce!KL%= M%=!jkk"/KQY[bdj@O`nJc#e +FJP[]egnpv<K  hA;IKOFG 6f='/NG77>>+&N 	9M-1%%m4"))-8		9 T.%9grR	O7G 	WbTef	)	T*<%='SUVC#F,>)T 	WbTef	&m!ITYYWiMj!klTgrB$VZ%3R%/>SUc%+Xw%+-?%-xM]%46KMa%98EFF 7/'26+< 	 	>	(	TgrBmC&"4h	J 'vz:'5r6'4'1;@U'5vxRX'/	CX';=QSFF 7/'26+< 	 	>% 
I 
-R  	[PUWXYZZ	[.  ',$  k77>>+&<GST"W X {\efg\h!ijk:  	O!>1!MNN	O  C  %BYq\%Q+4+?+?+A ! C CC6  C  %BYq\%Q+4+?+?+A ! C CCs   &Z#?Z( 	[/ [ &[/ %]( >^ <_% (	[1[[	[,['![/ '[,,[/ /	]%8A"]  ]%(	^1^^	_"&1__"%	`*.1`%%`*__main__)NNNNNNNNNFr   FNFFFF)
NNNNNFFFFF)%
__future__r   r   r   r   __metaclass__DOCUMENTATIONEXAMPLESRETURNrG   rv   r   ansible.module_utils.basicr   Aansible_collections.community.mysql.plugins.module_utils.databaser   >ansible_collections.community.mysql.plugins.module_utils.mysqlr   r	   r
   r   r   r   @ansible_collections.community.mysql.plugins.module_utils.versionr   ansible.module_utils.six.movesr   ansible.module_utils._textr   r   r   r    rn   r   r   r   __name__ r   r   <module>r      s    A @}~un
& 
   4 d  Z 6 0  HL04NRHMNS16gV gk#(KP#(	^"B8{>| zF r   