PHP Classes
elePHPant
Icontem

File: build/phpdox/xml/tokens/abstractclass/UserCredentialAbstract.php.xml

Recommend this page to a friend!
  Classes of Cyril Ogana  >  PHP User Credentials  >  build/phpdox/xml/tokens/abstractclass/UserCredentialAbstract.php.xml  >  Download  
File: build/phpdox/xml/tokens/abstractclass/UserCredentialAbstract.php.xml
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: PHP User Credentials
Implement password authentication policies
Author: By
Last change:
Date: 2 years ago
Size: 284,464 bytes
 

Contents

Class file image Download
<?xml version="1.0"?>
<source xmlns="http://xml.phpdox.net/token">
  <file xmlns="http://xml.phpdox.net/src" path="/home/rhossis/NetBeansProjects/cymapgt/core/application/authentication/UserCredential/src/abstractclass" file="UserCredentialAbstract.php" realpath="/home/rhossis/NetBeansProjects/cymapgt/core/application/authentication/UserCredential/src/abstractclass/UserCredentialAbstract.php" size="35781" time="2015-07-18T03:41:36+03:00" unixtime="1437180096" sha1="100187d05e8a9f28bd997a7edafbca00a6acf58e" relative="abstractclass/UserCredentialAbstract.php"/>
  <line no="1">
    <token name="T_OPEN_TAG">&lt;?php</token>
  </line>
  <line no="2">
    <token name="T_NAMESPACE">namespace</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">cymapgt</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">core</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">application</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">authentication</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">UserCredential</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">abstractclass</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="3"/>
  <line no="4">
    <token name="T_USE">use</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">cymapgt</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">Exception</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="5">
    <token name="T_USE">use</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Phpass</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">Strength</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="6"/>
  <line no="7">
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="8">
    <token name="T_DOC_COMMENT"> * This package implements user password policy and credential management</token>
  </line>
  <line no="9">
    <token name="T_DOC_COMMENT"> *</token>
  </line>
  <line no="10">
    <token name="T_DOC_COMMENT"> * @category    security</token>
  </line>
  <line no="11">
    <token name="T_DOC_COMMENT"> * @package     cymapgt.core.application.authentication.UserCredential</token>
  </line>
  <line no="12">
    <token name="T_DOC_COMMENT"> * @copyright   Copyright (c) 2015 Cymap</token>
  </line>
  <line no="13">
    <token name="T_DOC_COMMENT"> * @author      Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="14">
    <token name="T_DOC_COMMENT"> * @abstract</token>
  </line>
  <line no="15">
    <token name="T_DOC_COMMENT"> * </token>
  </line>
  <line no="16">
    <token name="T_DOC_COMMENT"> *      - See http://www.owasp.org/images/0/08/OWASP_SCP_Quick_Reference_Guide_v2.pdf </token>
  </line>
  <line no="17">
    <token name="T_DOC_COMMENT"> *           (authentication section)</token>
  </line>
  <line no="18">
    <token name="T_DOC_COMMENT"> */</token>
  </line>
  <line no="19"/>
  <line no="20">
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CLASS">class</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialAbstract</token>
  </line>
  <line no="21">
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="22">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$_userProfile</token>
    <token name="T_WHITESPACE">         </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">      </token>
    <token name="T_COMMENT">//Array containing user information to use in the class</token>
  </line>
  <line no="23">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="24">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$_baseEntropySetting</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">      </token>
    <token name="T_COMMENT">//This is the default entropy setting</token>
  </line>
  <line no="25">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$_baseEntropyOverride</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//A flag to turn off base entropy enforcement </token>
  </line>
  <line no="26">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$_udfEntropySetting</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">      </token>
    <token name="T_COMMENT">//A variable to store the user defined entropy</token>
  </line>
  <line no="27"/>
  <line no="28">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$_basePasswordPolicy</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">      </token>
    <token name="T_COMMENT">//Base password policy maintained by UserCredential class</token>
  </line>
  <line no="29">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$_udfPasswordPolicy</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">      </token>
    <token name="T_COMMENT">//Udf password policy input by the user</token>
  </line>
  <line no="30">
    <token name="T_WHITESPACE">	</token>
  </line>
  <line no="31">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="32">
    <token name="T_WHITESPACE">    </token>
    <token name="T_COMMENT">/*</token>
  </line>
  <line no="33">
    <token name="T_COMMENT">     * Constructor method</token>
  </line>
  <line no="34">
    <token name="T_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt; - 2015-07-18</token>
  </line>
  <line no="35">
    <token name="T_COMMENT">     * </token>
  </line>
  <line no="36">
    <token name="T_COMMENT">     * @param array userProfile - array of user credential information</token>
  </line>
  <line no="37">
    <token name="T_COMMENT">     */</token>
  </line>
  <line no="38">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">__construct</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="39">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_initialize</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="40">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="41">
    <token name="T_WHITESPACE">	</token>
  </line>
  <line no="42">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="43">
    <token name="T_DOC_COMMENT">     * Initialize the classes default settings (base entropy)</token>
  </line>
  <line no="44">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt; - 2015-07-18</token>
  </line>
  <line no="45">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="46">
    <token name="T_DOC_COMMENT">     * @param array /ArrayAccess  userProfile</token>
  </line>
  <line no="47">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="48">
    <token name="T_DOC_COMMENT">     * @access private</token>
  </line>
  <line no="49">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE">             </token>
  </line>
  <line no="50">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_initialize</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="51">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_initializeProfile</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="52">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_initializeBaseEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="53">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_initializeBasePasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="54">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="55">
    <token name="T_WHITESPACE">	</token>
  </line>
  <line no="56">
    <token name="T_WHITESPACE">   </token>
    <token name="T_DOC_COMMENT">/** </token>
  </line>
  <line no="57">
    <token name="T_DOC_COMMENT">    * initializes the user profiles data as per the user credentials provided to the constructor method</token>
  </line>
  <line no="58">
    <token name="T_DOC_COMMENT">    * </token>
  </line>
  <line no="59">
    <token name="T_DOC_COMMENT">    * Cyril Ogana &lt;cogana@gmail.com&gt; - 2015-07-18</token>
  </line>
  <line no="60">
    <token name="T_DOC_COMMENT">    *</token>
  </line>
  <line no="61">
    <token name="T_DOC_COMMENT">    * @param  array / ArrayAccess  $userProfile</token>
  </line>
  <line no="62">
    <token name="T_DOC_COMMENT">    *</token>
  </line>
  <line no="63">
    <token name="T_DOC_COMMENT">    * @access private</token>
  </line>
  <line no="64">
    <token name="T_DOC_COMMENT">    */</token>
  </line>
  <line no="65">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_initializeProfile</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="66">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that user profile has the correct information</token>
  </line>
  <line no="67">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="68">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="69">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="70">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE">			</token>
  </line>
  <line no="71">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhash'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="72">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_string</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhash'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="73">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="74">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="75">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'account_state'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="76">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="77">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="78">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="79">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The user profile is not properly initialized'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1000</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="80">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="81">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$userProfile</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="82">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="83"/>
  <line no="84">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="85">
    <token name="T_DOC_COMMENT">     * Initialize entopy requirements to recommended default base entropy  as per OWASP</token>
  </line>
  <line no="86">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="87">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="88">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="89">
    <token name="T_DOC_COMMENT">     * @access private</token>
  </line>
  <line no="90">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE"> 	</token>
  </line>
  <line no="91">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_initializeBaseEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="92">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//initialize if not already initialized as array</token>
  </line>
  <line no="93">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="94">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="95">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="96"/>
  <line no="97">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">8</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_COMMENT">//minimum password length</token>
  </line>
  <line no="98">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">2</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_COMMENT">//minimum characters to repeat consecutively</token>
  </line>
  <line no="99">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_WHITESPACE">     </token>
    <token name="T_COMMENT">//requirement and length for various character types</token>
  </line>
  <line no="100">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_DOUBLE_ARROW">=&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_COMMA">,</token>
  </line>
  <line no="101">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_DOUBLE_ARROW">=&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">2</token>
  </line>
  <line no="102">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="103">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
  </line>
  <line no="104">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_DOUBLE_ARROW">=&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_COMMA">,</token>
  </line>
  <line no="105">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_DOUBLE_ARROW">=&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1</token>
    <token name="T_WHITESPACE">														</token>
  </line>
  <line no="106">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="107">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
  </line>
  <line no="108">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_DOUBLE_ARROW">=&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_COMMA">,</token>
  </line>
  <line no="109">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_DOUBLE_ARROW">=&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">2</token>
  </line>
  <line no="110">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="111">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
  </line>
  <line no="112">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_DOUBLE_ARROW">=&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_COMMA">,</token>
  </line>
  <line no="113">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_DOUBLE_ARROW">=&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1</token>
  </line>
  <line no="114">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="115">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropyOverride</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_COMMENT">//override the reommended settings?</token>
  </line>
  <line no="116">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_setUdfEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="117">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="118">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="119">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="120">
    <token name="T_DOC_COMMENT">     * Initialize policy requirements to recommended default base entropy  as per OWASP</token>
  </line>
  <line no="121">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="122">
    <token name="T_DOC_COMMENT">     * 2014-02-11</token>
  </line>
  <line no="123">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="124">
    <token name="T_DOC_COMMENT">     * @access private</token>
  </line>
  <line no="125">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE"> 	</token>
  </line>
  <line no="126">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_initializeBasePasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="127">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_basePasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">3</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_COMMENT">//count</token>
  </line>
  <line no="128">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_basePasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">45</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_COMMENT">//days</token>
  </line>
  <line no="129">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_basePasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">5</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_COMMENT">//count</token>
  </line>
  <line no="130">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_basePasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">600</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_COMMENT">//seconds</token>
  </line>
  <line no="131">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_setUdfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_basePasswordPolicy</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="132">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="133">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="134">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="135">
    <token name="T_DOC_COMMENT">     * Get the base entropy data structure</token>
  </line>
  <line no="136">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="137">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="138">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="139">
    <token name="T_DOC_COMMENT">     * @return array / Object</token>
  </line>
  <line no="140">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="141">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="142">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="143">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="144">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_getBaseEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="145">
    <token name="T_WHITESPACE">	</token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="146">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropySetting</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="147">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="148">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="149">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="150">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="151">
    <token name="T_DOC_COMMENT">     *  Get the base password policy</token>
  </line>
  <line no="152">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="153">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="154">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="155">
    <token name="T_DOC_COMMENT">     * @return array / Object</token>
  </line>
  <line no="156">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="157">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="158">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="159">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="160">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_getBasePasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="161">
    <token name="T_WHITESPACE">	</token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_basePasswordPolicy</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="162">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_basePasswordPolicy</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="163">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="164">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE">  </token>
  </line>
  <line no="165"/>
  <line no="166">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="167">
    <token name="T_DOC_COMMENT">     * Set the user defined entropy setting</token>
  </line>
  <line no="168">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="169">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="170">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="171">
    <token name="T_DOC_COMMENT">     * @param  array / object entropyObj - array or object implementing ArrayAccess</token>
  </line>
  <line no="172">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="173">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="174">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="175">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE"> </token>
  </line>
  <line no="176">
    <token name="T_WHITESPACE">     </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_setUdfEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="177">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//initialize if not already initialized as array</token>
  </line>
  <line no="178">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="179">
    <token name="T_WHITESPACE">           </token>
    <token name="T_BOOLEAN_OR">||</token>
  </line>
  <line no="180">
    <token name="T_WHITESPACE">           </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_object</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="181">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_AND">&amp;&amp;</token>
  </line>
  <line no="182">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_INSTANCEOF">instanceof</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">ArrayAccess</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="183">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="184">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="185">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="186"/>
  <line no="187">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate the array / object</token>
  </line>
  <line no="188">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="189">
    <token name="T_WHITESPACE">            </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_object</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="190">
    <token name="T_WHITESPACE">                </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_INSTANCEOF">instanceof</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">ArrayAccess</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="191">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="192">
    <token name="T_WHITESPACE">                </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The entropy object should be an array or implement ArrayAccess interface'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1001</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="193">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="194">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="195"/>
  <line no="196">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that minimum password len has the correct indices, then set it</token>
  </line>
  <line no="197">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="198">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
  </line>
  <line no="199">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="200">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The minimum password length hasn\'t been set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1002</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="201">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="202">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="203"/>
  <line no="204">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that minimum allowed password characters to repeat has been set</token>
  </line>
  <line no="205">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="206">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="207">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="208">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The minimum allowed consecutive character repetition hasn\'t been set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1003</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="209">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="210">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="211">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="212">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="213">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that uppercase snippet has correct indices, then set it</token>
  </line>
  <line no="214">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="215">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="216">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="217">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_bool</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="218">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="219">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="220">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="221">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The uppercase settings must be an array containing toggle and min upper length'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1004</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="222">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="223">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="224"/>
  <line no="225">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that lowercase snippet has correct indices, then set it</token>
  </line>
  <line no="226">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="227">
    <token name="T_WHITESPACE">           </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="228">
    <token name="T_WHITESPACE">           </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="229">
    <token name="T_WHITESPACE">           </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_bool</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="230">
    <token name="T_WHITESPACE">           </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="231">
    <token name="T_WHITESPACE">           </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="232">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="233">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The lowercase settings must be an array containing toggle and min lower length'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1005</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="234">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="235">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="236"/>
  <line no="237">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that numeric chars snippet has correct indices, then set it</token>
  </line>
  <line no="238">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="239">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="240">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="241">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_bool</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="242">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="243">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="244">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="245">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The numeric settings must be an array containing toggle and min lower length'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1006</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="246">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="247">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="248"/>
  <line no="249">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that special chars snippet has correct indices, then set it</token>
  </line>
  <line no="250">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="251">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="252">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="253">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_bool</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="254">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="255">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="256">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="257">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'the uppercase settings must be an array containing toggle and min upper length'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1007</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="258">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="259">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="260">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="261">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="262">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="263">
    <token name="T_DOC_COMMENT">     * Set the user defined password policy</token>
  </line>
  <line no="264">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="265">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="266">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="267">
    <token name="T_DOC_COMMENT">     * @param  array / object entropyObj - array or object implementing ArrayAccess</token>
  </line>
  <line no="268">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="269">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="270">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="271">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE"> </token>
  </line>
  <line no="272">
    <token name="T_WHITESPACE">     </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_setUdfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="273">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//initialize if not already initialized as array</token>
  </line>
  <line no="274">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="275">
    <token name="T_WHITESPACE">           </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
  </line>
  <line no="276">
    <token name="T_WHITESPACE">           </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_object</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="277">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_AND">&amp;&amp;</token>
  </line>
  <line no="278">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_INSTANCEOF">instanceof</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">ArrayAccess</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="279">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="280">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="281">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="282"/>
  <line no="283">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate the array / object</token>
  </line>
  <line no="284">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="285">
    <token name="T_WHITESPACE">            </token>
    <token name="T_IF">if</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_object</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="286">
    <token name="T_WHITESPACE">                </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_INSTANCEOF">instanceof</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">ArrayAccess</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="287">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="288">
    <token name="T_WHITESPACE">                </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The entropy object should be an array or implement ArrayAccess interface'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1008</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="289">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="290">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="291"/>
  <line no="292">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that illegal attempts limit has correct indices, then set it</token>
  </line>
  <line no="293">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="294">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="295">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="296">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The illegal attempts limit hasn\'t been set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1009</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="297">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="298">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="299"/>
  <line no="300">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that password reset frequency has correct indices, then set it</token>
  </line>
  <line no="301">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="302">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
  </line>
  <line no="303">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="304">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The password reset frequency hasn\'t been set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1010</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="305">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="306">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="307"/>
  <line no="308">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that passwordd repeat minimum has correct indices, then set it</token>
  </line>
  <line no="309">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="310">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
  </line>
  <line no="311">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="312">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The password repeat minimum has not been set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1011</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="313">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="314">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="315"/>
  <line no="316">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that password repeat minimum has correct indices, then set it</token>
  </line>
  <line no="317">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="318">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_STRING">is_int</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
  </line>
  <line no="319">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="320">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The illegal attempts penalty seconds has not been set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1012</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="321">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="322">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="323">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="324">
    <token name="T_WHITESPACE">	</token>
  </line>
  <line no="325">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="326">
    <token name="T_DOC_COMMENT">     * Get the udf entropy data structure</token>
  </line>
  <line no="327">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="328">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="329">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="330">
    <token name="T_DOC_COMMENT">     * @return array / Object</token>
  </line>
  <line no="331">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="332">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="333">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="334">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="335">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_getUdfEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="336">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="337">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="338">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="339">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="340">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="341">
    <token name="T_WHITESPACE">     </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="342">
    <token name="T_DOC_COMMENT">     * Get the udf password policy</token>
  </line>
  <line no="343">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="344">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="345">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="346">
    <token name="T_DOC_COMMENT">     * @return array / Object</token>
  </line>
  <line no="347">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="348">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="349">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="350">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="351">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_getUdfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="352">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="353">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="354">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="355">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE">  </token>
  </line>
  <line no="356">
    <token name="T_WHITESPACE">	</token>
  </line>
  <line no="357">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="358">
    <token name="T_DOC_COMMENT">     * Set the value of base entropy toggle flag</token>
  </line>
  <line no="359">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="360">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="361">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="362">
    <token name="T_DOC_COMMENT">     * @param True or false to toggle the attribute</token>
  </line>
  <line no="363">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="364">
    <token name="T_DOC_COMMENT">     * @return void</token>
  </line>
  <line no="365">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="366">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="367">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="368">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="369">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_setBaseEntropyOverride</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$toggle</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="370">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropyOverride</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="371">
    <token name="T_WHITESPACE">           </token>
    <token name="T_BOOLEAN_AND">&amp;&amp;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">is_bool</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$toggle</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="372">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="373">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropyOverride</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$toggle</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">   </token>
  </line>
  <line no="374">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="375">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="376"/>
  <line no="377">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="378">
    <token name="T_DOC_COMMENT">     * Get the current value of base entropy override attrib</token>
  </line>
  <line no="379">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="380">
    <token name="T_DOC_COMMENT">     * 2013-07-18</token>
  </line>
  <line no="381">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="382">
    <token name="T_DOC_COMMENT">     * @return bool</token>
  </line>
  <line no="383">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="384">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="385">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="386">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="387">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_getBaseEntropyOverride</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="388">
    <token name="T_WHITESPACE">	</token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropyOverride</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="389">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_baseEntropyOverride</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="390">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="391">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="392">
    <token name="T_WHITESPACE">	</token>
  </line>
  <line no="393">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="394">
    <token name="T_DOC_COMMENT">     * build simple regex patterns based on particular entropy settings</token>
  </line>
  <line no="395">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="396">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="397">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="398">
    <token name="T_DOC_COMMENT">     * @param  int patternCode - integer representing defined constants for variable code</token>
  </line>
  <line no="399">
    <token name="T_DOC_COMMENT">     * @param  int matchCount  - integer representing the count of matched transactions</token>
  </line>
  <line no="400">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="401">
    <token name="T_DOC_COMMENT">     * @return string</token>
  </line>
  <line no="402">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="403">
    <token name="T_DOC_COMMENT">     * @access private</token>
  </line>
  <line no="404">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE">	</token>
  </line>
  <line no="405">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PRIVATE">private</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_regexBuildPattern</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$patternCode</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="406">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$patternRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="407"/>
  <line no="408">
    <token name="T_WHITESPACE">        </token>
    <token name="T_SWITCH">switch</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$patternCode</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="409">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="410">
    <token name="T_WHITESPACE">                </token>
    <token name="T_VARIABLE">$patternRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_ENCAPSED_AND_WHITESPACE">(?=(?:.*[A-Z]){</token>
    <token name="T_CURLY_OPEN">{</token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_ENCAPSED_AND_WHITESPACE">})</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="411">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="412">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">2</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="413">
    <token name="T_WHITESPACE">                </token>
    <token name="T_VARIABLE">$patternRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_ENCAPSED_AND_WHITESPACE">(?=(?:.*[a-z]){</token>
    <token name="T_CURLY_OPEN">{</token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_ENCAPSED_AND_WHITESPACE">})</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="414">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="415">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">3</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="416">
    <token name="T_WHITESPACE">                </token>
    <token name="T_VARIABLE">$patternRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_ENCAPSED_AND_WHITESPACE">(?=(?:.*[0-9]){</token>
    <token name="T_CURLY_OPEN">{</token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_ENCAPSED_AND_WHITESPACE">})</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="417">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="418">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">4</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="419">
    <token name="T_WHITESPACE">                </token>
    <token name="T_VARIABLE">$patternRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'(?=(?:.*([-@%+\/\'!#$^*?:.)(}{\[\]~_])){'</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'})'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="420">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="421">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">5</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="422">
    <token name="T_WHITESPACE">                </token>
    <token name="T_VARIABLE">$patternRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'((.)\2}?(\2{'</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'}))'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="423">
    <token name="T_WHITESPACE">            </token>
    <token name="T_DEFAULT">default</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="424">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="425">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="426">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$patternRegex</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="427">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The regex pattern is not set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1013</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="428">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="429"/>
  <line no="430">
    <token name="T_WHITESPACE">        </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$patternRegex</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="431">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="432">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="433">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="434">
    <token name="T_DOC_COMMENT">    * Get a description of the required password entropy</token>
  </line>
  <line no="435">
    <token name="T_DOC_COMMENT">    * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="436">
    <token name="T_DOC_COMMENT">    * 2015-07-18</token>
  </line>
  <line no="437">
    <token name="T_DOC_COMMENT">    *    </token>
  </line>
  <line no="438">
    <token name="T_DOC_COMMENT">    * @return string</token>
  </line>
  <line no="439">
    <token name="T_DOC_COMMENT">    *</token>
  </line>
  <line no="440">
    <token name="T_DOC_COMMENT">    * @access protected</token>
  </line>
  <line no="441">
    <token name="T_DOC_COMMENT">    * @final</token>
  </line>
  <line no="442">
    <token name="T_DOC_COMMENT">    */</token>
    <token name="T_WHITESPACE">	</token>
  </line>
  <line no="443">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_STRING">_getPasswordEntropyDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="444">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_getUdfEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="445">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="446">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$description</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The password entropy requires at minimum, the following: '</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="447">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$hasEntropy</token>
    <token name="T_WHITESPACE">     </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="448">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="449">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$concatenator</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="450">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="451">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="452">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$lowercaseLen</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="453">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$description</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_CONCAT_EQUAL">.=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> at least </token>
    <token name="T_VARIABLE">$lowercaseLen</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> lowercase characters</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="454">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$hasEntropy</token>
    <token name="T_WHITESPACE">     </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="455">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="456">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="457">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="458">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="459">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="460">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$concatenator</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">','</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="461">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$uppercaseLen</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="462">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$description</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_CONCAT_EQUAL">.=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_VARIABLE">$concatenator</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> at least </token>
    <token name="T_VARIABLE">$uppercaseLen</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> uppercase characters</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="463">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$hasEntropy</token>
    <token name="T_WHITESPACE">     </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">     </token>
  </line>
  <line no="464">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="465">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="466">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="467">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="468">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$concatenator</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">','</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="469">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$numericLen</token>
    <token name="T_WHITESPACE">     </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="470">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$description</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_CONCAT_EQUAL">.=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_VARIABLE">$concatenator</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> at least </token>
    <token name="T_VARIABLE">$numericLen</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> numeric characters</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="471">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$hasEntropy</token>
    <token name="T_WHITESPACE">     </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">     </token>
  </line>
  <line no="472">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="473"/>
  <line no="474">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="475">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="476">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$concatenator</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$isFirstEntropy</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">','</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="477">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$specialLen</token>
    <token name="T_WHITESPACE">     </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="478">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$description</token>
    <token name="T_WHITESPACE">   </token>
    <token name="T_CONCAT_EQUAL">.=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_VARIABLE">$concatenator</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> at least </token>
    <token name="T_VARIABLE">$specialLen</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> special characters</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="479">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$hasEntropy</token>
    <token name="T_WHITESPACE">     </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">     </token>
  </line>
  <line no="480">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="481">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="482">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_VARIABLE">$hasEntropy</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="483">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$description</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'There is no minimum password entropy policy in place'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="484">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="485">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="486">
    <token name="T_WHITESPACE">        </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$description</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="487">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="488"/>
  <line no="489">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="490">
    <token name="T_DOC_COMMENT">    * Get a description of the required password entropy</token>
  </line>
  <line no="491">
    <token name="T_DOC_COMMENT">    * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="492">
    <token name="T_DOC_COMMENT">    * 2015-07-18</token>
  </line>
  <line no="493">
    <token name="T_DOC_COMMENT">    *    </token>
  </line>
  <line no="494">
    <token name="T_DOC_COMMENT">    * @return string</token>
  </line>
  <line no="495">
    <token name="T_DOC_COMMENT">    *</token>
  </line>
  <line no="496">
    <token name="T_DOC_COMMENT">    * @access protected</token>
  </line>
  <line no="497">
    <token name="T_DOC_COMMENT">    * @final</token>
  </line>
  <line no="498">
    <token name="T_DOC_COMMENT">    */</token>
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="499">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_getPasswordLengthDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="500">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_getUdfEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="501">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="502">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="503">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_ENCAPSED_AND_WHITESPACE">The minimum password length is </token>
    <token name="T_CURLY_OPEN">{</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_ENCAPSED_AND_WHITESPACE"> characters</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="504">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSE">else</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="505">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'There is no minimum password length policy in place'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="506">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="507">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="508">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="509">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="510">
    <token name="T_DOC_COMMENT">     * Get a description for the entropy policy regarding repeating a character consecutively</token>
  </line>
  <line no="511">
    <token name="T_DOC_COMMENT">     * Cyril Ogana&lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="512">
    <token name="T_DOC_COMMENT">     * 2015-07-18</token>
  </line>
  <line no="513">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="514">
    <token name="T_DOC_COMMENT">     * @return string</token>
  </line>
  <line no="515">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="516">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="517">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="518">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="519">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_getPasswordCharacterRepeatDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="520">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_getUdfEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="521">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="522">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="523">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_ENCAPSED_AND_WHITESPACE">The maximum allowed number of repeated characters in password of same type (e.g. aaa) is </token>
    <token name="T_CURLY_OPEN">{</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_PHPDOX_DOUBLE_QUOTES">"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="524">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSE">else</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="525">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">"There is no maximum allowed number of repeated characters in password of the same type (e.g. aaa)"</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="526">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="527">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="528"/>
  <line no="529">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="530">
    <token name="T_DOC_COMMENT">    * Get a description of the required password policy</token>
  </line>
  <line no="531">
    <token name="T_DOC_COMMENT">    * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="532">
    <token name="T_DOC_COMMENT">    * 2015-07-18</token>
  </line>
  <line no="533">
    <token name="T_DOC_COMMENT">    *    </token>
  </line>
  <line no="534">
    <token name="T_DOC_COMMENT">    * @return string</token>
  </line>
  <line no="535">
    <token name="T_DOC_COMMENT">    *</token>
  </line>
  <line no="536">
    <token name="T_DOC_COMMENT">    * @access protected</token>
  </line>
  <line no="537">
    <token name="T_DOC_COMMENT">    * @final</token>
  </line>
  <line no="538">
    <token name="T_DOC_COMMENT">    */</token>
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="539">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_getPasswordPolicyDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$policyType</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="540">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_getUdfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="541"/>
  <line no="542">
    <token name="T_WHITESPACE">        </token>
    <token name="T_SWITCH">switch</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$policyType</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="543">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="544">
    <token name="T_WHITESPACE">                </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="545">
    <token name="T_WHITESPACE">                    </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The illegal login attempts limit is '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="546">
    <token name="T_WHITESPACE">                </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="547">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="548">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="549">
    <token name="T_WHITESPACE">                </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="550">
    <token name="T_WHITESPACE">                    </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The password reset frequency is '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">' days'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="551">
    <token name="T_WHITESPACE">                </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="552">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="553">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="554">
    <token name="T_WHITESPACE">                </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="555">
    <token name="T_WHITESPACE">                    </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'A user is not allowed to repeat any of their last '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">' passwords'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="556">
    <token name="T_WHITESPACE">                </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="557">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="558">
    <token name="T_WHITESPACE">            </token>
    <token name="T_CASE">case</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="559">
    <token name="T_WHITESPACE">                </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="560">
    <token name="T_WHITESPACE">                    </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'A user account will be temporarily locked out after the illegal login attempts limit for '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">' seconds; and will require admin intervention if the offense is repeated'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="561">
    <token name="T_WHITESPACE">                </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="562">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="563">
    <token name="T_WHITESPACE">            </token>
    <token name="T_DEFAULT">default</token>
    <token name="T_PHPDOX_COLON">:</token>
  </line>
  <line no="564">
    <token name="T_WHITESPACE">            </token>
  </line>
  <line no="565">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BREAK">break</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="566">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="567">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="568">
    <token name="T_WHITESPACE"> </token>
  </line>
  <line no="569">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="570">
    <token name="T_DOC_COMMENT">     * validate the entropy of the password in the userprofile</token>
  </line>
  <line no="571">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="572">
    <token name="T_DOC_COMMENT">     * 2018-07-18</token>
  </line>
  <line no="573">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="574">
    <token name="T_DOC_COMMENT">     * @return bool</token>
  </line>
  <line no="575">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="576">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="577">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="578">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="579">
    <token name="T_WHITESPACE">     </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_validateEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="580">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that required indices exist</token>
  </line>
  <line no="581">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="582">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="583">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="584">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="585">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="586">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Exception</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1014</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="587">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="588"/>
  <line no="589">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that user is not using part of username as password</token>
  </line>
  <line no="590">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$namePartsArr</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ARRAY">array</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="591">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$namePartsArr</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">strtolower</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="592">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$namePartsArr</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">strtolower</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="593">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$namePartsArr</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">strtolower</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_STRING">str_replace</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">' '</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="594">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="595">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$fullNameExploded</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">explode</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">' '</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="596">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="597">
    <token name="T_WHITESPACE">        </token>
    <token name="T_FOREACH">foreach</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$fullNameExploded</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_AS">as</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$nameItem</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="598">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$namePartsArr</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">strtolower</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$nameItem</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="599">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="600">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="601">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//iterate and search for occurrences of name parts</token>
  </line>
  <line no="602">
    <token name="T_WHITESPACE">        </token>
    <token name="T_FOREACH">foreach</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$namePartsArr</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_AS">as</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$namePart</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="603">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$namePartCast</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING_CAST">(string)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$namePart</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="604">
    <token name="T_WHITESPACE">            </token>
  </line>
  <line no="605">
    <token name="T_WHITESPACE">            </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_STRING">strpos</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_STRING">strtolower</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$namePartCast</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_NOT_IDENTICAL">!==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="606">
    <token name="T_WHITESPACE">                </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'Password cannot contain username or any of your names'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_NAMEINPASSWD</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="607">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="608">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="609">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//set which entropy to use (base or udf)</token>
  </line>
  <line no="610">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="611"/>
  <line no="612">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$validateCaseRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="613">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$upperCaseRegex</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="614"/>
  <line no="615">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//build the password entropy regex uppercase</token>
  </line>
  <line no="616">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="617">
    <token name="T_WHITESPACE">            </token>
    <token name="T_COMMENT">//@TODO: Implement as constants the patterns</token>
  </line>
  <line no="618">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$pattern</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="619">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'uppercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="620">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$upperCaseRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_regexBuildPattern</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$pattern</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="621">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="622"/>
  <line no="623">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$lowerCaseRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="624"/>
  <line no="625">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//build the password entropy regex lowercase</token>
  </line>
  <line no="626">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="627">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$pattern</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">2</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="628">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'lowercase'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="629">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$lowerCaseRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_regexBuildPattern</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$pattern</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="630">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="631"/>
  <line no="632">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$numericRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="633"/>
  <line no="634">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//build the password entropy regex numbers</token>
  </line>
  <line no="635">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="636">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$pattern</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">3</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="637">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'numeric'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="638">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$numericRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_regexBuildPattern</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$pattern</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="639">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="640"/>
  <line no="641">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$specialRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">''</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="642"/>
  <line no="643">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//build the password entropy regex special</token>
  </line>
  <line no="644">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'toggle'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="645">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$pattern</token>
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">4</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="646">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_QUESTION_MARK">?</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'special'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_COLON">:</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="647">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$specialRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_regexBuildPattern</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$pattern</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$matchCount</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="648">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="649"/>
  <line no="650">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//regex entropy string</token>
  </line>
  <line no="651"/>
  <line no="652">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$validateCaseRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'/^'</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$upperCaseRegex</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$lowerCaseRegex</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$numericRegex</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$specialRegex</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'/'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="653">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$testVal</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">preg_match</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$validateCaseRegex</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="654"/>
  <line no="655">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$testVal</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_IDENTICAL">===</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="656">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'A fatal error occured in the password validation'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1015</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="657">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSEIF">elseif</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$testVal</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="658">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The password does not meet the minimum entropy. '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_getPasswordEntropyDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_WEAKPASSWD</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="659">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSE">else</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="660">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="661">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="662">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="663">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="664">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="665">
    <token name="T_DOC_COMMENT">     * validate the password length of the users credentials</token>
  </line>
  <line no="666">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="667">
    <token name="T_DOC_COMMENT">     * 2018-07-18</token>
  </line>
  <line no="668">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="669">
    <token name="T_DOC_COMMENT">     * @return bool</token>
  </line>
  <line no="670">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="671">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="672">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="673">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="674">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_validateLength</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="675">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that required indices exist</token>
  </line>
  <line no="676">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="677">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="678">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="679">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="680">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="681">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Exception</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1016</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="682">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="683"/>
  <line no="684">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//determine which entropy to use (base or udf)</token>
  </line>
  <line no="685">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="686">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="687">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//perform length check</token>
  </line>
  <line no="688">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_STRING">strlen</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_LT">&lt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'min_pass_len'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="689">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The password does not meet required length. '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_getPasswordLengthDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_WEAKPASSWD</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="690">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="691">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="692">
    <token name="T_WHITESPACE">        </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="693">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="694">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="695">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="696">
    <token name="T_DOC_COMMENT">     * validate that there are no instances of consecutive character repetitions beyond allowed number</token>
  </line>
  <line no="697">
    <token name="T_DOC_COMMENT">     * in the users password string</token>
  </line>
  <line no="698">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="699">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="700">
    <token name="T_DOC_COMMENT">     * 2018-07-18</token>
  </line>
  <line no="701">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="702">
    <token name="T_DOC_COMMENT">     * @return bool</token>
  </line>
  <line no="703">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="704">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="705">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="706">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE">      </token>
  </line>
  <line no="707">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_validateConsecutiveCharacterRepeat</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="708">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that required indices exist</token>
  </line>
  <line no="709">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="710">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="711">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="712">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="713">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="714">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Exception</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1017</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="715">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="716"/>
  <line no="717">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//determine which entropy to use (base or udf)</token>
  </line>
  <line no="718">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfEntropySetting</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="719">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$maxConsecutiveChars</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_INT_CAST">(int)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'max_consecutive_chars'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="720">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="721">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//because we offset by -2 when doing regex, if the limit is not greater or equal to 2, default to 2</token>
  </line>
  <line no="722">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$maxConsecutiveChars</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_GREATER_OR_EQUAL">&gt;=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">2</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="723">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$maxConsecutiveChars</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">2</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="724">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="725">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="726">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//offset for purposes of matching (TODO: fix?)</token>
  </line>
  <line no="727">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$maxConsecutiveCharsRegexOffset</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_INC">++</token>
    <token name="T_VARIABLE">$maxConsecutiveChars</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_MINUS">-</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">2</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="728">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="729">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//build regex</token>
  </line>
  <line no="730">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$maxConsecutiveCharsRegex</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'/'</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_regexBuildPattern</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_LNUMBER">5</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$maxConsecutiveCharsRegexOffset</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'/'</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="731">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//die(print_r($maxConsecutiveCharsRegex));</token>
  </line>
  <line no="732">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$testVal</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">preg_match</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$maxConsecutiveCharsRegex</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="733"/>
  <line no="734">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$testVal</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_IDENTICAL">===</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="735">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'A fatal error occured in the password validation'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1018</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="736">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSEIF">elseif</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$testVal</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="737">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The password violates policy about consecutive character repetitions. '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_getPasswordCharacterRepeatDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_WEAKPASSWD</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="738">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSE">else</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="739">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="740">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="741">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="742">
    <token name="T_WHITESPACE">        </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="743">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="744">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="745">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="746">
    <token name="T_DOC_COMMENT">     * validate the password policy during authentication</token>
  </line>
  <line no="747">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="748">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="749">
    <token name="T_DOC_COMMENT">     * 2018-07-18</token>
  </line>
  <line no="750">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="751">
    <token name="T_DOC_COMMENT">     * @return bool</token>
  </line>
  <line no="752">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="753">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="754">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="755">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="756">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_validatePolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="757">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that required indices exist</token>
  </line>
  <line no="758">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="759">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="760">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="761">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="762">
    <token name="T_WHITESPACE">         </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="763">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Exception</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1019</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="764">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="765"/>
  <line no="766">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//determine which entropy to use (base or udf)</token>
  </line>
  <line no="767">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="768">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="769">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//check attempt limits</token>
  </line>
  <line no="770">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'account_state'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTSTATE_AUTHFAILED</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="771">
    <token name="T_WHITESPACE">            </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'failed_attempt_count'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_GT">&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="772">
    <token name="T_WHITESPACE">                </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The account has exceeded login attempts and is locked. Contact admin'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_ATTEMPTLIMIT2</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="773">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSEIF">elseif</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'failed_attempt_count'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE">  </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="774">
    <token name="T_WHITESPACE">                </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The account has failed login '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_INC">++</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_limit'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">' times in a row and is temporarily locked. Any further wrong passwords will lead to your account being locked fully. You will be automatically unlocked in '</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'illegal_attempts_penalty_seconds'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DIV">/</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">60</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">' minutes or contact admin to unlock immediately'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_ATTEMPTLIMIT1</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="775">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSE">else</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="776">
    <token name="T_WHITESPACE">                </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'Login failed. Wrong username or password'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_VALID</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="777">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="778">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="779">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="780">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//check needs reset</token>
  </line>
  <line no="781">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$currDateTimeObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">DateTime</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="782">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$passChangeDaysElapsedObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$currDateTimeObj</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">diff</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_last_changed_datetime'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="783">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$passChangeDaysElapsed</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$passChangeDaysElapsedObj</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">format</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'%a'</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="784">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="785">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$passChangeDaysElapsed</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_GT">&gt;</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_reset_frequency'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="786">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The password has expired and must be changed'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_EXPIRED</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="787">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="788">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="789">
    <token name="T_WHITESPACE">        </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="790">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="791">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="792">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="793">
    <token name="T_DOC_COMMENT">     * validate the password policy during process of making a password change</token>
  </line>
  <line no="794">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="795">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="796">
    <token name="T_DOC_COMMENT">     * 2018-07-18</token>
  </line>
  <line no="797">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="798">
    <token name="T_DOC_COMMENT">     * @return bool</token>
  </line>
  <line no="799">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="800">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="801">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="802">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE">      </token>
  </line>
  <line no="803">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_validatePolicyAtChange</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="804">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//validate that required indices exist</token>
  </line>
  <line no="805">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="806">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="807">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="808">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="809">
    <token name="T_WHITESPACE">         </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="810">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Exception</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1020</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="811">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="812"/>
  <line no="813">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//determine which entropy to use (base or udf)</token>
  </line>
  <line no="814">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_udfPasswordPolicy</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="815">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="816">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//check password repeat</token>
  </line>
  <line no="817">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$passHistory</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="818">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$passHistoryRequired</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">array_slice</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$passHistory</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">0</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_INT_CAST">(int)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="819">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="820">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//iterate and verify</token>
  </line>
  <line no="821">
    <token name="T_WHITESPACE">        </token>
    <token name="T_FOREACH">foreach</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$passHistoryRequired</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_AS">as</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$passHistoryItem</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="822">
    <token name="T_WHITESPACE">            </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_STRING">password_verify</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$passHistoryItem</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="823">
    <token name="T_WHITESPACE">                </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">UserCredentialException</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'User cannot repeat any of their '</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$policyObj</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_repeat_minimum'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_DOT">.</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_CONSTANT_ENCAPSED_STRING">' last passwords'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">USERCREDENTIAL_ACCOUNTPOLICY_REPEATERROR</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="824">
    <token name="T_WHITESPACE">            </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="825">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="826">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="827">
    <token name="T_WHITESPACE">        </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="828">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="829">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="830">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="831">
    <token name="T_DOC_COMMENT">     * Check that a user can change password in case you want to implement limits on changing passwords</token>
  </line>
  <line no="832">
    <token name="T_DOC_COMMENT">     * only once in 24 hours</token>
  </line>
  <line no="833">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="834">
    <token name="T_DOC_COMMENT">     * Cyril Ogana &lt;cogana@gmail.com&gt;</token>
  </line>
  <line no="835">
    <token name="T_DOC_COMMENT">     * 2018-07-18</token>
  </line>
  <line no="836">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="837">
    <token name="T_DOC_COMMENT">     * @return bool</token>
  </line>
  <line no="838">
    <token name="T_DOC_COMMENT">     *</token>
  </line>
  <line no="839">
    <token name="T_DOC_COMMENT">     * @access protected</token>
  </line>
  <line no="840">
    <token name="T_DOC_COMMENT">     * @final</token>
  </line>
  <line no="841">
    <token name="T_DOC_COMMENT">     */</token>
    <token name="T_WHITESPACE">       </token>
  </line>
  <line no="842">
    <token name="T_WHITESPACE">    </token>
    <token name="T_FINAL">final</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PROTECTED">protected</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">_canChangePassword</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="843">
    <token name="T_WHITESPACE">         </token>
    <token name="T_COMMENT">//validate that required indices exist</token>
  </line>
  <line no="844">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'username'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="845">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="846">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'fullname'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="847">
    <token name="T_WHITESPACE">            </token>
    <token name="T_BOOLEAN_OR">||</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EXCLAMATION_MARK">!</token>
    <token name="T_ISSET">isset</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'passhist'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
  </line>
  <line no="848">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="849">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Exception</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'The username and password are not set'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1021</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="850">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="851">
    <token name="T_WHITESPACE">  </token>
  </line>
  <line no="852">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//Verify if the password was changed today or server has been futuredated</token>
  </line>
  <line no="853">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$currDateTimeObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">DateTime</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="854">
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="855">
    <token name="T_WHITESPACE">        </token>
    <token name="T_COMMENT">//Password was changed today or in the future</token>
  </line>
  <line no="856">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$currDateTimeObj</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_SMALLER_OR_EQUAL">&lt;=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$this</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">_userProfile</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'policyinfo'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_OPEN_SQUARE">[</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'password_last_changed_datetime'</token>
    <token name="T_PHPDOX_CLOSE_SQUARE">]</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="857">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">false</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="858">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSE">else</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="859">
    <token name="T_WHITESPACE">            </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">true</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="860">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="861">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="862">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="863">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="864">
    <token name="T_DOC_COMMENT">     * Check password strength using NIST Or Wolfram adapter (default NIST)</token>
  </line>
  <line no="865">
    <token name="T_DOC_COMMENT">     * See https://github.com/rchouinard/phpass</token>
  </line>
  <line no="866">
    <token name="T_DOC_COMMENT">     * Many thanks to Ryan Chouinard for the phpass package</token>
  </line>
  <line no="867">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="868">
    <token name="T_DOC_COMMENT">     * @param string $passwordString - The password string to evaluate</token>
  </line>
  <line no="869">
    <token name="T_DOC_COMMENT">     * @param int $strengthAdapter - Named constant representing adapter to use (default NIST)</token>
  </line>
  <line no="870">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="871">
    <token name="T_DOC_COMMENT">     * @return int</token>
  </line>
  <line no="872">
    <token name="T_DOC_COMMENT">     * </token>
  </line>
  <line no="873">
    <token name="T_DOC_COMMENT">     * @access public</token>
  </line>
  <line no="874">
    <token name="T_DOC_COMMENT">     * @static</token>
  </line>
  <line no="875">
    <token name="T_DOC_COMMENT">     */</token>
  </line>
  <line no="876">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STATIC">static</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">passwordStrength</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$passwordString</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$strengthAdapter</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">PHPASS_PASSWORDSTRENGTHADAPTER_NIST</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="877">
    <token name="T_WHITESPACE">        </token>
    <token name="T_IF">if</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$strengthAdapter</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">PHPASS_PASSWORDSTRENGTHADAPTER_WOLFRAM</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="878">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$strengthAdapter</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Strength</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">Adapter</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">Wolfram</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
    <token name="T_WHITESPACE">        </token>
  </line>
  <line no="879">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSEIF">elseif</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$strengthAdapter</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_IS_EQUAL">==</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">PHPASS_PASSWORDSTRENGTHADAPTER_NIST</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="880">
    <token name="T_WHITESPACE">            </token>
    <token name="T_VARIABLE">$strengthAdapter</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Strength</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">Adapter</token>
    <token name="T_NS_SEPARATOR">\</token>
    <token name="T_STRING">Nist</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="881">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_ELSE">else</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_OPEN_CURLY">{</token>
  </line>
  <line no="882">
    <token name="T_WHITESPACE">            </token>
    <token name="T_THROW">throw</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Exception</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_CONSTANT_ENCAPSED_STRING">'Phpass strength adapter calculator must be NIST or Wolfram. Wrong Flag provivded.'</token>
    <token name="T_PHPDOX_COMMA">,</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_LNUMBER">1022</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="883">
    <token name="T_WHITESPACE">        </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="884"/>
  <line no="885">
    <token name="T_WHITESPACE">        </token>
    <token name="T_VARIABLE">$phpassStrength</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PHPDOX_EQUAL">=</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_NEW">new</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">Strength</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$strengthAdapter</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="886">
    <token name="T_WHITESPACE">        </token>
    <token name="T_RETURN">return</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_VARIABLE">$phpassStrength</token>
    <token name="T_OBJECT_OPERATOR">-&gt;</token>
    <token name="T_STRING">calculate</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$passwordString</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="887">
    <token name="T_WHITESPACE">    </token>
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="888">
    <token name="T_WHITESPACE">    </token>
  </line>
  <line no="889">
    <token name="T_WHITESPACE">    </token>
    <token name="T_DOC_COMMENT">/**</token>
  </line>
  <line no="890">
    <token name="T_DOC_COMMENT">        * Abstract methods for concrete implementation</token>
  </line>
  <line no="891">
    <token name="T_DOC_COMMENT">        */</token>
  </line>
  <line no="892">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">getBaseEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="893">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">getBaseEntropyOverride</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="894">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">getBasePasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="895">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">getPasswordEntropyDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="896">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">getPasswordLengthDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="897">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">getPasswordPolicyDescription</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="898">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">getUdfEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="899">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">getUdfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="900">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">setBaseEntropyOverride</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$toggle</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="901">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">setUdfEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="902">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">setUdfPasswordPolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_VARIABLE">$entropyObj</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="903">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">validateEntropy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="904">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">validateLength</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="905">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">validateConsecutiveCharacterRepeat</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="906">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">validatePolicy</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="907">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">validatePolicyAtChange</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="908">
    <token name="T_WHITESPACE">    </token>
    <token name="T_ABSTRACT">abstract</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_PUBLIC">public</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_FUNCTION">function</token>
    <token name="T_WHITESPACE"> </token>
    <token name="T_STRING">canChangePassword</token>
    <token name="T_PHPDOX_OPEN_BRACKET">(</token>
    <token name="T_PHPDOX_CLOSE_BRACKET">)</token>
    <token name="T_PHPDOX_SEMICOLON">;</token>
  </line>
  <line no="909">
    <token name="T_PHPDOX_CLOSE_CURLY">}</token>
  </line>
  <line no="910"/>
</source>