<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1784709479">
  <project timestamp="1784709479">
    <file name="/workspace/src/extensions/OATHAuth/maintenance/Base/AllUsers.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\Base\AllUsers" namespace="global">
        <metrics complexity="16" methods="4" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="62" coveredstatements="44" elements="66" coveredelements="45"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="14" type="stmt" count="7"/>
      <line num="15" type="stmt" count="7"/>
      <line num="16" type="stmt" count="7"/>
      <line num="17" type="stmt" count="7"/>
      <line num="18" type="stmt" count="7"/>
      <line num="19" type="stmt" count="7"/>
      <line num="20" type="stmt" count="7"/>
      <line num="21" type="stmt" count="7"/>
      <line num="22" type="stmt" count="7"/>
      <line num="23" type="stmt" count="7"/>
      <line num="24" type="stmt" count="7"/>
      <line num="29" type="method" name="outputAtEnd" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="32" type="method" name="isRequiredToHave2FAEnabled" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="38" type="method" name="execute" visibility="public" complexity="13" crap="18.16" count="7"/>
      <line num="39" type="stmt" count="7"/>
      <line num="40" type="stmt" count="7"/>
      <line num="43" type="stmt" count="7"/>
      <line num="45" type="stmt" count="7"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="54" type="stmt" count="7"/>
      <line num="55" type="stmt" count="7"/>
      <line num="56" type="stmt" count="7"/>
      <line num="58" type="stmt" count="7"/>
      <line num="59" type="stmt" count="7"/>
      <line num="60" type="stmt" count="7"/>
      <line num="61" type="stmt" count="7"/>
      <line num="62" type="stmt" count="7"/>
      <line num="64" type="stmt" count="7"/>
      <line num="65" type="stmt" count="4"/>
      <line num="69" type="stmt" count="7"/>
      <line num="71" type="stmt" count="7"/>
      <line num="73" type="stmt" count="7"/>
      <line num="74" type="stmt" count="7"/>
      <line num="75" type="stmt" count="7"/>
      <line num="76" type="stmt" count="7"/>
      <line num="77" type="stmt" count="7"/>
      <line num="78" type="stmt" count="4"/>
      <line num="79" type="stmt" count="4"/>
      <line num="80" type="stmt" count="4"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="86" type="stmt" count="4"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="92" type="stmt" count="4"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="97" type="stmt" count="4"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="102" type="stmt" count="4"/>
      <line num="105" type="stmt" count="7"/>
      <line num="106" type="stmt" count="7"/>
      <line num="107" type="stmt" count="7"/>
      <line num="108" type="stmt" count="7"/>
      <line num="109" type="stmt" count="7"/>
      <metrics loc="112" ncloc="110" classes="1" methods="4" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="62" coveredstatements="44" elements="66" coveredelements="45"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/DisableOATHAuthForUser.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\DisableOATHAuthForUser" namespace="global">
        <metrics complexity="5" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="16" elements="18" coveredelements="18"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="20" type="stmt" count="3"/>
      <line num="21" type="stmt" count="3"/>
      <line num="22" type="stmt" count="3"/>
      <line num="23" type="stmt" count="3"/>
      <line num="26" type="method" name="execute" visibility="public" complexity="4" crap="4" count="3"/>
      <line num="27" type="stmt" count="3"/>
      <line num="28" type="stmt" count="3"/>
      <line num="30" type="stmt" count="3"/>
      <line num="31" type="stmt" count="3"/>
      <line num="32" type="stmt" count="1"/>
      <line num="35" type="stmt" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="37" type="stmt" count="2"/>
      <line num="38" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <metrics loc="56" ncloc="48" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="16" elements="18" coveredelements="18"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/Enable2FAForUsersWithout.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\Enable2FAForUsersWithout" namespace="global">
        <metrics complexity="7" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="32" coveredstatements="8" elements="35" coveredelements="10"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="33" type="method" name="doWork" visibility="protected" complexity="5" crap="30" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="73" type="method" name="outputAtEnd" visibility="protected" complexity="1" crap="1" count="1"/>
      <line num="74" type="stmt" count="1"/>
      <line num="75" type="stmt" count="1"/>
      <line num="76" type="stmt" count="1"/>
      <line num="77" type="stmt" count="1"/>
      <metrics loc="85" ncloc="77" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="32" coveredstatements="8" elements="35" coveredelements="10"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/FindWebAuthnKeysWithDeprecatedAlgorithms.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\FindWebAuthnKeysWithDeprecatedAlgorithms" namespace="global">
        <metrics complexity="5" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="31" elements="33" coveredelements="33"/>
      </class>
      <line num="23" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="29" type="method" name="execute" visibility="public" complexity="4" crap="4" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="50" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="67" type="stmt" count="1"/>
      <line num="71" type="stmt" count="1"/>
      <metrics loc="79" ncloc="73" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="31" elements="33" coveredelements="33"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/ForceLogoutUsersNotMeetingTwoFactorRequirements.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\ForceLogoutUsersNotMeetingTwoFactorRequirements" namespace="global">
        <metrics complexity="6" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="21" coveredstatements="18" elements="24" coveredelements="20"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="22" type="stmt" count="3"/>
      <line num="23" type="stmt" count="3"/>
      <line num="24" type="stmt" count="3"/>
      <line num="25" type="stmt" count="3"/>
      <line num="34" type="method" name="doWork" visibility="protected" complexity="4" crap="4.20" count="2"/>
      <line num="35" type="stmt" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="50" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="56" type="method" name="outputAtEnd" visibility="protected" complexity="1" crap="1" count="3"/>
      <line num="57" type="stmt" count="3"/>
      <line num="58" type="stmt" count="3"/>
      <line num="59" type="stmt" count="3"/>
      <line num="60" type="stmt" count="3"/>
      <metrics loc="69" ncloc="63" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="21" coveredstatements="18" elements="24" coveredelements="20"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/MoveRecoveryCodesFromTOTP.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\MoveRecoveryCodesFromTOTP" namespace="global">
        <metrics complexity="9" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="77" coveredstatements="64" elements="81" coveredelements="67"/>
      </class>
      <line num="39" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="40" type="stmt" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <line num="42" type="stmt" count="2"/>
      <line num="46" type="method" name="doDBUpdates" visibility="protected" complexity="6" crap="6.26" count="2"/>
      <line num="47" type="stmt" count="2"/>
      <line num="48" type="stmt" count="2"/>
      <line num="49" type="stmt" count="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="53" type="stmt" count="2"/>
      <line num="54" type="stmt" count="2"/>
      <line num="55" type="stmt" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="59" type="stmt" count="2"/>
      <line num="60" type="stmt" count="2"/>
      <line num="61" type="stmt" count="2"/>
      <line num="62" type="stmt" count="2"/>
      <line num="63" type="stmt" count="2"/>
      <line num="64" type="stmt" count="2"/>
      <line num="65" type="stmt" count="2"/>
      <line num="67" type="stmt" count="2"/>
      <line num="68" type="stmt" count="1"/>
      <line num="69" type="stmt" count="1"/>
      <line num="71" type="stmt" count="1"/>
      <line num="73" type="stmt" count="0"/>
      <line num="76" type="stmt" count="1"/>
      <line num="77" type="stmt" count="1"/>
      <line num="78" type="stmt" count="1"/>
      <line num="81" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="85" type="stmt" count="1"/>
      <line num="86" type="stmt" count="1"/>
      <line num="87" type="stmt" count="1"/>
      <line num="88" type="stmt" count="1"/>
      <line num="90" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="96" type="stmt" count="1"/>
      <line num="97" type="stmt" count="1"/>
      <line num="98" type="stmt" count="1"/>
      <line num="99" type="stmt" count="1"/>
      <line num="101" type="stmt" count="1"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="122" type="stmt" count="1"/>
      <line num="123" type="stmt" count="1"/>
      <line num="124" type="stmt" count="1"/>
      <line num="125" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="129" type="stmt" count="1"/>
      <line num="130" type="stmt" count="1"/>
      <line num="131" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="135" type="stmt" count="1"/>
      <line num="136" type="stmt" count="1"/>
      <line num="137" type="stmt" count="1"/>
      <line num="144" type="stmt" count="2"/>
      <line num="145" type="stmt" count="2"/>
      <line num="146" type="stmt" count="2"/>
      <line num="149" type="method" name="updateRow" visibility="private" complexity="1" crap="1" count="1"/>
      <line num="150" type="stmt" count="1"/>
      <line num="151" type="stmt" count="1"/>
      <line num="152" type="stmt" count="1"/>
      <line num="153" type="stmt" count="1"/>
      <line num="154" type="stmt" count="1"/>
      <line num="155" type="stmt" count="1"/>
      <line num="159" type="method" name="getUpdateKey" visibility="protected" complexity="1" crap="1" count="2"/>
      <line num="160" type="stmt" count="2"/>
      <metrics loc="168" ncloc="140" classes="1" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="77" coveredstatements="64" elements="81" coveredelements="67"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/NotifyTwoFactorRequired.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\NotifyTwoFactorRequired" namespace="global">
        <metrics complexity="6" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="31" elements="37" coveredelements="33"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="22" type="stmt" count="3"/>
      <line num="23" type="stmt" count="3"/>
      <line num="24" type="stmt" count="3"/>
      <line num="25" type="stmt" count="3"/>
      <line num="26" type="stmt" count="3"/>
      <line num="27" type="stmt" count="3"/>
      <line num="28" type="stmt" count="3"/>
      <line num="29" type="stmt" count="3"/>
      <line num="30" type="stmt" count="3"/>
      <line num="31" type="stmt" count="3"/>
      <line num="32" type="stmt" count="3"/>
      <line num="33" type="stmt" count="3"/>
      <line num="34" type="stmt" count="3"/>
      <line num="35" type="stmt" count="3"/>
      <line num="36" type="stmt" count="3"/>
      <line num="44" type="method" name="doWork" visibility="protected" complexity="4" crap="4.13" count="2"/>
      <line num="45" type="stmt" count="2"/>
      <line num="46" type="stmt" count="2"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="60" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="69" type="method" name="outputAtEnd" visibility="protected" complexity="1" crap="1" count="3"/>
      <line num="70" type="stmt" count="3"/>
      <line num="71" type="stmt" count="3"/>
      <line num="72" type="stmt" count="3"/>
      <line num="73" type="stmt" count="3"/>
      <metrics loc="81" ncloc="74" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="31" elements="37" coveredelements="33"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/PopulateUserHandles.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\PopulateUserHandles" namespace="global">
        <metrics complexity="8" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="46" coveredstatements="26" elements="49" coveredelements="28"/>
      </class>
      <line num="35" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="43" type="method" name="doDBUpdates" visibility="protected" complexity="6" crap="10.18" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="50" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="57" type="stmt" count="1"/>
      <line num="58" type="stmt" count="1"/>
      <line num="59" type="stmt" count="1"/>
      <line num="60" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="67" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="111" type="stmt" count="1"/>
      <line num="112" type="stmt" count="1"/>
      <line num="113" type="stmt" count="1"/>
      <line num="114" type="stmt" count="1"/>
      <line num="118" type="method" name="getUpdateKey" visibility="protected" complexity="1" crap="1" count="1"/>
      <line num="119" type="stmt" count="1"/>
      <metrics loc="127" ncloc="102" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="46" coveredstatements="26" elements="49" coveredelements="28"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/PurgeExpiredTemporaryRecoveryCodes.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\PurgeExpiredTemporaryRecoveryCodes" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="24" elements="33" coveredelements="25"/>
      </class>
      <line num="30" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="31" type="stmt" count="2"/>
      <line num="32" type="stmt" count="2"/>
      <line num="35" type="method" name="execute" visibility="public" complexity="3" crap="3.13" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="37" type="stmt" count="2"/>
      <line num="38" type="stmt" count="2"/>
      <line num="40" type="stmt" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <line num="42" type="stmt" count="2"/>
      <line num="43" type="stmt" count="2"/>
      <line num="44" type="stmt" count="2"/>
      <line num="45" type="stmt" count="2"/>
      <line num="46" type="stmt" count="2"/>
      <line num="47" type="stmt" count="2"/>
      <line num="48" type="stmt" count="2"/>
      <line num="50" type="stmt" count="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="53" type="stmt" count="2"/>
      <line num="54" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="58" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="78" type="stmt" count="2"/>
      <metrics loc="87" ncloc="74" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="24" elements="33" coveredelements="25"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/ReEncryptSecrets.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\ReEncryptSecrets" namespace="global">
        <metrics complexity="12" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="65" coveredstatements="65" elements="67" coveredelements="67"/>
      </class>
      <line num="26" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="27" type="stmt" count="5"/>
      <line num="28" type="stmt" count="5"/>
      <line num="29" type="stmt" count="5"/>
      <line num="30" type="stmt" count="5"/>
      <line num="31" type="stmt" count="5"/>
      <line num="34" type="method" name="execute" visibility="public" complexity="11" crap="11" count="5"/>
      <line num="35" type="stmt" count="5"/>
      <line num="41" type="stmt" count="5"/>
      <line num="42" type="stmt" count="5"/>
      <line num="43" type="stmt" count="5"/>
      <line num="46" type="stmt" count="5"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="58" type="stmt" count="4"/>
      <line num="59" type="stmt" count="4"/>
      <line num="61" type="stmt" count="4"/>
      <line num="62" type="stmt" count="4"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="3"/>
      <line num="67" type="stmt" count="1"/>
      <line num="68" type="stmt" count="1"/>
      <line num="69" type="stmt" count="1"/>
      <line num="71" type="stmt" count="2"/>
      <line num="76" type="stmt" count="2"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="85" type="stmt" count="1"/>
      <line num="87" type="stmt" count="1"/>
      <line num="88" type="stmt" count="1"/>
      <line num="89" type="stmt" count="1"/>
      <line num="91" type="stmt" count="1"/>
      <line num="92" type="stmt" count="1"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="96" type="stmt" count="1"/>
      <line num="97" type="stmt" count="1"/>
      <line num="98" type="stmt" count="1"/>
      <line num="99" type="stmt" count="1"/>
      <line num="101" type="stmt" count="1"/>
      <line num="102" type="stmt" count="1"/>
      <line num="103" type="stmt" count="1"/>
      <line num="105" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="109" type="stmt" count="1"/>
      <line num="110" type="stmt" count="1"/>
      <line num="111" type="stmt" count="1"/>
      <line num="112" type="stmt" count="1"/>
      <line num="121" type="stmt" count="1"/>
      <line num="123" type="stmt" count="1"/>
      <line num="125" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="128" type="stmt" count="1"/>
      <line num="129" type="stmt" count="1"/>
      <line num="130" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="133" type="stmt" count="1"/>
      <line num="140" type="stmt" count="1"/>
      <line num="141" type="stmt" count="1"/>
      <line num="142" type="stmt" count="1"/>
      <metrics loc="150" ncloc="135" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="65" coveredstatements="65" elements="67" coveredelements="67"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/Recover2FAForUser.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\Recover2FAForUser" namespace="global">
        <metrics complexity="8" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="35" coveredstatements="27" elements="37" coveredelements="28"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="21" type="stmt" count="5"/>
      <line num="22" type="stmt" count="5"/>
      <line num="23" type="stmt" count="5"/>
      <line num="24" type="stmt" count="5"/>
      <line num="25" type="stmt" count="5"/>
      <line num="26" type="stmt" count="5"/>
      <line num="27" type="stmt" count="5"/>
      <line num="28" type="stmt" count="5"/>
      <line num="29" type="stmt" count="5"/>
      <line num="32" type="method" name="execute" visibility="public" complexity="7" crap="8.43" count="5"/>
      <line num="33" type="stmt" count="5"/>
      <line num="34" type="stmt" count="5"/>
      <line num="35" type="stmt" count="5"/>
      <line num="36" type="stmt" count="5"/>
      <line num="38" type="stmt" count="5"/>
      <line num="40" type="stmt" count="5"/>
      <line num="41" type="stmt" count="5"/>
      <line num="43" type="stmt" count="5"/>
      <line num="44" type="stmt" count="5"/>
      <line num="45" type="stmt" count="5"/>
      <line num="46" type="stmt" count="5"/>
      <line num="47" type="stmt" count="5"/>
      <line num="48" type="stmt" count="5"/>
      <line num="49" type="stmt" count="5"/>
      <line num="50" type="stmt" count="5"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="62" type="stmt" count="5"/>
      <line num="63" type="stmt" count="4"/>
      <line num="66" type="stmt" count="1"/>
      <metrics loc="74" ncloc="70" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="35" coveredstatements="27" elements="37" coveredelements="28"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/UpdateForMultipleDevicesSupport.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\UpdateForMultipleDevicesSupport" namespace="global">
        <metrics complexity="8" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="127" ncloc="107" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/UpdateKeysToLatestVersion.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\UpdateKeysToLatestVersion" namespace="global">
        <metrics complexity="6" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="48" coveredstatements="24" elements="50" coveredelements="25"/>
      </class>
      <line num="35" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="44" type="method" name="execute" visibility="public" complexity="5" crap="9.66" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="58" type="stmt" count="1"/>
      <line num="59" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="101" type="stmt" count="1"/>
      <line num="102" type="stmt" count="1"/>
      <line num="103" type="stmt" count="1"/>
      <metrics loc="111" ncloc="100" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="48" coveredstatements="24" elements="50" coveredelements="25"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/maintenance/UpdateSecretsToEncryptedFormat.php">
      <class name="MediaWiki\Extension\OATHAuth\Maintenance\UpdateSecretsToEncryptedFormat" namespace="global">
        <metrics complexity="11" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="51" coveredstatements="46" elements="54" coveredelements="48"/>
      </class>
      <line num="37" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="44" type="method" name="doDBUpdates" visibility="protected" complexity="9" crap="9.10" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="68" type="stmt" count="1"/>
      <line num="69" type="stmt" count="1"/>
      <line num="70" type="stmt" count="1"/>
      <line num="72" type="stmt" count="1"/>
      <line num="73" type="stmt" count="1"/>
      <line num="74" type="stmt" count="1"/>
      <line num="75" type="stmt" count="1"/>
      <line num="76" type="stmt" count="1"/>
      <line num="77" type="stmt" count="1"/>
      <line num="78" type="stmt" count="1"/>
      <line num="79" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="82" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="86" type="stmt" count="1"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="92" type="stmt" count="1"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="96" type="stmt" count="1"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="103" type="stmt" count="1"/>
      <line num="104" type="stmt" count="1"/>
      <line num="105" type="stmt" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="110" type="stmt" count="1"/>
      <line num="111" type="stmt" count="1"/>
      <line num="118" type="stmt" count="1"/>
      <line num="119" type="stmt" count="1"/>
      <line num="120" type="stmt" count="1"/>
      <line num="121" type="stmt" count="0"/>
      <line num="123" type="stmt" count="1"/>
      <line num="129" type="method" name="getUpdateKey" visibility="protected" complexity="1" crap="1" count="1"/>
      <line num="130" type="stmt" count="1"/>
      <metrics loc="138" ncloc="110" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="51" coveredstatements="46" elements="54" coveredelements="48"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/AAGUIDLookup.php">
      <class name="MediaWiki\Extension\OATHAuth\AAGUIDLookup" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="3" coveredstatements="3" elements="5" coveredelements="5"/>
      </class>
      <line num="25" type="method" name="getDeviceName" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="26" type="stmt" count="5"/>
      <line num="27" type="stmt" count="5"/>
      <line num="36" type="method" name="generateFriendlyName" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="37" type="stmt" count="2"/>
      <metrics loc="40" ncloc="16" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="3" coveredstatements="3" elements="5" coveredelements="5"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Api/ApiWebAuthn.php">
      <class name="MediaWiki\Extension\OATHAuth\Api\ApiWebAuthn" namespace="global">
        <metrics complexity="22" methods="13" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="85" coveredstatements="0" elements="98" coveredelements="0"/>
      </class>
      <line num="49" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="60" type="method" name="execute" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="80" type="method" name="needsToken" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="85" type="method" name="mustBePosted" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="90" type="method" name="isWriteMode" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="95" type="method" name="getSummaryMessage" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="100" type="method" name="getAllowedParams" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="130" type="method" name="checkPermissions" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="147" type="method" name="checkModule" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="154" type="method" name="getAuthInfo" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="165" type="method" name="getRegisterInfo" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="179" type="method" name="register" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="190" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="200" type="method" name="getOATHUser" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <metrics loc="204" ncloc="187" classes="1" methods="13" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="85" coveredstatements="0" elements="98" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/PasskeyPrimaryAuthenticationProvider.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\PasskeyPrimaryAuthenticationProvider" namespace="global">
        <metrics complexity="21" methods="8" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="54" coveredstatements="0" elements="62" coveredelements="0"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="28" type="method" name="getAuthenticationRequests" visibility="public" complexity="7" crap="56" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="61" type="method" name="beginPrimaryAuthentication" visibility="public" complexity="8" crap="72" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="111" type="method" name="accountCreationType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="116" type="method" name="beginPrimaryAccountCreation" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="122" type="method" name="testUserExists" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="128" type="method" name="providerAllowsAuthenticationDataChange" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="134" type="method" name="providerChangeAuthenticationData" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <metrics loc="138" ncloc="119" classes="1" methods="8" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="54" coveredstatements="0" elements="62" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/ReauthPrimaryAuthenticationProvider.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\ReauthPrimaryAuthenticationProvider" namespace="global">
        <metrics complexity="32" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="67" coveredstatements="0" elements="77" coveredelements="0"/>
      </class>
      <line num="25" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="32" type="method" name="getAuthenticationRequests" visibility="public" complexity="13" crap="182" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="98" type="method" name="beginPrimaryAuthentication" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="125" type="method" name="continuePrimaryAuthentication" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="151" type="method" name="accountCreationType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="156" type="method" name="beginPrimaryAccountCreation" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="162" type="method" name="testUserExists" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="168" type="method" name="providerAllowsAuthenticationDataChange" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="174" type="method" name="providerChangeAuthenticationData" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="184" type="method" name="isRestrictedReauth" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <metrics loc="189" ncloc="146" classes="1" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="67" coveredstatements="0" elements="77" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/RecoveryCodesAuthenticationRequest.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\RecoveryCodesAuthenticationRequest" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="8" elements="14" coveredelements="9"/>
      </class>
      <line num="22" type="method" name="describeCredentials" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="30" type="method" name="getFieldInfo" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="31" type="stmt" count="3"/>
      <line num="32" type="stmt" count="3"/>
      <line num="33" type="stmt" count="3"/>
      <line num="34" type="stmt" count="3"/>
      <line num="35" type="stmt" count="3"/>
      <line num="36" type="stmt" count="3"/>
      <line num="37" type="stmt" count="3"/>
      <line num="38" type="stmt" count="3"/>
      <metrics loc="41" ncloc="30" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="8" elements="14" coveredelements="9"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/RecoveryCodesSecondaryAuthenticationProvider.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\RecoveryCodesSecondaryAuthenticationProvider" namespace="global">
        <metrics complexity="12" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="35" coveredstatements="0" elements="40" coveredelements="0"/>
      </class>
      <line num="27" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="35" type="method" name="getAuthenticationRequests" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="45" type="method" name="beginSecondaryAuthentication" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="60" type="method" name="continueSecondaryAuthentication" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="103" type="method" name="beginSecondaryAccountCreation" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <metrics loc="107" ncloc="86" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="35" coveredstatements="0" elements="40" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/SecondaryAuthenticationProvider.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\SecondaryAuthenticationProvider" namespace="global">
        <metrics complexity="30" methods="10" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="58" elements="76" coveredelements="62"/>
      </class>
      <line num="23" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="13"/>
      <line num="30" type="stmt" count="13"/>
      <line num="33" type="method" name="getAuthenticationRequests" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="38" type="method" name="beginSecondaryAccountCreation" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="47" type="method" name="beginSecondaryAuthentication" visibility="public" complexity="4" crap="4.06" count="13"/>
      <line num="48" type="stmt" count="13"/>
      <line num="51" type="stmt" count="0"/>
      <line num="54" type="stmt" count="13"/>
      <line num="56" type="stmt" count="13"/>
      <line num="57" type="stmt" count="1"/>
      <line num="60" type="stmt" count="12"/>
      <line num="61" type="stmt" count="12"/>
      <line num="62" type="stmt" count="0"/>
      <line num="64" type="stmt" count="12"/>
      <line num="65" type="stmt" count="12"/>
      <line num="66" type="stmt" count="12"/>
      <line num="70" type="stmt" count="12"/>
      <line num="72" type="stmt" count="12"/>
      <line num="76" type="method" name="continueSecondaryAuthentication" visibility="public" complexity="5" crap="5.01" count="9"/>
      <line num="77" type="stmt" count="9"/>
      <line num="79" type="stmt" count="9"/>
      <line num="80" type="stmt" count="9"/>
      <line num="81" type="stmt" count="0"/>
      <line num="83" type="stmt" count="9"/>
      <line num="86" type="stmt" count="9"/>
      <line num="87" type="stmt" count="9"/>
      <line num="89" type="stmt" count="2"/>
      <line num="91" type="stmt" count="9"/>
      <line num="94" type="stmt" count="9"/>
      <line num="95" type="stmt" count="9"/>
      <line num="98" type="stmt" count="9"/>
      <line num="99" type="stmt" count="9"/>
      <line num="102" type="method" name="getModule" visibility="private" complexity="1" crap="1" count="12"/>
      <line num="103" type="stmt" count="12"/>
      <line num="104" type="stmt" count="12"/>
      <line num="115" type="method" name="getModuleFromRequest" visibility="private" complexity="5" crap="5.05" count="12"/>
      <line num="117" type="stmt" count="12"/>
      <line num="118" type="stmt" count="12"/>
      <line num="119" type="stmt" count="12"/>
      <line num="121" type="stmt" count="4"/>
      <line num="125" type="stmt" count="4"/>
      <line num="126" type="stmt" count="4"/>
      <line num="127" type="stmt" count="4"/>
      <line num="131" type="stmt" count="0"/>
      <line num="134" type="method" name="getDefaultModule" visibility="private" complexity="6" crap="7.33" count="12"/>
      <line num="139" type="stmt" count="12"/>
      <line num="140" type="stmt" count="0"/>
      <line num="144" type="stmt" count="12"/>
      <line num="145" type="stmt" count="12"/>
      <line num="146" type="stmt" count="0"/>
      <line num="151" type="stmt" count="12"/>
      <line num="154" type="method" name="getProviderForModule" visibility="private" complexity="1" crap="1" count="12"/>
      <line num="155" type="stmt" count="12"/>
      <line num="157" type="stmt" count="12"/>
      <line num="158" type="stmt" count="12"/>
      <line num="159" type="stmt" count="12"/>
      <line num="160" type="stmt" count="12"/>
      <line num="161" type="stmt" count="12"/>
      <line num="162" type="stmt" count="12"/>
      <line num="163" type="stmt" count="12"/>
      <line num="164" type="stmt" count="12"/>
      <line num="165" type="stmt" count="12"/>
      <line num="168" type="method" name="maybeAddSelectAuthenticationRequest" visibility="private" complexity="5" crap="5" count="12"/>
      <line num="173" type="stmt" count="12"/>
      <line num="174" type="stmt" count="9"/>
      <line num="177" type="stmt" count="12"/>
      <line num="178" type="stmt" count="12"/>
      <line num="179" type="stmt" count="12"/>
      <line num="180" type="stmt" count="12"/>
      <line num="182" type="stmt" count="12"/>
      <line num="183" type="stmt" count="2"/>
      <line num="186" type="stmt" count="12"/>
      <line num="187" type="stmt" count="8"/>
      <line num="188" type="stmt" count="8"/>
      <metrics loc="192" ncloc="160" classes="1" methods="10" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="58" elements="76" coveredelements="62"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/TOTPAuthenticationRequest.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\TOTPAuthenticationRequest" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="7" elements="13" coveredelements="8"/>
      </class>
      <line num="22" type="method" name="describeCredentials" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="30" type="method" name="getFieldInfo" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="31" type="stmt" count="3"/>
      <line num="32" type="stmt" count="3"/>
      <line num="33" type="stmt" count="3"/>
      <line num="34" type="stmt" count="3"/>
      <line num="35" type="stmt" count="3"/>
      <line num="36" type="stmt" count="3"/>
      <line num="37" type="stmt" count="3"/>
      <metrics loc="40" ncloc="30" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="7" elements="13" coveredelements="8"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/TOTPSecondaryAuthenticationProvider.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\TOTPSecondaryAuthenticationProvider" namespace="global">
        <metrics complexity="10" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="0" elements="39" coveredelements="0"/>
      </class>
      <line num="28" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="36" type="method" name="getAuthenticationRequests" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="46" type="method" name="beginSecondaryAuthentication" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="57" type="method" name="continueSecondaryAuthentication" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="99" type="method" name="beginSecondaryAccountCreation" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <metrics loc="103" ncloc="80" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="0" elements="39" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/TwoFactorModuleSelectAuthenticationRequest.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\TwoFactorModuleSelectAuthenticationRequest" namespace="global">
        <metrics complexity="7" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="27" coveredstatements="27" elements="32" coveredelements="32"/>
      </class>
      <line num="42" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="43" type="stmt" count="4"/>
      <line num="44" type="stmt" count="4"/>
      <line num="48" type="method" name="getFieldInfo" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="49" type="stmt" count="3"/>
      <line num="50" type="stmt" count="3"/>
      <line num="52" type="stmt" count="3"/>
      <line num="53" type="stmt" count="3"/>
      <line num="54" type="stmt" count="3"/>
      <line num="55" type="stmt" count="3"/>
      <line num="56" type="stmt" count="3"/>
      <line num="57" type="stmt" count="3"/>
      <line num="58" type="stmt" count="3"/>
      <line num="59" type="stmt" count="3"/>
      <line num="60" type="stmt" count="3"/>
      <line num="61" type="stmt" count="3"/>
      <line num="65" type="method" name="getMetadata" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="67" type="stmt" count="1"/>
      <line num="68" type="stmt" count="1"/>
      <line num="69" type="stmt" count="1"/>
      <line num="70" type="stmt" count="1"/>
      <line num="74" type="method" name="loadFromSubmission" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="80" type="stmt" count="2"/>
      <line num="81" type="stmt" count="2"/>
      <line num="82" type="stmt" count="2"/>
      <line num="86" type="method" name="__set_state" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="87" type="stmt" count="2"/>
      <line num="88" type="stmt" count="2"/>
      <line num="89" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <metrics loc="95" ncloc="62" classes="1" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="27" coveredstatements="27" elements="32" coveredelements="32"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/WebAuthnAuthenticationRequest.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\WebAuthnAuthenticationRequest" namespace="global">
        <metrics complexity="10" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="50" coveredstatements="0" elements="55" coveredelements="0"/>
      </class>
      <line num="27" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="39" type="method" name="describeCredentials" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="47" type="method" name="getFieldInfo" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="93" type="method" name="loadFromSubmission" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="102" type="method" name="getSubmittedData" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <metrics loc="111" ncloc="87" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="50" coveredstatements="0" elements="55" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Auth/WebAuthnSecondaryAuthenticationProvider.php">
      <class name="MediaWiki\Extension\OATHAuth\Auth\WebAuthnSecondaryAuthenticationProvider" namespace="global">
        <metrics complexity="14" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="0" elements="49" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="25" type="method" name="getAuthenticationRequests" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="30" type="method" name="beginSecondaryAuthentication" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="49" type="method" name="continueSecondaryAuthentication" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="93" type="method" name="addModules" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="101" type="method" name="beginSecondaryAccountCreation" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <metrics loc="105" ncloc="92" classes="1" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="0" elements="49" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/DeprecatedKeyException.php">
      <class name="MediaWiki\Extension\OATHAuth\DeprecatedKeyException" namespace="global">
        <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="14" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Enforce2FA/Mandatory2FAChecker.php">
      <class name="MediaWiki\Extension\OATHAuth\Enforce2FA\Mandatory2FAChecker" namespace="global">
        <metrics complexity="23" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="76" coveredstatements="76" elements="81" coveredelements="81"/>
      </class>
      <line num="24" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="10"/>
      <line num="31" type="stmt" count="10"/>
      <line num="40" type="method" name="getGroupsRequiring2FA" visibility="public" complexity="4" crap="4" count="8"/>
      <line num="41" type="stmt" count="8"/>
      <line num="42" type="stmt" count="8"/>
      <line num="44" type="stmt" count="8"/>
      <line num="45" type="stmt" count="8"/>
      <line num="46" type="stmt" count="8"/>
      <line num="47" type="stmt" count="8"/>
      <line num="48" type="stmt" count="7"/>
      <line num="50" type="stmt" count="8"/>
      <line num="51" type="stmt" count="8"/>
      <line num="52" type="stmt" count="7"/>
      <line num="55" type="stmt" count="8"/>
      <line num="71" type="method" name="getGroupsRequiring2FAAcrossWikiFarm" visibility="public" complexity="10" crap="10" count="5"/>
      <line num="72" type="stmt" count="5"/>
      <line num="74" type="stmt" count="5"/>
      <line num="75" type="stmt" count="4"/>
      <line num="76" type="stmt" count="4"/>
      <line num="80" type="stmt" count="4"/>
      <line num="83" type="stmt" count="4"/>
      <line num="84" type="stmt" count="4"/>
      <line num="85" type="stmt" count="4"/>
      <line num="86" type="stmt" count="4"/>
      <line num="87" type="stmt" count="4"/>
      <line num="88" type="stmt" count="4"/>
      <line num="89" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="1"/>
      <line num="93" type="stmt" count="2"/>
      <line num="94" type="stmt" count="2"/>
      <line num="97" type="stmt" count="1"/>
      <line num="100" type="stmt" count="5"/>
      <line num="101" type="stmt" count="5"/>
      <line num="102" type="stmt" count="3"/>
      <line num="103" type="stmt" count="3"/>
      <line num="104" type="stmt" count="1"/>
      <line num="106" type="stmt" count="3"/>
      <line num="107" type="stmt" count="3"/>
      <line num="108" type="stmt" count="2"/>
      <line num="110" type="stmt" count="3"/>
      <line num="113" type="stmt" count="5"/>
      <line num="114" type="stmt" count="4"/>
      <line num="115" type="stmt" count="4"/>
      <line num="116" type="stmt" count="4"/>
      <line num="117" type="stmt" count="2"/>
      <line num="118" type="stmt" count="1"/>
      <line num="119" type="stmt" count="1"/>
      <line num="120" type="stmt" count="1"/>
      <line num="122" type="stmt" count="1"/>
      <line num="127" type="stmt" count="5"/>
      <line num="139" type="method" name="getGlobalGroupsRequiring2FA" visibility="private" complexity="5" crap="5" count="4"/>
      <line num="140" type="stmt" count="4"/>
      <line num="141" type="stmt" count="4"/>
      <line num="143" type="stmt" count="4"/>
      <line num="144" type="stmt" count="1"/>
      <line num="147" type="stmt" count="3"/>
      <line num="148" type="stmt" count="3"/>
      <line num="150" type="stmt" count="3"/>
      <line num="151" type="stmt" count="3"/>
      <line num="152" type="stmt" count="3"/>
      <line num="153" type="stmt" count="1"/>
      <line num="155" type="stmt" count="3"/>
      <line num="156" type="stmt" count="3"/>
      <line num="157" type="stmt" count="3"/>
      <line num="158" type="stmt" count="2"/>
      <line num="161" type="stmt" count="3"/>
      <line num="171" type="method" name="isUserRequiredToHave2FAToMeetConditions" visibility="private" complexity="3" crap="3" count="10"/>
      <line num="172" type="stmt" count="10"/>
      <line num="173" type="stmt" count="10"/>
      <line num="174" type="stmt" count="10"/>
      <line num="175" type="stmt" count="10"/>
      <line num="176" type="stmt" count="10"/>
      <line num="178" type="stmt" count="10"/>
      <line num="179" type="stmt" count="10"/>
      <line num="181" type="stmt" count="3"/>
      <line num="184" type="stmt" count="8"/>
      <line num="185" type="stmt" count="8"/>
      <line num="187" type="stmt" count="8"/>
      <line num="188" type="stmt" count="8"/>
      <line num="190" type="stmt" count="8"/>
      <metrics loc="193" ncloc="148" classes="1" methods="5" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="76" coveredstatements="76" elements="81" coveredelements="81"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Enforce2FA/UserRequirementsConditionEvaluatorWith2FAAssumption.php">
      <class name="MediaWiki\Extension\OATHAuth\Enforce2FA\UserRequirementsConditionEvaluatorWith2FAAssumption" namespace="global">
        <metrics complexity="3" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="6" coveredelements="6"/>
      </class>
      <line num="22" type="method" name="checkCondition" visibility="public" complexity="2" crap="2" count="7"/>
      <line num="28" type="stmt" count="7"/>
      <line num="29" type="stmt" count="6"/>
      <line num="31" type="stmt" count="1"/>
      <line num="40" type="method" name="setAssumed2FAState" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="41" type="stmt" count="7"/>
      <metrics loc="44" ncloc="29" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="6" coveredelements="6"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/ExpiringRecoveryCodeGenerator.php">
      <class name="MediaWiki\Extension\OATHAuth\ExpiringRecoveryCodeGenerator" namespace="global">
        <metrics complexity="37" methods="12" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="170" coveredstatements="122" elements="182" coveredelements="131"/>
      </class>
      <line num="29" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="13"/>
      <line num="40" type="stmt" count="13"/>
      <line num="41" type="stmt" count="13"/>
      <line num="42" type="stmt" count="13"/>
      <line num="57" type="method" name="attemptToGenerateRecoveryCodes" visibility="public" complexity="7" crap="7" count="13"/>
      <line num="64" type="stmt" count="13"/>
      <line num="65" type="stmt" count="13"/>
      <line num="66" type="stmt" count="2"/>
      <line num="76" type="stmt" count="11"/>
      <line num="82" type="stmt" count="11"/>
      <line num="83" type="stmt" count="11"/>
      <line num="85" type="stmt" count="2"/>
      <line num="88" type="stmt" count="9"/>
      <line num="89" type="stmt" count="9"/>
      <line num="91" type="stmt" count="6"/>
      <line num="92" type="stmt" count="6"/>
      <line num="93" type="stmt" count="2"/>
      <line num="97" type="stmt" count="7"/>
      <line num="98" type="stmt" count="7"/>
      <line num="99" type="stmt" count="7"/>
      <line num="100" type="stmt" count="7"/>
      <line num="102" type="stmt" count="7"/>
      <line num="103" type="stmt" count="7"/>
      <line num="104" type="stmt" count="7"/>
      <line num="105" type="stmt" count="7"/>
      <line num="107" type="stmt" count="7"/>
      <line num="108" type="stmt" count="1"/>
      <line num="111" type="stmt" count="6"/>
      <line num="112" type="stmt" count="6"/>
      <line num="113" type="stmt" count="6"/>
      <line num="114" type="stmt" count="6"/>
      <line num="115" type="stmt" count="6"/>
      <line num="116" type="stmt" count="6"/>
      <line num="117" type="stmt" count="6"/>
      <line num="118" type="stmt" count="6"/>
      <line num="120" type="stmt" count="6"/>
      <line num="122" type="stmt" count="6"/>
      <line num="123" type="stmt" count="6"/>
      <line num="125" type="stmt" count="6"/>
      <line num="126" type="stmt" count="6"/>
      <line num="127" type="stmt" count="6"/>
      <line num="128" type="stmt" count="6"/>
      <line num="129" type="stmt" count="6"/>
      <line num="130" type="stmt" count="6"/>
      <line num="131" type="stmt" count="6"/>
      <line num="132" type="stmt" count="6"/>
      <line num="133" type="stmt" count="6"/>
      <line num="134" type="stmt" count="6"/>
      <line num="135" type="stmt" count="6"/>
      <line num="136" type="stmt" count="6"/>
      <line num="137" type="stmt" count="6"/>
      <line num="138" type="stmt" count="6"/>
      <line num="139" type="stmt" count="6"/>
      <line num="141" type="stmt" count="6"/>
      <line num="142" type="stmt" count="6"/>
      <line num="143" type="stmt" count="6"/>
      <line num="144" type="stmt" count="6"/>
      <line num="145" type="stmt" count="6"/>
      <line num="148" type="method" name="generateRecoveryCodes" visibility="private" complexity="3" crap="3" count="7"/>
      <line num="153" type="stmt" count="7"/>
      <line num="156" type="stmt" count="7"/>
      <line num="158" type="stmt" count="7"/>
      <line num="159" type="stmt" count="7"/>
      <line num="160" type="stmt" count="7"/>
      <line num="161" type="stmt" count="7"/>
      <line num="162" type="stmt" count="1"/>
      <line num="165" type="stmt" count="1"/>
      <line num="166" type="stmt" count="1"/>
      <line num="167" type="stmt" count="1"/>
      <line num="168" type="stmt" count="1"/>
      <line num="170" type="stmt" count="1"/>
      <line num="171" type="stmt" count="1"/>
      <line num="172" type="stmt" count="1"/>
      <line num="175" type="stmt" count="1"/>
      <line num="176" type="stmt" count="1"/>
      <line num="179" type="stmt" count="6"/>
      <line num="180" type="stmt" count="6"/>
      <line num="186" type="method" name="attemptToCreateInitial2FACodes" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="213" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="239" type="stmt" count="0"/>
      <line num="240" type="stmt" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="248" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="250" type="stmt" count="0"/>
      <line num="251" type="stmt" count="0"/>
      <line num="252" type="stmt" count="0"/>
      <line num="255" type="method" name="validateUser" visibility="private" complexity="2" crap="2" count="13"/>
      <line num="256" type="stmt" count="13"/>
      <line num="257" type="stmt" count="13"/>
      <line num="258" type="stmt" count="2"/>
      <line num="260" type="stmt" count="11"/>
      <line num="261" type="stmt" count="11"/>
      <line num="268" type="method" name="getUserEmail" visibility="public" complexity="8" crap="8" count="9"/>
      <line num="269" type="stmt" count="9"/>
      <line num="272" type="stmt" count="9"/>
      <line num="273" type="stmt" count="9"/>
      <line num="275" type="stmt" count="9"/>
      <line num="277" type="stmt" count="9"/>
      <line num="278" type="stmt" count="9"/>
      <line num="280" type="stmt" count="1"/>
      <line num="284" type="stmt" count="8"/>
      <line num="286" type="stmt" count="8"/>
      <line num="287" type="stmt" count="8"/>
      <line num="289" type="stmt" count="2"/>
      <line num="292" type="stmt" count="6"/>
      <line num="295" type="method" name="getUserByName" visibility="public" complexity="3" crap="3" count="13"/>
      <line num="296" type="stmt" count="13"/>
      <line num="299" type="stmt" count="13"/>
      <line num="300" type="stmt" count="2"/>
      <line num="302" type="stmt" count="11"/>
      <line num="305" type="method" name="sendEmailWithRecoveryCodes" visibility="private" complexity="1" crap="1" count="6"/>
      <line num="311" type="stmt" count="6"/>
      <line num="312" type="stmt" count="6"/>
      <line num="313" type="stmt" count="6"/>
      <line num="314" type="stmt" count="6"/>
      <line num="315" type="stmt" count="6"/>
      <line num="317" type="stmt" count="6"/>
      <line num="318" type="stmt" count="6"/>
      <line num="319" type="stmt" count="6"/>
      <line num="320" type="stmt" count="6"/>
      <line num="321" type="stmt" count="6"/>
      <line num="322" type="stmt" count="6"/>
      <line num="323" type="stmt" count="6"/>
      <line num="324" type="stmt" count="6"/>
      <line num="327" type="method" name="getUserLanguage" visibility="private" complexity="2" crap="2.15" count="6"/>
      <line num="328" type="stmt" count="6"/>
      <line num="329" type="stmt" count="6"/>
      <line num="331" type="stmt" count="0"/>
      <line num="335" type="method" name="getSiteAdminContact" visibility="private" complexity="2" crap="2.15" count="6"/>
      <line num="336" type="stmt" count="6"/>
      <line num="337" type="stmt" count="6"/>
      <line num="338" type="stmt" count="6"/>
      <line num="339" type="stmt" count="6"/>
      <line num="340" type="stmt" count="6"/>
      <line num="341" type="stmt" count="6"/>
      <line num="342" type="stmt" count="0"/>
      <line num="343" type="stmt" count="0"/>
      <line num="344" type="stmt" count="0"/>
      <line num="345" type="stmt" count="0"/>
      <line num="346" type="stmt" count="0"/>
      <line num="348" type="stmt" count="6"/>
      <line num="349" type="stmt" count="6"/>
      <line num="350" type="stmt" count="6"/>
      <line num="351" type="stmt" count="6"/>
      <line num="354" type="method" name="getCodesCount" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="355" type="stmt" count="4"/>
      <line num="358" type="method" name="getTargetUser" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="359" type="stmt" count="4"/>
      <metrics loc="362" ncloc="326" classes="1" methods="12" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="170" coveredstatements="122" elements="182" coveredelements="131"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLField/AddKeyLayout.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLField\AddKeyLayout" namespace="global">
        <metrics complexity="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="0" elements="17" coveredelements="0"/>
      </class>
      <line num="17" type="method" name="getInputHTML" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <metrics loc="38" ncloc="32" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="0" elements="17" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLField/NoJsInfoField.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLField\NoJsInfoField" namespace="global">
        <metrics complexity="3" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="0" elements="13" coveredelements="0"/>
      </class>
      <line num="14" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="21" type="method" name="getInputOOUI" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="31" type="method" name="getInputHTML" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <metrics loc="38" ncloc="33" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="0" elements="13" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLField/RegisteredKeyLayout.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLField\RegisteredKeyLayout" namespace="global">
        <metrics complexity="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="0" elements="20" coveredelements="0"/>
      </class>
      <line num="19" type="method" name="getInputHTML" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <metrics loc="43" ncloc="39" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="19" coveredstatements="0" elements="20" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLForm/KeySessionStorageTrait.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLForm\KeySessionStorageTrait" namespace="global">
        <metrics complexity="11" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="23" elements="29" coveredelements="26"/>
      </class>
      <line num="25" type="method" name="setKeyDataInSession" visibility="public" complexity="8" crap="8.05" count="3"/>
      <line num="27" type="stmt" count="3"/>
      <line num="28" type="stmt" count="3"/>
      <line num="29" type="stmt" count="3"/>
      <line num="30" type="stmt" count="0"/>
      <line num="34" type="stmt" count="3"/>
      <line num="35" type="stmt" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="37" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="42" type="stmt" count="0"/>
      <line num="46" type="stmt" count="3"/>
      <line num="47" type="stmt" count="2"/>
      <line num="48" type="stmt" count="2"/>
      <line num="49" type="stmt" count="2"/>
      <line num="50" type="stmt" count="2"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="59" type="stmt" count="3"/>
      <line num="65" type="method" name="getKeyDataInSession" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="66" type="stmt" count="3"/>
      <line num="69" type="method" name="setKeyDataInSessionToNull" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="70" type="stmt" count="3"/>
      <line num="73" type="method" name="getSessionKeyName" visibility="private" complexity="1" crap="1" count="5"/>
      <line num="74" type="stmt" count="5"/>
      <metrics loc="77" ncloc="61" classes="1" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="23" elements="29" coveredelements="26"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLForm/OATHAuthOOUIHTMLForm.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLForm\OATHAuthOOUIHTMLForm" namespace="global">
        <metrics complexity="6" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="0" elements="34" coveredelements="0"/>
      </class>
      <line num="37" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="50" type="method" name="show" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="56" type="method" name="displayForm" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="67" type="method" name="getDescriptors" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="72" type="method" name="wrapFieldSetSection" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <metrics loc="99" ncloc="89" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="0" elements="34" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLForm/RecoveryCodesRemoveTemporaryForm.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesRemoveTemporaryForm" namespace="global">
        <metrics complexity="8" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="45" coveredstatements="0" elements="50" coveredelements="0"/>
      </class>
      <line num="22" type="method" name="__construct" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="43" type="method" name="getHTML" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="54" type="method" name="getDescriptors" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="78" type="method" name="onSuccess" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="86" type="method" name="onSubmit" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <metrics loc="101" ncloc="94" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="45" coveredstatements="0" elements="50" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLForm/RecoveryCodesStatusForm.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesStatusForm" namespace="global">
        <metrics complexity="5" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="40" coveredstatements="0" elements="44" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="getHTML" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="26" type="method" name="getDescriptors" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="51" type="method" name="onSuccess" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="63" type="method" name="onSubmit" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <metrics loc="78" ncloc="71" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="40" coveredstatements="0" elements="44" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLForm/RecoveryCodesTrait.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesTrait" namespace="global">
        <metrics complexity="13" methods="8" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="74" coveredstatements="73" elements="82" coveredelements="80"/>
      </class>
      <line num="44" type="method" name="getRecoveryCodesForDisplay" visibility="public" complexity="1" crap="1" count="8"/>
      <line num="45" type="stmt" count="8"/>
      <line num="46" type="stmt" count="8"/>
      <line num="47" type="stmt" count="8"/>
      <line num="48" type="stmt" count="8"/>
      <line num="49" type="stmt" count="8"/>
      <line num="52" type="method" name="setOutputJsConfigVars" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="53" type="stmt" count="6"/>
      <line num="62" type="method" name="tokenFormatterFunction" visibility="private" complexity="1" crap="1" count="12"/>
      <line num="63" type="stmt" count="12"/>
      <line num="66" type="method" name="generateRecoveryCodesContent" visibility="private" complexity="4" crap="4" count="6"/>
      <line num="68" type="stmt" count="6"/>
      <line num="71" type="stmt" count="6"/>
      <line num="72" type="stmt" count="0"/>
      <line num="75" type="stmt" count="6"/>
      <line num="76" type="stmt" count="5"/>
      <line num="77" type="stmt" count="5"/>
      <line num="79" type="stmt" count="5"/>
      <line num="80" type="stmt" count="5"/>
      <line num="82" type="stmt" count="5"/>
      <line num="83" type="stmt" count="5"/>
      <line num="84" type="stmt" count="5"/>
      <line num="85" type="stmt" count="5"/>
      <line num="88" type="stmt" count="6"/>
      <line num="89" type="stmt" count="6"/>
      <line num="90" type="stmt" count="6"/>
      <line num="91" type="stmt" count="6"/>
      <line num="92" type="stmt" count="6"/>
      <line num="93" type="stmt" count="6"/>
      <line num="94" type="stmt" count="6"/>
      <line num="95" type="stmt" count="6"/>
      <line num="96" type="stmt" count="6"/>
      <line num="97" type="stmt" count="6"/>
      <line num="98" type="stmt" count="6"/>
      <line num="99" type="stmt" count="6"/>
      <line num="100" type="stmt" count="6"/>
      <line num="101" type="stmt" count="6"/>
      <line num="102" type="stmt" count="6"/>
      <line num="103" type="stmt" count="6"/>
      <line num="105" type="stmt" count="6"/>
      <line num="108" type="stmt" count="6"/>
      <line num="111" type="method" name="createTextList" visibility="private" complexity="2" crap="2" count="8"/>
      <line num="112" type="stmt" count="8"/>
      <line num="113" type="stmt" count="2"/>
      <line num="116" type="stmt" count="6"/>
      <line num="119" type="method" name="createResourceList" visibility="private" complexity="2" crap="2" count="6"/>
      <line num="120" type="stmt" count="6"/>
      <line num="121" type="stmt" count="6"/>
      <line num="122" type="stmt" count="6"/>
      <line num="124" type="stmt" count="6"/>
      <line num="127" type="method" name="createRecoveryCodesCopyButton" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="128" type="stmt" count="6"/>
      <line num="129" type="stmt" count="6"/>
      <line num="130" type="stmt" count="6"/>
      <line num="131" type="stmt" count="6"/>
      <line num="132" type="stmt" count="6"/>
      <line num="133" type="stmt" count="6"/>
      <line num="134" type="stmt" count="6"/>
      <line num="135" type="stmt" count="6"/>
      <line num="136" type="stmt" count="6"/>
      <line num="139" type="method" name="createRecoveryCodesDownloadLink" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="140" type="stmt" count="6"/>
      <line num="141" type="stmt" count="6"/>
      <line num="142" type="stmt" count="6"/>
      <line num="143" type="stmt" count="6"/>
      <line num="145" type="stmt" count="6"/>
      <line num="146" type="stmt" count="6"/>
      <line num="148" type="stmt" count="6"/>
      <line num="149" type="stmt" count="6"/>
      <line num="150" type="stmt" count="6"/>
      <line num="151" type="stmt" count="6"/>
      <line num="152" type="stmt" count="6"/>
      <line num="153" type="stmt" count="6"/>
      <line num="154" type="stmt" count="6"/>
      <line num="155" type="stmt" count="6"/>
      <line num="156" type="stmt" count="6"/>
      <line num="157" type="stmt" count="6"/>
      <line num="158" type="stmt" count="6"/>
      <line num="159" type="stmt" count="6"/>
      <line num="160" type="stmt" count="6"/>
      <line num="161" type="stmt" count="6"/>
      <line num="162" type="stmt" count="6"/>
      <metrics loc="165" ncloc="138" classes="1" methods="8" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="74" coveredstatements="73" elements="82" coveredelements="80"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLForm/TOTPEnableForm.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLForm\TOTPEnableForm" namespace="global">
        <metrics complexity="11" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="132" coveredstatements="0" elements="139" coveredelements="0"/>
      </class>
      <line num="27" type="method" name="getHTML" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="38" type="method" name="onSuccess" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="42" type="method" name="getDescriptors" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="129" type="method" name="getRecoveryKeysFromSessionOrDefault" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="142" type="method" name="generateAltStep2Content" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="158" type="method" name="getSecretForDisplay" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="162" type="method" name="onSubmit" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="198" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <metrics loc="210" ncloc="192" classes="1" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="132" coveredstatements="0" elements="139" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLForm/WebAuthnAddKeyForm.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLForm\WebAuthnAddKeyForm" namespace="global">
        <metrics complexity="7" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="36" coveredstatements="0" elements="41" coveredelements="0"/>
      </class>
      <line num="22" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="39" type="method" name="getHTML" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="65" type="method" name="onSuccess" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="69" type="method" name="onSubmit" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="74" type="method" name="getDescriptors" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <metrics loc="89" ncloc="85" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="36" coveredstatements="0" elements="41" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/HTMLForm/WebAuthnManageForm.php">
      <class name="MediaWiki\Extension\OATHAuth\HTMLForm\WebAuthnManageForm" namespace="global">
        <metrics complexity="7" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="40" coveredstatements="0" elements="46" coveredelements="0"/>
      </class>
      <line num="24" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="41" type="method" name="getHTML" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="49" type="method" name="getButtons" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="63" type="method" name="onSuccess" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="67" type="method" name="onSubmit" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="72" type="method" name="getDescriptors" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <metrics loc="98" ncloc="88" classes="1" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="40" coveredstatements="0" elements="46" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Hook/HookHandler.php">
      <class name="MediaWiki\Extension\OATHAuth\Hook\HookHandler" namespace="global">
        <metrics complexity="37" methods="8" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="147" coveredstatements="6" elements="155" coveredelements="9"/>
      </class>
      <line num="45" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="53" type="stmt" count="7"/>
      <line num="56" type="method" name="onAuthChangeFormFields" visibility="public" complexity="20" crap="420" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="182" type="method" name="onGetPreferences" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="198" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="238" type="stmt" count="0"/>
      <line num="245" type="method" name="getOathManageModuleData" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="248" type="stmt" count="0"/>
      <line num="252" type="method" name="onUserRequirementsCondition" visibility="public" complexity="2" crap="2" count="3"/>
      <line num="259" type="stmt" count="3"/>
      <line num="260" type="stmt" count="1"/>
      <line num="262" type="stmt" count="2"/>
      <line num="266" type="method" name="onReadPrivateUserRequirementsCondition" visibility="public" complexity="2" crap="2" count="4"/>
      <line num="271" type="stmt" count="4"/>
      <line num="272" type="stmt" count="2"/>
      <line num="277" type="method" name="onBeforePageDisplay" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="280" type="stmt" count="0"/>
      <line num="282" type="stmt" count="0"/>
      <line num="283" type="stmt" count="0"/>
      <line num="287" type="method" name="onUserModifyCreateAccountEmail" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="293" type="stmt" count="0"/>
      <line num="294" type="stmt" count="0"/>
      <line num="297" type="stmt" count="0"/>
      <line num="298" type="stmt" count="0"/>
      <line num="299" type="stmt" count="0"/>
      <line num="300" type="stmt" count="0"/>
      <line num="301" type="stmt" count="0"/>
      <line num="302" type="stmt" count="0"/>
      <line num="304" type="stmt" count="0"/>
      <line num="305" type="stmt" count="0"/>
      <line num="306" type="stmt" count="0"/>
      <line num="307" type="stmt" count="0"/>
      <line num="308" type="stmt" count="0"/>
      <line num="309" type="stmt" count="0"/>
      <line num="310" type="stmt" count="0"/>
      <line num="311" type="stmt" count="0"/>
      <line num="312" type="stmt" count="0"/>
      <line num="313" type="stmt" count="0"/>
      <line num="314" type="stmt" count="0"/>
      <line num="315" type="stmt" count="0"/>
      <line num="316" type="stmt" count="0"/>
      <line num="317" type="stmt" count="0"/>
      <metrics loc="320" ncloc="284" classes="1" methods="8" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="147" coveredstatements="6" elements="155" coveredelements="9"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Hook/RegistrationCallback.php">
      <class name="MediaWiki\Extension\OATHAuth\Hook\RegistrationCallback" namespace="global">
        <metrics complexity="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="0" elements="2" coveredelements="0"/>
      </class>
      <line num="12" type="method" name="onRegistration" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="14" type="stmt" count="0"/>
      <metrics loc="17" ncloc="12" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="0" elements="2" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Hook/TestHandler.php">
      <class name="MediaWiki\Extension\OATHAuth\Hook\TestHandler" namespace="global">
        <metrics complexity="5" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="46" ncloc="40" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Hook/UpdateTables.php">
      <class name="MediaWiki\Extension\OATHAuth\Hook\UpdateTables" namespace="global">
        <metrics complexity="2" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="54" ncloc="44" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Key/AuthKey.php">
      <class name="MediaWiki\Extension\OATHAuth\Key\AuthKey" namespace="global">
        <metrics complexity="5" methods="5" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="4" elements="10" coveredelements="8"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="33"/>
      <line num="18" type="stmt" count="33"/>
      <line num="29" type="method" name="getId" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="30" type="stmt" count="2"/>
      <line num="37" type="method" name="getFriendlyName" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="38" type="stmt" count="4"/>
      <line num="45" type="method" name="getCreatedTimestamp" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="52" type="method" name="supportsPasswordlessLogin" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="53" type="stmt" count="3"/>
      <metrics loc="58" ncloc="40" classes="1" methods="5" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="4" elements="10" coveredelements="8"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Key/EncryptionHelper.php">
      <class name="MediaWiki\Extension\OATHAuth\Key\EncryptionHelper" namespace="global">
        <metrics complexity="13" methods="7" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="29" elements="37" coveredelements="35"/>
      </class>
      <line num="27" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="29"/>
      <line num="30" type="stmt" count="29"/>
      <line num="31" type="stmt" count="29"/>
      <line num="35" type="method" name="isEnabled" visibility="public" complexity="5" crap="5" count="16"/>
      <line num="36" type="stmt" count="16"/>
      <line num="37" type="stmt" count="4"/>
      <line num="40" type="stmt" count="12"/>
      <line num="46" type="stmt" count="12"/>
      <line num="47" type="stmt" count="1"/>
      <line num="50" type="stmt" count="11"/>
      <line num="51" type="stmt" count="1"/>
      <line num="54" type="stmt" count="10"/>
      <line num="60" type="method" name="getKey" visibility="private" complexity="1" crap="1" count="10"/>
      <line num="61" type="stmt" count="10"/>
      <line num="72" type="method" name="decrypt" visibility="public" complexity="2" crap="2" count="8"/>
      <line num="73" type="stmt" count="8"/>
      <line num="74" type="stmt" count="8"/>
      <line num="75" type="stmt" count="8"/>
      <line num="76" type="stmt" count="8"/>
      <line num="77" type="stmt" count="8"/>
      <line num="78" type="stmt" count="7"/>
      <line num="79" type="stmt" count="1"/>
      <line num="81" type="stmt" count="6"/>
      <line num="90" type="method" name="encrypt" visibility="public" complexity="2" crap="2" count="6"/>
      <line num="92" type="stmt" count="6"/>
      <line num="93" type="stmt" count="2"/>
      <line num="96" type="stmt" count="6"/>
      <line num="98" type="stmt" count="6"/>
      <line num="99" type="stmt" count="6"/>
      <line num="100" type="stmt" count="6"/>
      <line num="101" type="stmt" count="6"/>
      <line num="102" type="stmt" count="6"/>
      <line num="108" type="method" name="generateNonce" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="109" type="stmt" count="5"/>
      <line num="110" type="stmt" count="5"/>
      <line num="116" type="method" name="setEncryptionKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <metrics loc="120" ncloc="83" classes="1" methods="7" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="29" elements="37" coveredelements="35"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Key/RecoveryCode.php">
      <class name="MediaWiki\Extension\OATHAuth\Key\RecoveryCode" namespace="global">
        <metrics complexity="22" methods="14" coveredmethods="13" conditionals="0" coveredconditionals="0" statements="35" coveredstatements="34" elements="49" coveredelements="47"/>
      </class>
      <line num="33" type="method" name="newFromPlaintext" visibility="public" complexity="1" crap="1" count="14"/>
      <line num="34" type="stmt" count="14"/>
      <line num="43" type="method" name="newFromEncrypted" visibility="public" complexity="2" crap="2" count="7"/>
      <line num="44" type="stmt" count="7"/>
      <line num="45" type="stmt" count="7"/>
      <line num="46" type="stmt" count="1"/>
      <line num="49" type="stmt" count="6"/>
      <line num="50" type="stmt" count="5"/>
      <line num="57" type="method" name="newRandom" visibility="public" complexity="1" crap="1" count="13"/>
      <line num="58" type="stmt" count="13"/>
      <line num="59" type="stmt" count="13"/>
      <line num="73" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="29"/>
      <line num="80" type="stmt" count="29"/>
      <line num="83" type="method" name="getCode" visibility="public" complexity="1" crap="1" count="24"/>
      <line num="84" type="stmt" count="24"/>
      <line num="88" type="method" name="getData" visibility="public" complexity="1" crap="1" count="9"/>
      <line num="89" type="stmt" count="9"/>
      <line num="93" type="method" name="getNonce" visibility="public" complexity="1" crap="1" count="8"/>
      <line num="94" type="stmt" count="8"/>
      <line num="101" type="method" name="encryptCode" visibility="public" complexity="4" crap="4" count="9"/>
      <line num="102" type="stmt" count="9"/>
      <line num="103" type="stmt" count="6"/>
      <line num="104" type="stmt" count="1"/>
      <line num="107" type="stmt" count="5"/>
      <line num="108" type="stmt" count="5"/>
      <line num="109" type="stmt" count="5"/>
      <line num="111" type="stmt" count="8"/>
      <line num="119" type="method" name="test" visibility="public" complexity="2" crap="2" count="11"/>
      <line num="120" type="stmt" count="11"/>
      <line num="121" type="stmt" count="1"/>
      <line num="123" type="stmt" count="10"/>
      <line num="127" type="method" name="getExpiryTimestamp" visibility="public" complexity="3" crap="3" count="25"/>
      <line num="128" type="stmt" count="25"/>
      <line num="129" type="stmt" count="21"/>
      <line num="131" type="stmt" count="7"/>
      <line num="132" type="stmt" count="7"/>
      <line num="133" type="stmt" count="1"/>
      <line num="135" type="stmt" count="6"/>
      <line num="139" type="method" name="isPermanent" visibility="public" complexity="1" crap="1" count="9"/>
      <line num="140" type="stmt" count="9"/>
      <line num="144" type="method" name="isExpired" visibility="public" complexity="2" crap="2" count="25"/>
      <line num="145" type="stmt" count="25"/>
      <line num="146" type="stmt" count="25"/>
      <line num="147" type="stmt" count="22"/>
      <line num="149" type="stmt" count="6"/>
      <line num="152" type="method" name="isInitial" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="156" type="method" name="getEncryptionHelper" visibility="private" complexity="1" crap="1" count="24"/>
      <line num="157" type="stmt" count="24"/>
      <metrics loc="160" ncloc="108" classes="1" methods="14" coveredmethods="13" conditionals="0" coveredconditionals="0" statements="35" coveredstatements="34" elements="49" coveredelements="47"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Key/RecoveryCodeKeys.php">
      <class name="MediaWiki\Extension\OATHAuth\Key\RecoveryCodeKeys" namespace="global">
        <metrics complexity="44" methods="16" coveredmethods="15" conditionals="0" coveredconditionals="0" statements="115" coveredstatements="114" elements="131" coveredelements="129"/>
      </class>
      <line num="39" type="method" name="newFromArray" visibility="public" complexity="9" crap="9" count="16"/>
      <line num="40" type="stmt" count="16"/>
      <line num="41" type="stmt" count="1"/>
      <line num="43" type="stmt" count="16"/>
      <line num="44" type="stmt" count="16"/>
      <line num="45" type="stmt" count="13"/>
      <line num="46" type="stmt" count="4"/>
      <line num="48" type="stmt" count="9"/>
      <line num="49" type="stmt" count="9"/>
      <line num="53" type="stmt" count="13"/>
      <line num="55" type="stmt" count="13"/>
      <line num="57" type="stmt" count="7"/>
      <line num="59" type="stmt" count="6"/>
      <line num="63" type="stmt" count="14"/>
      <line num="64" type="stmt" count="14"/>
      <line num="65" type="stmt" count="14"/>
      <line num="66" type="stmt" count="14"/>
      <line num="67" type="stmt" count="14"/>
      <line num="68" type="stmt" count="14"/>
      <line num="74" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="22"/>
      <line num="80" type="stmt" count="22"/>
      <line num="81" type="stmt" count="22"/>
      <line num="82" type="stmt" count="22"/>
      <line num="83" type="stmt" count="22"/>
      <line num="84" type="stmt" count="22"/>
      <line num="85" type="stmt" count="22"/>
      <line num="86" type="stmt" count="22"/>
      <line num="93" type="method" name="getRecoveryCodes" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="103" type="method" name="getRecoveryCodeKeys" visibility="public" complexity="1" crap="1" count="17"/>
      <line num="104" type="stmt" count="17"/>
      <line num="107" type="method" name="verify" visibility="public" complexity="4" crap="4" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="109" type="stmt" count="1"/>
      <line num="112" type="stmt" count="1"/>
      <line num="113" type="stmt" count="1"/>
      <line num="114" type="stmt" count="1"/>
      <line num="116" type="stmt" count="1"/>
      <line num="117" type="stmt" count="1"/>
      <line num="118" type="stmt" count="1"/>
      <line num="121" type="stmt" count="1"/>
      <line num="123" type="stmt" count="1"/>
      <line num="124" type="stmt" count="1"/>
      <line num="125" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="129" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="135" type="method" name="removeRecoveryCode" visibility="public" complexity="5" crap="5" count="4"/>
      <line num="136" type="stmt" count="4"/>
      <line num="138" type="stmt" count="4"/>
      <line num="139" type="stmt" count="4"/>
      <line num="140" type="stmt" count="4"/>
      <line num="141" type="stmt" count="4"/>
      <line num="145" type="stmt" count="4"/>
      <line num="146" type="stmt" count="4"/>
      <line num="152" type="stmt" count="3"/>
      <line num="153" type="stmt" count="3"/>
      <line num="154" type="stmt" count="3"/>
      <line num="155" type="stmt" count="1"/>
      <line num="157" type="stmt" count="3"/>
      <line num="159" type="stmt" count="3"/>
      <line num="160" type="stmt" count="3"/>
      <line num="161" type="stmt" count="3"/>
      <line num="162" type="stmt" count="3"/>
      <line num="163" type="stmt" count="3"/>
      <line num="164" type="stmt" count="3"/>
      <line num="165" type="stmt" count="3"/>
      <line num="172" type="method" name="removeTemporaryCodes" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="173" type="stmt" count="1"/>
      <line num="180" type="method" name="getNumberOfCodesToGenerate" visibility="private" complexity="1" crap="1" count="9"/>
      <line num="181" type="stmt" count="9"/>
      <line num="182" type="stmt" count="9"/>
      <line num="188" type="method" name="getMaxNumberOfCodes" visibility="private" complexity="1" crap="1" count="13"/>
      <line num="189" type="stmt" count="13"/>
      <line num="196" type="method" name="regenerateRecoveryCodeKeys" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="197" type="stmt" count="6"/>
      <line num="198" type="stmt" count="6"/>
      <line num="211" type="method" name="generateAdditionalRecoveryCodeKeys" visibility="public" complexity="4" crap="4" count="13"/>
      <line num="216" type="stmt" count="13"/>
      <line num="217" type="stmt" count="13"/>
      <line num="218" type="stmt" count="2"/>
      <line num="219" type="stmt" count="1"/>
      <line num="221" type="stmt" count="1"/>
      <line num="222" type="stmt" count="1"/>
      <line num="223" type="stmt" count="1"/>
      <line num="227" type="stmt" count="12"/>
      <line num="228" type="stmt" count="12"/>
      <line num="229" type="stmt" count="12"/>
      <line num="231" type="stmt" count="12"/>
      <line num="232" type="stmt" count="12"/>
      <line num="236" type="method" name="getModule" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="237" type="stmt" count="1"/>
      <line num="240" type="method" name="getLogger" visibility="private" complexity="1" crap="1" count="4"/>
      <line num="241" type="stmt" count="4"/>
      <line num="245" type="method" name="jsonSerialize" visibility="public" complexity="9" crap="9" count="8"/>
      <line num="247" type="stmt" count="8"/>
      <line num="249" type="stmt" count="8"/>
      <line num="250" type="stmt" count="8"/>
      <line num="252" type="stmt" count="2"/>
      <line num="253" type="stmt" count="2"/>
      <line num="254" type="stmt" count="2"/>
      <line num="255" type="stmt" count="1"/>
      <line num="257" type="stmt" count="1"/>
      <line num="260" type="stmt" count="2"/>
      <line num="261" type="stmt" count="2"/>
      <line num="262" type="stmt" count="2"/>
      <line num="263" type="stmt" count="2"/>
      <line num="264" type="stmt" count="2"/>
      <line num="268" type="stmt" count="6"/>
      <line num="269" type="stmt" count="0"/>
      <line num="271" type="stmt" count="6"/>
      <line num="273" type="stmt" count="6"/>
      <line num="274" type="stmt" count="6"/>
      <line num="275" type="stmt" count="6"/>
      <line num="276" type="stmt" count="2"/>
      <line num="278" type="stmt" count="4"/>
      <line num="282" type="stmt" count="6"/>
      <line num="283" type="stmt" count="6"/>
      <line num="284" type="stmt" count="6"/>
      <line num="285" type="stmt" count="6"/>
      <line num="286" type="stmt" count="6"/>
      <line num="287" type="stmt" count="6"/>
      <line num="290" type="method" name="normaliseRecoveryCode" visibility="private" complexity="1" crap="1" count="6"/>
      <line num="291" type="stmt" count="6"/>
      <line num="301" type="method" name="isValidRecoveryCode" visibility="public" complexity="3" crap="3" count="1"/>
      <line num="302" type="stmt" count="1"/>
      <line num="303" type="stmt" count="1"/>
      <line num="304" type="stmt" count="1"/>
      <line num="305" type="stmt" count="1"/>
      <line num="308" type="stmt" count="1"/>
      <metrics loc="311" ncloc="241" classes="1" methods="16" coveredmethods="15" conditionals="0" coveredconditionals="0" statements="115" coveredstatements="114" elements="131" coveredelements="129"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Key/TOTPKey.php">
      <class name="MediaWiki\Extension\OATHAuth\Key\TOTPKey" namespace="global">
        <metrics complexity="25" methods="10" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="92" coveredstatements="80" elements="102" coveredelements="89"/>
      </class>
      <line num="40" type="method" name="newFromRandom" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="41" type="stmt" count="7"/>
      <line num="42" type="stmt" count="7"/>
      <line num="43" type="stmt" count="7"/>
      <line num="44" type="stmt" count="7"/>
      <line num="47" type="stmt" count="7"/>
      <line num="48" type="stmt" count="7"/>
      <line num="54" type="method" name="removeBase32Padding" visibility="private" complexity="1" crap="1" count="7"/>
      <line num="55" type="stmt" count="7"/>
      <line num="63" type="method" name="newFromArray" visibility="public" complexity="8" crap="8" count="4"/>
      <line num="64" type="stmt" count="4"/>
      <line num="65" type="stmt" count="1"/>
      <line num="69" type="stmt" count="3"/>
      <line num="71" type="stmt" count="3"/>
      <line num="73" type="stmt" count="2"/>
      <line num="74" type="stmt" count="2"/>
      <line num="81" type="stmt" count="2"/>
      <line num="82" type="stmt" count="2"/>
      <line num="84" type="stmt" count="1"/>
      <line num="85" type="stmt" count="1"/>
      <line num="88" type="stmt" count="2"/>
      <line num="89" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="94" type="stmt" count="2"/>
      <line num="95" type="stmt" count="2"/>
      <line num="98" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="106" type="stmt" count="7"/>
      <line num="108" type="stmt" count="7"/>
      <line num="109" type="stmt" count="7"/>
      <line num="110" type="stmt" count="7"/>
      <line num="111" type="stmt" count="7"/>
      <line num="112" type="stmt" count="7"/>
      <line num="113" type="stmt" count="7"/>
      <line num="114" type="stmt" count="7"/>
      <line num="115" type="stmt" count="7"/>
      <line num="118" type="method" name="getSecret" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="119" type="stmt" count="6"/>
      <line num="122" type="method" name="getEncryptedSecretAndNonce" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="123" type="stmt" count="3"/>
      <line num="124" type="stmt" count="3"/>
      <line num="125" type="stmt" count="3"/>
      <line num="126" type="stmt" count="3"/>
      <line num="129" type="method" name="verify" visibility="public" complexity="6" crap="7.90" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="134" type="stmt" count="1"/>
      <line num="141" type="stmt" count="1"/>
      <line num="142" type="stmt" count="1"/>
      <line num="144" type="stmt" count="1"/>
      <line num="151" type="stmt" count="1"/>
      <line num="152" type="stmt" count="1"/>
      <line num="154" type="stmt" count="1"/>
      <line num="155" type="stmt" count="1"/>
      <line num="156" type="stmt" count="1"/>
      <line num="157" type="stmt" count="1"/>
      <line num="158" type="stmt" count="1"/>
      <line num="159" type="stmt" count="1"/>
      <line num="160" type="stmt" count="1"/>
      <line num="163" type="stmt" count="1"/>
      <line num="165" type="stmt" count="1"/>
      <line num="169" type="stmt" count="1"/>
      <line num="170" type="stmt" count="1"/>
      <line num="171" type="stmt" count="1"/>
      <line num="174" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="179" type="stmt" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="191" type="stmt" count="1"/>
      <line num="195" type="method" name="getModule" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="196" type="stmt" count="1"/>
      <line num="199" type="method" name="jsonSerialize" visibility="public" complexity="4" crap="4" count="4"/>
      <line num="200" type="stmt" count="4"/>
      <line num="201" type="stmt" count="4"/>
      <line num="202" type="stmt" count="3"/>
      <line num="203" type="stmt" count="3"/>
      <line num="204" type="stmt" count="3"/>
      <line num="205" type="stmt" count="3"/>
      <line num="206" type="stmt" count="3"/>
      <line num="209" type="stmt" count="1"/>
      <line num="210" type="stmt" count="1"/>
      <line num="211" type="stmt" count="1"/>
      <line num="212" type="stmt" count="1"/>
      <line num="215" type="stmt" count="3"/>
      <line num="217" type="stmt" count="1"/>
      <line num="218" type="stmt" count="1"/>
      <line num="219" type="stmt" count="1"/>
      <line num="220" type="stmt" count="1"/>
      <line num="223" type="stmt" count="4"/>
      <line num="224" type="stmt" count="4"/>
      <line num="225" type="stmt" count="4"/>
      <line num="228" type="method" name="getEncryptionHelper" visibility="private" complexity="1" crap="1" count="5"/>
      <line num="229" type="stmt" count="5"/>
      <metrics loc="232" ncloc="197" classes="1" methods="10" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="92" coveredstatements="80" elements="102" coveredelements="89"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Key/WebAuthnKey.php">
      <class name="MediaWiki\Extension\OATHAuth\Key\WebAuthnKey" namespace="global">
        <metrics complexity="61" methods="31" coveredmethods="11" conditionals="0" coveredconditionals="0" statements="259" coveredstatements="82" elements="290" coveredelements="93"/>
      </class>
      <line num="113" type="method" name="newKey" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="114" type="stmt" count="1"/>
      <line num="115" type="stmt" count="1"/>
      <line num="116" type="stmt" count="1"/>
      <line num="117" type="stmt" count="1"/>
      <line num="118" type="stmt" count="1"/>
      <line num="119" type="stmt" count="1"/>
      <line num="120" type="stmt" count="1"/>
      <line num="128" type="method" name="newFromData" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="129" type="stmt" count="4"/>
      <line num="130" type="stmt" count="4"/>
      <line num="131" type="stmt" count="4"/>
      <line num="132" type="stmt" count="4"/>
      <line num="133" type="stmt" count="4"/>
      <line num="134" type="stmt" count="4"/>
      <line num="135" type="stmt" count="4"/>
      <line num="136" type="stmt" count="4"/>
      <line num="137" type="stmt" count="4"/>
      <line num="140" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="147" type="stmt" count="5"/>
      <line num="150" type="stmt" count="5"/>
      <line num="151" type="stmt" count="5"/>
      <line num="154" type="method" name="jsonSerialize" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="155" type="stmt" count="1"/>
      <line num="156" type="stmt" count="1"/>
      <line num="157" type="stmt" count="1"/>
      <line num="158" type="stmt" count="1"/>
      <line num="159" type="stmt" count="1"/>
      <line num="160" type="stmt" count="1"/>
      <line num="161" type="stmt" count="1"/>
      <line num="162" type="stmt" count="1"/>
      <line num="163" type="stmt" count="1"/>
      <line num="164" type="stmt" count="1"/>
      <line num="165" type="stmt" count="1"/>
      <line num="166" type="stmt" count="1"/>
      <line num="167" type="stmt" count="1"/>
      <line num="168" type="stmt" count="1"/>
      <line num="169" type="stmt" count="1"/>
      <line num="170" type="stmt" count="1"/>
      <line num="176" type="method" name="setDataFromEncodedDBData" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="177" type="stmt" count="4"/>
      <line num="178" type="stmt" count="4"/>
      <line num="179" type="stmt" count="4"/>
      <line num="180" type="stmt" count="4"/>
      <line num="181" type="stmt" count="4"/>
      <line num="182" type="stmt" count="4"/>
      <line num="183" type="stmt" count="4"/>
      <line num="184" type="stmt" count="4"/>
      <line num="185" type="stmt" count="4"/>
      <line num="188" type="method" name="setPasswordlessSupport" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="189" type="stmt" count="1"/>
      <line num="198" type="method" name="wasUserVerified" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="206" type="method" name="setFriendlyName" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="211" type="method" name="getAttestedCredentialData" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="215" type="method" name="getUserHandle" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="219" type="method" name="getSignCounter" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="223" type="method" name="setSignCounter" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="227" type="method" name="getAttestationType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="231" type="method" name="getTrustPath" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="235" type="method" name="verify" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="238" type="stmt" count="0"/>
      <line num="239" type="stmt" count="0"/>
      <line num="240" type="stmt" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="248" type="stmt" count="0"/>
      <line num="251" type="method" name="verifyRegistration" visibility="public" complexity="3" crap="4.94" count="1"/>
      <line num="257" type="stmt" count="1"/>
      <line num="258" type="stmt" count="0"/>
      <line num="259" type="stmt" count="0"/>
      <line num="260" type="stmt" count="0"/>
      <line num="261" type="stmt" count="0"/>
      <line num="264" type="stmt" count="1"/>
      <line num="265" type="stmt" count="1"/>
      <line num="266" type="stmt" count="0"/>
      <line num="267" type="stmt" count="0"/>
      <line num="269" type="stmt" count="1"/>
      <line num="275" type="method" name="getType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="276" type="stmt" count="0"/>
      <line num="282" type="method" name="getTransports" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="283" type="stmt" count="1"/>
      <line num="286" type="method" name="checkFriendlyName" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="287" type="stmt" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="292" type="stmt" count="0"/>
      <line num="293" type="stmt" count="0"/>
      <line num="295" type="stmt" count="0"/>
      <line num="298" type="stmt" count="0"/>
      <line num="299" type="stmt" count="0"/>
      <line num="300" type="stmt" count="0"/>
      <line num="301" type="stmt" count="0"/>
      <line num="302" type="stmt" count="0"/>
      <line num="306" type="method" name="registrationCeremony" visibility="private" complexity="5" crap="14.46" count="1"/>
      <line num="313" type="stmt" count="1"/>
      <line num="315" type="stmt" count="1"/>
      <line num="316" type="stmt" count="1"/>
      <line num="317" type="stmt" count="1"/>
      <line num="318" type="stmt" count="1"/>
      <line num="319" type="stmt" count="1"/>
      <line num="320" type="stmt" count="1"/>
      <line num="322" type="stmt" count="1"/>
      <line num="324" type="stmt" count="0"/>
      <line num="325" type="stmt" count="0"/>
      <line num="328" type="stmt" count="0"/>
      <line num="329" type="stmt" count="0"/>
      <line num="330" type="stmt" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="333" type="stmt" count="0"/>
      <line num="334" type="stmt" count="0"/>
      <line num="335" type="stmt" count="0"/>
      <line num="337" type="stmt" count="0"/>
      <line num="339" type="stmt" count="0"/>
      <line num="340" type="stmt" count="0"/>
      <line num="341" type="stmt" count="0"/>
      <line num="342" type="stmt" count="0"/>
      <line num="343" type="stmt" count="0"/>
      <line num="344" type="stmt" count="1"/>
      <line num="345" type="stmt" count="1"/>
      <line num="346" type="stmt" count="1"/>
      <line num="347" type="stmt" count="1"/>
      <line num="348" type="stmt" count="1"/>
      <line num="351" type="stmt" count="0"/>
      <line num="352" type="stmt" count="0"/>
      <line num="353" type="stmt" count="0"/>
      <line num="354" type="stmt" count="0"/>
      <line num="355" type="stmt" count="0"/>
      <line num="356" type="stmt" count="0"/>
      <line num="357" type="stmt" count="0"/>
      <line num="359" type="stmt" count="0"/>
      <line num="360" type="stmt" count="0"/>
      <line num="361" type="stmt" count="0"/>
      <line num="363" type="stmt" count="0"/>
      <line num="365" type="stmt" count="0"/>
      <line num="366" type="stmt" count="0"/>
      <line num="367" type="stmt" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="370" type="stmt" count="0"/>
      <line num="371" type="stmt" count="0"/>
      <line num="372" type="stmt" count="0"/>
      <line num="373" type="stmt" count="0"/>
      <line num="376" type="method" name="authenticationCeremony" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="382" type="stmt" count="0"/>
      <line num="383" type="stmt" count="0"/>
      <line num="384" type="stmt" count="0"/>
      <line num="385" type="stmt" count="0"/>
      <line num="386" type="stmt" count="0"/>
      <line num="387" type="stmt" count="0"/>
      <line num="389" type="stmt" count="0"/>
      <line num="390" type="stmt" count="0"/>
      <line num="391" type="stmt" count="0"/>
      <line num="394" type="stmt" count="0"/>
      <line num="395" type="stmt" count="0"/>
      <line num="396" type="stmt" count="0"/>
      <line num="399" type="stmt" count="0"/>
      <line num="400" type="stmt" count="0"/>
      <line num="401" type="stmt" count="0"/>
      <line num="402" type="stmt" count="0"/>
      <line num="403" type="stmt" count="0"/>
      <line num="406" type="stmt" count="0"/>
      <line num="407" type="stmt" count="0"/>
      <line num="408" type="stmt" count="0"/>
      <line num="409" type="stmt" count="0"/>
      <line num="411" type="stmt" count="0"/>
      <line num="412" type="stmt" count="0"/>
      <line num="413" type="stmt" count="0"/>
      <line num="414" type="stmt" count="0"/>
      <line num="416" type="stmt" count="0"/>
      <line num="417" type="stmt" count="0"/>
      <line num="418" type="stmt" count="0"/>
      <line num="419" type="stmt" count="0"/>
      <line num="422" type="stmt" count="0"/>
      <line num="423" type="stmt" count="0"/>
      <line num="424" type="stmt" count="0"/>
      <line num="425" type="stmt" count="0"/>
      <line num="426" type="stmt" count="0"/>
      <line num="427" type="stmt" count="0"/>
      <line num="428" type="stmt" count="0"/>
      <line num="430" type="stmt" count="0"/>
      <line num="431" type="stmt" count="0"/>
      <line num="433" type="stmt" count="0"/>
      <line num="434" type="stmt" count="0"/>
      <line num="435" type="stmt" count="0"/>
      <line num="436" type="stmt" count="0"/>
      <line num="437" type="stmt" count="0"/>
      <line num="438" type="stmt" count="0"/>
      <line num="439" type="stmt" count="0"/>
      <line num="440" type="stmt" count="0"/>
      <line num="444" type="method" name="getHost" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="445" type="stmt" count="0"/>
      <line num="448" type="method" name="findOneByCredentialId" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="452" type="stmt" count="0"/>
      <line num="454" type="stmt" count="0"/>
      <line num="455" type="stmt" count="0"/>
      <line num="458" type="stmt" count="0"/>
      <line num="459" type="stmt" count="0"/>
      <line num="460" type="stmt" count="0"/>
      <line num="461" type="stmt" count="0"/>
      <line num="462" type="stmt" count="0"/>
      <line num="463" type="stmt" count="0"/>
      <line num="464" type="stmt" count="0"/>
      <line num="465" type="stmt" count="0"/>
      <line num="466" type="stmt" count="0"/>
      <line num="467" type="stmt" count="0"/>
      <line num="468" type="stmt" count="0"/>
      <line num="471" type="method" name="findKeyByCredentialId" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="472" type="stmt" count="0"/>
      <line num="473" type="stmt" count="0"/>
      <line num="474" type="stmt" count="0"/>
      <line num="477" type="stmt" count="0"/>
      <line num="480" type="stmt" count="0"/>
      <line num="483" type="method" name="getAttestationSupportManager" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="484" type="stmt" count="1"/>
      <line num="487" type="stmt" count="1"/>
      <line num="488" type="stmt" count="1"/>
      <line num="489" type="stmt" count="1"/>
      <line num="490" type="stmt" count="1"/>
      <line num="491" type="stmt" count="1"/>
      <line num="492" type="stmt" count="1"/>
      <line num="498" type="method" name="getCoseKey" visibility="public" complexity="3" crap="3.10" count="1"/>
      <line num="499" type="stmt" count="1"/>
      <line num="500" type="stmt" count="1"/>
      <line num="501" type="stmt" count="1"/>
      <line num="503" type="stmt" count="1"/>
      <line num="504" type="stmt" count="0"/>
      <line num="507" type="stmt" count="1"/>
      <line num="509" type="stmt" count="1"/>
      <line num="510" type="stmt" count="0"/>
      <line num="513" type="stmt" count="1"/>
      <line num="516" type="method" name="getPublicKeyAlgorithm" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="517" type="stmt" count="2"/>
      <line num="520" type="method" name="isDeprecatedPublicKeyAlgorithm" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="521" type="stmt" count="2"/>
      <line num="531" type="method" name="checkIfDeprecated" visibility="private" complexity="11" crap="132" count="0"/>
      <line num="532" type="stmt" count="0"/>
      <line num="533" type="stmt" count="0"/>
      <line num="536" type="stmt" count="0"/>
      <line num="537" type="stmt" count="0"/>
      <line num="538" type="stmt" count="0"/>
      <line num="541" type="stmt" count="0"/>
      <line num="542" type="stmt" count="0"/>
      <line num="543" type="stmt" count="0"/>
      <line num="546" type="stmt" count="0"/>
      <line num="547" type="stmt" count="0"/>
      <line num="549" type="stmt" count="0"/>
      <line num="550" type="stmt" count="0"/>
      <line num="552" type="stmt" count="0"/>
      <line num="553" type="stmt" count="0"/>
      <line num="554" type="stmt" count="0"/>
      <line num="555" type="stmt" count="0"/>
      <line num="556" type="stmt" count="0"/>
      <line num="557" type="stmt" count="0"/>
      <line num="558" type="stmt" count="0"/>
      <line num="559" type="stmt" count="0"/>
      <line num="560" type="stmt" count="0"/>
      <line num="561" type="stmt" count="0"/>
      <line num="562" type="stmt" count="0"/>
      <line num="566" type="stmt" count="0"/>
      <line num="567" type="stmt" count="0"/>
      <line num="568" type="stmt" count="0"/>
      <line num="569" type="stmt" count="0"/>
      <line num="570" type="stmt" count="0"/>
      <line num="571" type="stmt" count="0"/>
      <line num="572" type="stmt" count="0"/>
      <line num="573" type="stmt" count="0"/>
      <line num="574" type="stmt" count="0"/>
      <line num="577" type="stmt" count="0"/>
      <line num="578" type="stmt" count="0"/>
      <line num="584" type="method" name="getRsaKeyLength" visibility="public" complexity="3" crap="3" count="1"/>
      <line num="585" type="stmt" count="1"/>
      <line num="586" type="stmt" count="1"/>
      <line num="589" type="stmt" count="1"/>
      <line num="593" type="method" name="getModule" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="594" type="stmt" count="0"/>
      <metrics loc="597" ncloc="525" classes="1" methods="31" coveredmethods="11" conditionals="0" coveredconditionals="0" statements="259" coveredstatements="82" elements="290" coveredelements="93"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Module/IModule.php">
      <metrics loc="85" ncloc="46" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Module/RecoveryCodes.php">
      <class name="MediaWiki\Extension\OATHAuth\Module\RecoveryCodes" namespace="global">
        <metrics complexity="23" methods="14" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="53" coveredstatements="16" elements="67" coveredelements="17"/>
      </class>
      <line num="35" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="40" type="stmt" count="2"/>
      <line num="43" type="method" name="getName" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="48" type="method" name="getDisplayName" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="53" type="method" name="newKey" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="60" type="method" name="getSecondaryAuthProvider" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="68" type="method" name="verify" visibility="public" complexity="5" crap="5.04" count="2"/>
      <line num="69" type="stmt" count="2"/>
      <line num="70" type="stmt" count="0"/>
      <line num="73" type="stmt" count="2"/>
      <line num="75" type="stmt" count="2"/>
      <line num="76" type="stmt" count="0"/>
      <line num="80" type="stmt" count="2"/>
      <line num="83" type="stmt" count="2"/>
      <line num="84" type="stmt" count="2"/>
      <line num="88" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="94" type="stmt" count="2"/>
      <line num="95" type="stmt" count="2"/>
      <line num="99" type="stmt" count="2"/>
      <line num="101" type="stmt" count="2"/>
      <line num="111" type="method" name="ensureExistence" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="144" type="method" name="isEnabled" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="149" type="method" name="getManageForm" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="163" type="method" name="getDescriptionMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="168" type="method" name="getDisableWarningMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="172" type="method" name="getAddKeyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="176" type="method" name="getLoginSwitchButtonMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="181" type="method" name="isSpecial" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <metrics loc="185" ncloc="156" classes="1" methods="14" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="53" coveredstatements="16" elements="67" coveredelements="17"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Module/TOTP.php">
      <class name="MediaWiki\Extension\OATHAuth\Module\TOTP" namespace="global">
        <metrics complexity="21" methods="14" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="19" elements="53" coveredelements="21"/>
      </class>
      <line num="27" type="method" name="getTOTPKeys" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="29" type="stmt" count="4"/>
      <line num="32" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="37" type="stmt" count="4"/>
      <line num="40" type="method" name="getName" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="44" type="method" name="getDisplayName" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="48" type="method" name="newKey" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="56" type="method" name="getSecondaryAuthProvider" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="65" type="method" name="verify" visibility="public" complexity="6" crap="6.01" count="4"/>
      <line num="66" type="stmt" count="4"/>
      <line num="67" type="stmt" count="0"/>
      <line num="70" type="stmt" count="4"/>
      <line num="71" type="stmt" count="4"/>
      <line num="72" type="stmt" count="2"/>
      <line num="76" type="stmt" count="3"/>
      <line num="77" type="stmt" count="1"/>
      <line num="85" type="stmt" count="2"/>
      <line num="86" type="stmt" count="2"/>
      <line num="87" type="stmt" count="2"/>
      <line num="88" type="stmt" count="1"/>
      <line num="90" type="stmt" count="1"/>
      <line num="91" type="stmt" count="1"/>
      <line num="92" type="stmt" count="1"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="98" type="stmt" count="1"/>
      <line num="104" type="method" name="isEnabled" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="108" type="method" name="getManageForm" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="122" type="method" name="getDescriptionMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="127" type="method" name="getDisableWarningMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="132" type="method" name="getAddKeyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="137" type="method" name="getLoginSwitchButtonMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="142" type="method" name="isSpecial" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <metrics loc="146" ncloc="127" classes="1" methods="14" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="19" elements="53" coveredelements="21"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Module/WebAuthn.php">
      <class name="MediaWiki\Extension\OATHAuth\Module\WebAuthn" namespace="global">
        <metrics complexity="22" methods="14" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="45" coveredelements="0"/>
      </class>
      <line num="28" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="36" type="method" name="getWebAuthnKeys" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="42" type="method" name="getName" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="46" type="method" name="getDisplayName" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="50" type="method" name="newKey" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="57" type="method" name="getSecondaryAuthProvider" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="65" type="method" name="isEnabled" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="72" type="method" name="verify" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="91" type="method" name="getManageForm" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="111" type="method" name="getDescriptionMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="116" type="method" name="getDisableWarningMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="121" type="method" name="getAddKeyMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="128" type="method" name="isSpecial" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="133" type="method" name="getLoginSwitchButtonMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <metrics loc="137" ncloc="112" classes="1" methods="14" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="45" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Notifications/DisablePresentationModel.php">
      <class name="MediaWiki\Extension\OATHAuth\Notifications\DisablePresentationModel" namespace="global">
        <metrics complexity="9" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="0" elements="35" coveredelements="0"/>
      </class>
      <line num="21" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="26" type="method" name="getHeaderMessageKey" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="33" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="41" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="56" type="method" name="getBodyMessage" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <metrics loc="76" ncloc="62" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="0" elements="35" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Notifications/EnablePresentationModel.php">
      <class name="MediaWiki\Extension\OATHAuth\Notifications\EnablePresentationModel" namespace="global">
        <metrics complexity="5" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="19" coveredelements="0"/>
      </class>
      <line num="21" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="26" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="34" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="49" type="method" name="getBodyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <metrics loc="53" ncloc="40" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="19" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Notifications/Manager.php">
      <class name="MediaWiki\Extension\OATHAuth\Notifications\Manager" namespace="global">
        <metrics complexity="11" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="45" coveredstatements="45" elements="51" coveredelements="51"/>
      </class>
      <line num="26" type="method" name="isEnabled" visibility="private" complexity="1" crap="1" count="16"/>
      <line num="27" type="stmt" count="16"/>
      <line num="36" type="method" name="notifyDisabled" visibility="public" complexity="2" crap="2" count="3"/>
      <line num="37" type="stmt" count="3"/>
      <line num="42" type="stmt" count="3"/>
      <line num="44" type="stmt" count="3"/>
      <line num="45" type="stmt" count="3"/>
      <line num="46" type="stmt" count="3"/>
      <line num="47" type="stmt" count="3"/>
      <line num="48" type="stmt" count="3"/>
      <line num="49" type="stmt" count="3"/>
      <line num="50" type="stmt" count="3"/>
      <line num="51" type="stmt" count="3"/>
      <line num="57" type="method" name="notifyEnabled" visibility="public" complexity="2" crap="2" count="11"/>
      <line num="58" type="stmt" count="11"/>
      <line num="63" type="stmt" count="11"/>
      <line num="65" type="stmt" count="11"/>
      <line num="66" type="stmt" count="11"/>
      <line num="67" type="stmt" count="11"/>
      <line num="68" type="stmt" count="11"/>
      <line num="69" type="stmt" count="11"/>
      <line num="70" type="stmt" count="11"/>
      <line num="71" type="stmt" count="11"/>
      <line num="77" type="method" name="notifyRecoveryTokensRemaining" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="80" type="stmt" count="2"/>
      <line num="85" type="stmt" count="2"/>
      <line num="87" type="stmt" count="2"/>
      <line num="88" type="stmt" count="2"/>
      <line num="89" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="99" type="method" name="notifyTemporaryRecoveryTokensGeneratedForUser" visibility="public" complexity="2" crap="2" count="6"/>
      <line num="103" type="stmt" count="6"/>
      <line num="108" type="stmt" count="6"/>
      <line num="110" type="stmt" count="6"/>
      <line num="111" type="stmt" count="6"/>
      <line num="112" type="stmt" count="6"/>
      <line num="113" type="stmt" count="6"/>
      <line num="114" type="stmt" count="6"/>
      <line num="120" type="method" name="notify2FARequiredForUser" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="124" type="stmt" count="1"/>
      <line num="130" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="133" type="stmt" count="1"/>
      <line num="134" type="stmt" count="1"/>
      <line num="135" type="stmt" count="1"/>
      <line num="136" type="stmt" count="1"/>
      <line num="137" type="stmt" count="1"/>
      <line num="138" type="stmt" count="1"/>
      <metrics loc="141" ncloc="97" classes="1" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="45" coveredstatements="45" elements="51" coveredelements="51"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Notifications/RecoveryCodeCountPresentationModel.php">
      <class name="MediaWiki\Extension\OATHAuth\Notifications\RecoveryCodeCountPresentationModel" namespace="global">
        <metrics complexity="5" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="23" coveredstatements="0" elements="27" coveredelements="0"/>
      </class>
      <line num="14" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="19" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="27" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="42" type="method" name="getBodyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <metrics loc="55" ncloc="50" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="23" coveredstatements="0" elements="27" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Notifications/RecoveryCodesGeneratedForUserPresentationModel.php">
      <class name="MediaWiki\Extension\OATHAuth\Notifications\RecoveryCodesGeneratedForUserPresentationModel" namespace="global">
        <metrics complexity="8" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="0" elements="44" coveredelements="0"/>
      </class>
      <line num="14" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="19" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="27" type="method" name="getSecondaryLinks" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="58" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="67" type="method" name="getBodyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <metrics loc="80" ncloc="73" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="0" elements="44" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Notifications/TwoFactorRequiredPresentationModel.php">
      <class name="MediaWiki\Extension\OATHAuth\Notifications\TwoFactorRequiredPresentationModel" namespace="global">
        <metrics complexity="6" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="0" elements="25" coveredelements="0"/>
      </class>
      <line num="16" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="21" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="29" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="44" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="51" type="method" name="getBodyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <metrics loc="57" ncloc="48" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="0" elements="25" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/OATHAuthLogger.php">
      <class name="MediaWiki\Extension\OATHAuth\OATHAuthLogger" namespace="global">
        <metrics complexity="16" methods="10" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="50" elements="76" coveredelements="57"/>
      </class>
      <line num="27" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="8"/>
      <line num="32" type="stmt" count="8"/>
      <line num="34" type="method" name="logTwoFactorChallengePresented" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="48" type="method" name="logImplicitVerification" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="49" type="stmt" count="2"/>
      <line num="50" type="stmt" count="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="54" type="stmt" count="2"/>
      <line num="56" type="stmt" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="59" type="stmt" count="2"/>
      <line num="60" type="stmt" count="2"/>
      <line num="61" type="stmt" count="2"/>
      <line num="62" type="stmt" count="2"/>
      <line num="68" type="method" name="logOATHRecovery" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="75" type="stmt" count="2"/>
      <line num="77" type="stmt" count="2"/>
      <line num="80" type="stmt" count="2"/>
      <line num="81" type="stmt" count="2"/>
      <line num="82" type="stmt" count="2"/>
      <line num="83" type="stmt" count="2"/>
      <line num="84" type="stmt" count="2"/>
      <line num="85" type="stmt" count="2"/>
      <line num="86" type="stmt" count="2"/>
      <line num="89" type="method" name="logInitialRecovery" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="105" type="method" name="logFailedVerification" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="106" type="stmt" count="2"/>
      <line num="112" type="stmt" count="2"/>
      <line num="113" type="stmt" count="2"/>
      <line num="114" type="stmt" count="2"/>
      <line num="115" type="stmt" count="2"/>
      <line num="116" type="stmt" count="2"/>
      <line num="118" type="stmt" count="2"/>
      <line num="124" type="method" name="logSuccessfulVerification" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="125" type="stmt" count="2"/>
      <line num="131" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="133" type="stmt" count="1"/>
      <line num="134" type="stmt" count="1"/>
      <line num="135" type="stmt" count="1"/>
      <line num="137" type="stmt" count="1"/>
      <line num="140" type="method" name="insertLogEntry" visibility="private" complexity="1" crap="1" count="4"/>
      <line num="147" type="stmt" count="4"/>
      <line num="149" type="stmt" count="4"/>
      <line num="150" type="stmt" count="4"/>
      <line num="151" type="stmt" count="4"/>
      <line num="152" type="stmt" count="4"/>
      <line num="153" type="stmt" count="4"/>
      <line num="154" type="stmt" count="4"/>
      <line num="156" type="stmt" count="4"/>
      <line num="159" type="method" name="updateCheckUserData" visibility="private" complexity="3" crap="3" count="7"/>
      <line num="160" type="stmt" count="7"/>
      <line num="167" type="stmt" count="7"/>
      <line num="168" type="stmt" count="7"/>
      <line num="169" type="stmt" count="3"/>
      <line num="170" type="stmt" count="4"/>
      <line num="171" type="stmt" count="7"/>
      <line num="177" type="method" name="getClientIP" visibility="private" complexity="2" crap="3.19" count="4"/>
      <line num="179" type="stmt" count="4"/>
      <line num="180" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <metrics loc="187" ncloc="152" classes="1" methods="10" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="50" elements="76" coveredelements="57"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/OATHAuthModuleRegistry.php">
      <class name="MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry" namespace="global">
        <metrics complexity="16" methods="8" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="47" coveredstatements="47" elements="55" coveredelements="55"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="25" type="stmt" count="5"/>
      <line num="27" type="method" name="moduleExists" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="28" type="stmt" count="1"/>
      <line num="31" type="method" name="getModuleByKey" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="32" type="stmt" count="2"/>
      <line num="33" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="48" type="method" name="getAllModules" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="50" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="59" type="method" name="getModuleId" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="60" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="71" type="method" name="getModuleIds" visibility="public" complexity="4" crap="4" count="2"/>
      <line num="72" type="stmt" count="2"/>
      <line num="73" type="stmt" count="2"/>
      <line num="76" type="stmt" count="2"/>
      <line num="77" type="stmt" count="2"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="81" type="stmt" count="2"/>
      <line num="82" type="stmt" count="2"/>
      <line num="83" type="stmt" count="2"/>
      <line num="84" type="stmt" count="2"/>
      <line num="85" type="stmt" count="2"/>
      <line num="86" type="stmt" count="2"/>
      <line num="88" type="stmt" count="2"/>
      <line num="89" type="stmt" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="96" type="stmt" count="2"/>
      <line num="102" type="method" name="getModuleIdsFromDatabase" visibility="private" complexity="3" crap="3" count="2"/>
      <line num="103" type="stmt" count="2"/>
      <line num="105" type="stmt" count="2"/>
      <line num="106" type="stmt" count="2"/>
      <line num="108" type="stmt" count="2"/>
      <line num="111" type="stmt" count="2"/>
      <line num="112" type="stmt" count="2"/>
      <line num="113" type="stmt" count="2"/>
      <line num="114" type="stmt" count="2"/>
      <line num="115" type="stmt" count="2"/>
      <line num="117" type="stmt" count="2"/>
      <line num="118" type="stmt" count="2"/>
      <line num="121" type="stmt" count="2"/>
      <line num="124" type="method" name="getModules" visibility="private" complexity="1" crap="1" count="5"/>
      <line num="125" type="stmt" count="5"/>
      <metrics loc="128" ncloc="109" classes="1" methods="8" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="47" coveredstatements="47" elements="55" coveredelements="55"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/OATHAuthServices.php">
      <class name="MediaWiki\Extension\OATHAuth\OATHAuthServices" namespace="global">
        <metrics complexity="9" methods="9" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="10" elements="20" coveredelements="18"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="58"/>
      <line num="22" type="stmt" count="58"/>
      <line num="24" type="method" name="getInstance" visibility="public" complexity="1" crap="1" count="58"/>
      <line num="25" type="stmt" count="58"/>
      <line num="26" type="stmt" count="58"/>
      <line num="27" type="stmt" count="58"/>
      <line num="30" type="method" name="getEncryptionHelper" visibility="public" complexity="1" crap="1" count="38"/>
      <line num="31" type="stmt" count="38"/>
      <line num="34" type="method" name="getExpiringRecoveryCodeGenerator" visibility="public" complexity="1" crap="1" count="8"/>
      <line num="35" type="stmt" count="8"/>
      <line num="38" type="method" name="getLogger" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="39" type="stmt" count="7"/>
      <line num="42" type="method" name="getMandatory2FAChecker" visibility="public" complexity="1" crap="1" count="10"/>
      <line num="43" type="stmt" count="10"/>
      <line num="46" type="method" name="getModuleRegistry" visibility="public" complexity="1" crap="1" count="10"/>
      <line num="47" type="stmt" count="10"/>
      <line num="50" type="method" name="getUserRepository" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="51" type="stmt" count="6"/>
      <line num="54" type="method" name="getWebAuthnAuthenticator" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <metrics loc="58" ncloc="48" classes="1" methods="9" coveredmethods="8" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="10" elements="20" coveredelements="18"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/OATHUser.php">
      <class name="MediaWiki\Extension\OATHAuth\OATHUser" namespace="global">
        <metrics complexity="19" methods="18" coveredmethods="15" conditionals="0" coveredconditionals="0" statements="51" coveredstatements="40" elements="69" coveredelements="55"/>
      </class>
      <line num="26" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="25"/>
      <line num="30" type="stmt" count="25"/>
      <line num="32" type="method" name="getUser" visibility="public" complexity="1" crap="1" count="22"/>
      <line num="33" type="stmt" count="22"/>
      <line num="39" type="method" name="getCentralId" visibility="public" complexity="1" crap="1" count="25"/>
      <line num="40" type="stmt" count="25"/>
      <line num="43" type="method" name="getIssuer" visibility="public" complexity="2" crap="2.15" count="6"/>
      <line num="46" type="stmt" count="6"/>
      <line num="47" type="stmt" count="0"/>
      <line num="49" type="stmt" count="6"/>
      <line num="52" type="method" name="getAccount" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="53" type="stmt" count="6"/>
      <line num="61" type="method" name="getKeys" visibility="public" complexity="1" crap="1" count="23"/>
      <line num="62" type="stmt" count="23"/>
      <line num="69" type="method" name="getKeysForModule" visibility="public" complexity="1" crap="1" count="24"/>
      <line num="70" type="stmt" count="24"/>
      <line num="71" type="stmt" count="24"/>
      <line num="72" type="stmt" count="24"/>
      <line num="73" type="stmt" count="24"/>
      <line num="74" type="stmt" count="24"/>
      <line num="75" type="stmt" count="24"/>
      <line num="78" type="method" name="getKeyById" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="79" type="stmt" count="5"/>
      <line num="80" type="stmt" count="5"/>
      <line num="81" type="stmt" count="5"/>
      <line num="82" type="stmt" count="5"/>
      <line num="83" type="stmt" count="5"/>
      <line num="84" type="stmt" count="5"/>
      <line num="85" type="stmt" count="5"/>
      <line num="88" type="method" name="removeKey" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="89" type="stmt" count="5"/>
      <line num="90" type="stmt" count="5"/>
      <line num="91" type="stmt" count="5"/>
      <line num="92" type="stmt" count="5"/>
      <line num="93" type="stmt" count="5"/>
      <line num="94" type="stmt" count="5"/>
      <line num="95" type="stmt" count="5"/>
      <line num="101" type="method" name="removeKeysForModule" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="113" type="method" name="addKey" visibility="public" complexity="1" crap="1" count="21"/>
      <line num="114" type="stmt" count="21"/>
      <line num="120" type="method" name="isTwoFactorAuthEnabled" visibility="public" complexity="1" crap="1" count="22"/>
      <line num="121" type="stmt" count="22"/>
      <line num="127" type="method" name="hasPasswordlessKeys" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="137" type="method" name="disable" visibility="public" complexity="1" crap="1" count="24"/>
      <line num="138" type="stmt" count="24"/>
      <line num="145" type="method" name="getNonSpecialKeys" visibility="public" complexity="1" crap="1" count="23"/>
      <line num="146" type="stmt" count="23"/>
      <line num="147" type="stmt" count="23"/>
      <line num="148" type="stmt" count="23"/>
      <line num="149" type="stmt" count="23"/>
      <line num="150" type="stmt" count="23"/>
      <line num="151" type="stmt" count="23"/>
      <line num="152" type="stmt" count="23"/>
      <line num="159" type="method" name="userHasNonSpecialEnabledKeys" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="160" type="stmt" count="6"/>
      <line num="171" type="method" name="getUserHandle" visibility="public" complexity="1" crap="1" count="24"/>
      <line num="172" type="stmt" count="24"/>
      <line num="179" type="method" name="setUserHandle" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="180" type="stmt" count="3"/>
      <metrics loc="183" ncloc="124" classes="1" methods="18" coveredmethods="15" conditionals="0" coveredconditionals="0" statements="51" coveredstatements="40" elements="69" coveredelements="55"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/OATHUserRepository.php">
      <class name="MediaWiki\Extension\OATHAuth\OATHUserRepository" namespace="global">
        <metrics complexity="35" methods="14" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="200" coveredstatements="180" elements="214" coveredelements="189"/>
      </class>
      <line num="33" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="41" type="stmt" count="6"/>
      <line num="43" type="method" name="findByUser" visibility="public" complexity="2" crap="2" count="6"/>
      <line num="44" type="stmt" count="6"/>
      <line num="45" type="stmt" count="6"/>
      <line num="46" type="stmt" count="6"/>
      <line num="47" type="stmt" count="6"/>
      <line num="48" type="stmt" count="6"/>
      <line num="49" type="stmt" count="6"/>
      <line num="51" type="stmt" count="6"/>
      <line num="53" type="stmt" count="6"/>
      <line num="70" type="method" name="userHas2FAEnabled" visibility="public" complexity="2" crap="2.00" count="1"/>
      <line num="72" type="stmt" count="1"/>
      <line num="74" type="stmt" count="1"/>
      <line num="75" type="stmt" count="0"/>
      <line num="79" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="81" type="stmt" count="1"/>
      <line num="82" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="85" type="stmt" count="1"/>
      <line num="86" type="stmt" count="1"/>
      <line num="87" type="stmt" count="1"/>
      <line num="88" type="stmt" count="1"/>
      <line num="91" type="method" name="userIsRequiredToHave2FAEnabled" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="103" type="method" name="findByUserHandle" visibility="public" complexity="3" crap="3" count="1"/>
      <line num="104" type="stmt" count="1"/>
      <line num="105" type="stmt" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="109" type="stmt" count="1"/>
      <line num="110" type="stmt" count="1"/>
      <line num="111" type="stmt" count="1"/>
      <line num="112" type="stmt" count="1"/>
      <line num="113" type="stmt" count="1"/>
      <line num="115" type="stmt" count="1"/>
      <line num="117" type="stmt" count="1"/>
      <line num="118" type="stmt" count="1"/>
      <line num="119" type="stmt" count="1"/>
      <line num="120" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="128" type="stmt" count="1"/>
      <line num="129" type="stmt" count="1"/>
      <line num="130" type="stmt" count="1"/>
      <line num="133" type="method" name="checkJSONLength" visibility="private" complexity="2" crap="2" count="4"/>
      <line num="134" type="stmt" count="4"/>
      <line num="146" type="method" name="createKey" visibility="public" complexity="6" crap="6" count="4"/>
      <line num="147" type="stmt" count="4"/>
      <line num="148" type="stmt" count="4"/>
      <line num="154" type="stmt" count="4"/>
      <line num="155" type="stmt" count="4"/>
      <line num="156" type="stmt" count="4"/>
      <line num="158" type="stmt" count="4"/>
      <line num="159" type="stmt" count="4"/>
      <line num="161" type="stmt" count="4"/>
      <line num="162" type="stmt" count="4"/>
      <line num="163" type="stmt" count="4"/>
      <line num="164" type="stmt" count="4"/>
      <line num="165" type="stmt" count="4"/>
      <line num="166" type="stmt" count="4"/>
      <line num="167" type="stmt" count="4"/>
      <line num="168" type="stmt" count="4"/>
      <line num="169" type="stmt" count="4"/>
      <line num="170" type="stmt" count="4"/>
      <line num="171" type="stmt" count="4"/>
      <line num="173" type="stmt" count="4"/>
      <line num="175" type="stmt" count="4"/>
      <line num="176" type="stmt" count="4"/>
      <line num="178" type="stmt" count="4"/>
      <line num="179" type="stmt" count="4"/>
      <line num="180" type="stmt" count="4"/>
      <line num="181" type="stmt" count="4"/>
      <line num="182" type="stmt" count="4"/>
      <line num="183" type="stmt" count="4"/>
      <line num="187" type="stmt" count="4"/>
      <line num="188" type="stmt" count="1"/>
      <line num="189" type="stmt" count="1"/>
      <line num="192" type="stmt" count="4"/>
      <line num="193" type="stmt" count="4"/>
      <line num="195" type="stmt" count="4"/>
      <line num="196" type="stmt" count="4"/>
      <line num="197" type="stmt" count="4"/>
      <line num="198" type="stmt" count="4"/>
      <line num="199" type="stmt" count="4"/>
      <line num="200" type="stmt" count="4"/>
      <line num="202" type="stmt" count="4"/>
      <line num="203" type="stmt" count="4"/>
      <line num="207" type="stmt" count="4"/>
      <line num="213" type="method" name="updateKey" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="222" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="238" type="method" name="removeSomeKeys" visibility="private" complexity="1" crap="1" count="3"/>
      <line num="239" type="stmt" count="3"/>
      <line num="240" type="stmt" count="3"/>
      <line num="241" type="stmt" count="3"/>
      <line num="242" type="stmt" count="3"/>
      <line num="243" type="stmt" count="3"/>
      <line num="244" type="stmt" count="3"/>
      <line num="245" type="stmt" count="3"/>
      <line num="247" type="stmt" count="3"/>
      <line num="250" type="method" name="removeKey" visibility="public" complexity="5" crap="5" count="2"/>
      <line num="251" type="stmt" count="2"/>
      <line num="252" type="stmt" count="2"/>
      <line num="258" type="stmt" count="2"/>
      <line num="259" type="stmt" count="2"/>
      <line num="261" type="stmt" count="2"/>
      <line num="263" type="stmt" count="2"/>
      <line num="264" type="stmt" count="1"/>
      <line num="267" type="stmt" count="2"/>
      <line num="268" type="stmt" count="2"/>
      <line num="269" type="stmt" count="2"/>
      <line num="270" type="stmt" count="2"/>
      <line num="271" type="stmt" count="2"/>
      <line num="272" type="stmt" count="2"/>
      <line num="274" type="stmt" count="2"/>
      <line num="275" type="stmt" count="2"/>
      <line num="284" type="method" name="removeAll" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="285" type="stmt" count="1"/>
      <line num="287" type="stmt" count="1"/>
      <line num="288" type="stmt" count="1"/>
      <line num="289" type="stmt" count="1"/>
      <line num="290" type="stmt" count="1"/>
      <line num="291" type="stmt" count="1"/>
      <line num="293" type="stmt" count="1"/>
      <line num="295" type="stmt" count="1"/>
      <line num="296" type="stmt" count="1"/>
      <line num="297" type="stmt" count="1"/>
      <line num="298" type="stmt" count="1"/>
      <line num="299" type="stmt" count="1"/>
      <line num="301" type="stmt" count="1"/>
      <line num="304" type="method" name="loadKeysFromDatabase" visibility="private" complexity="6" crap="6" count="6"/>
      <line num="305" type="stmt" count="6"/>
      <line num="306" type="stmt" count="6"/>
      <line num="308" type="stmt" count="2"/>
      <line num="311" type="stmt" count="4"/>
      <line num="312" type="stmt" count="4"/>
      <line num="313" type="stmt" count="4"/>
      <line num="314" type="stmt" count="4"/>
      <line num="315" type="stmt" count="4"/>
      <line num="316" type="stmt" count="4"/>
      <line num="317" type="stmt" count="4"/>
      <line num="318" type="stmt" count="4"/>
      <line num="319" type="stmt" count="4"/>
      <line num="320" type="stmt" count="4"/>
      <line num="321" type="stmt" count="4"/>
      <line num="322" type="stmt" count="4"/>
      <line num="323" type="stmt" count="4"/>
      <line num="324" type="stmt" count="4"/>
      <line num="327" type="stmt" count="4"/>
      <line num="329" type="stmt" count="4"/>
      <line num="330" type="stmt" count="2"/>
      <line num="331" type="stmt" count="2"/>
      <line num="333" type="stmt" count="2"/>
      <line num="334" type="stmt" count="2"/>
      <line num="335" type="stmt" count="2"/>
      <line num="336" type="stmt" count="2"/>
      <line num="337" type="stmt" count="2"/>
      <line num="338" type="stmt" count="2"/>
      <line num="341" type="stmt" count="4"/>
      <line num="342" type="stmt" count="4"/>
      <line num="343" type="stmt" count="4"/>
      <line num="344" type="stmt" count="4"/>
      <line num="345" type="stmt" count="4"/>
      <line num="346" type="stmt" count="4"/>
      <line num="347" type="stmt" count="4"/>
      <line num="348" type="stmt" count="4"/>
      <line num="349" type="stmt" count="4"/>
      <line num="350" type="stmt" count="4"/>
      <line num="351" type="stmt" count="1"/>
      <line num="355" type="stmt" count="4"/>
      <line num="357" type="stmt" count="4"/>
      <line num="358" type="stmt" count="0"/>
      <line num="364" type="method" name="insertUserHandle" visibility="private" complexity="2" crap="2.00" count="1"/>
      <line num="365" type="stmt" count="1"/>
      <line num="366" type="stmt" count="1"/>
      <line num="367" type="stmt" count="0"/>
      <line num="369" type="stmt" count="1"/>
      <line num="370" type="stmt" count="1"/>
      <line num="371" type="stmt" count="1"/>
      <line num="372" type="stmt" count="1"/>
      <line num="373" type="stmt" count="1"/>
      <line num="374" type="stmt" count="1"/>
      <line num="375" type="stmt" count="1"/>
      <line num="376" type="stmt" count="1"/>
      <line num="377" type="stmt" count="1"/>
      <line num="378" type="stmt" count="1"/>
      <line num="379" type="stmt" count="1"/>
      <line num="382" type="method" name="deleteUserHandle" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="383" type="stmt" count="2"/>
      <line num="384" type="stmt" count="2"/>
      <line num="385" type="stmt" count="2"/>
      <line num="386" type="stmt" count="2"/>
      <line num="387" type="stmt" count="2"/>
      <line num="388" type="stmt" count="2"/>
      <line num="389" type="stmt" count="2"/>
      <line num="390" type="stmt" count="2"/>
      <metrics loc="393" ncloc="336" classes="1" methods="14" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="200" coveredstatements="180" elements="214" coveredelements="189"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Special/DisableOATHForUser.php">
      <class name="MediaWiki\Extension\OATHAuth\Special\DisableOATHForUser" namespace="global">
        <metrics complexity="17" methods="12" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="58" coveredstatements="55" elements="70" coveredelements="64"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="27" type="stmt" count="6"/>
      <line num="31" type="method" name="getRestriction" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="33" type="stmt" count="6"/>
      <line num="37" type="method" name="getGroupName" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="42" type="method" name="doesWrites" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="47" type="method" name="getLoginSecurityLevel" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="48" type="stmt" count="5"/>
      <line num="54" type="method" name="alterForm" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="55" type="stmt" count="5"/>
      <line num="56" type="stmt" count="5"/>
      <line num="57" type="stmt" count="5"/>
      <line num="58" type="stmt" count="5"/>
      <line num="62" type="method" name="getDisplayFormat" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="63" type="stmt" count="5"/>
      <line num="67" type="method" name="checkExecutePermissions" visibility="protected" complexity="1" crap="1" count="6"/>
      <line num="68" type="stmt" count="6"/>
      <line num="70" type="stmt" count="6"/>
      <line num="74" type="method" name="execute" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="75" type="stmt" count="6"/>
      <line num="76" type="stmt" count="6"/>
      <line num="80" type="method" name="getFormFields" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="81" type="stmt" count="5"/>
      <line num="82" type="stmt" count="5"/>
      <line num="83" type="stmt" count="5"/>
      <line num="84" type="stmt" count="5"/>
      <line num="85" type="stmt" count="5"/>
      <line num="86" type="stmt" count="5"/>
      <line num="87" type="stmt" count="5"/>
      <line num="88" type="stmt" count="5"/>
      <line num="89" type="stmt" count="5"/>
      <line num="90" type="stmt" count="5"/>
      <line num="91" type="stmt" count="5"/>
      <line num="92" type="stmt" count="5"/>
      <line num="93" type="stmt" count="5"/>
      <line num="94" type="stmt" count="5"/>
      <line num="95" type="stmt" count="5"/>
      <line num="96" type="stmt" count="5"/>
      <line num="97" type="stmt" count="5"/>
      <line num="104" type="method" name="onSubmit" visibility="public" complexity="6" crap="6" count="4"/>
      <line num="105" type="stmt" count="4"/>
      <line num="108" type="stmt" count="4"/>
      <line num="109" type="stmt" count="1"/>
      <line num="112" type="stmt" count="3"/>
      <line num="113" type="stmt" count="0"/>
      <line num="116" type="stmt" count="3"/>
      <line num="118" type="stmt" count="3"/>
      <line num="119" type="stmt" count="1"/>
      <line num="122" type="stmt" count="2"/>
      <line num="125" type="stmt" count="2"/>
      <line num="126" type="stmt" count="2"/>
      <line num="127" type="stmt" count="2"/>
      <line num="128" type="stmt" count="2"/>
      <line num="129" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="133" type="stmt" count="1"/>
      <line num="134" type="stmt" count="1"/>
      <line num="137" type="stmt" count="2"/>
      <line num="138" type="stmt" count="2"/>
      <line num="139" type="stmt" count="2"/>
      <line num="140" type="stmt" count="2"/>
      <line num="141" type="stmt" count="2"/>
      <line num="142" type="stmt" count="2"/>
      <line num="143" type="stmt" count="2"/>
      <line num="145" type="stmt" count="2"/>
      <line num="148" type="method" name="onSuccess" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="149" type="stmt" count="2"/>
      <line num="150" type="stmt" count="2"/>
      <metrics loc="154" ncloc="133" classes="1" methods="12" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="58" coveredstatements="55" elements="70" coveredelements="64"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Special/OATHManage.php">
      <class name="MediaWiki\Extension\OATHAuth\Special\OATHManage" namespace="global">
        <metrics complexity="133" methods="34" coveredmethods="16" conditionals="0" coveredconditionals="0" statements="699" coveredstatements="555" elements="733" coveredelements="571"/>
      </class>
      <line num="59" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="13"/>
      <line num="67" type="stmt" count="13"/>
      <line num="71" type="method" name="getRestriction" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="77" type="method" name="getGroupName" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="82" type="method" name="getLoginSecurityLevel" visibility="protected" complexity="1" crap="1" count="13"/>
      <line num="83" type="stmt" count="13"/>
      <line num="87" type="method" name="doesWrites" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="92" type="method" name="getDescription" visibility="public" complexity="1" crap="1" count="13"/>
      <line num="93" type="stmt" count="13"/>
      <line num="97" type="method" name="execute" visibility="public" complexity="4" crap="4" count="13"/>
      <line num="98" type="stmt" count="13"/>
      <line num="99" type="stmt" count="13"/>
      <line num="101" type="stmt" count="13"/>
      <line num="102" type="stmt" count="13"/>
      <line num="103" type="stmt" count="13"/>
      <line num="104" type="stmt" count="13"/>
      <line num="106" type="stmt" count="13"/>
      <line num="108" type="stmt" count="13"/>
      <line num="109" type="stmt" count="5"/>
      <line num="110" type="stmt" count="4"/>
      <line num="111" type="stmt" count="8"/>
      <line num="113" type="stmt" count="3"/>
      <line num="114" type="stmt" count="3"/>
      <line num="115" type="stmt" count="2"/>
      <line num="118" type="stmt" count="5"/>
      <line num="121" type="stmt" count="5"/>
      <line num="122" type="stmt" count="5"/>
      <line num="126" type="method" name="checkPermissions" visibility="public" complexity="6" crap="13.15" count="13"/>
      <line num="127" type="stmt" count="13"/>
      <line num="129" type="stmt" count="13"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="137" type="stmt" count="13"/>
      <line num="139" type="stmt" count="13"/>
      <line num="140" type="stmt" count="0"/>
      <line num="143" type="stmt" count="13"/>
      <line num="145" type="stmt" count="0"/>
      <line num="149" type="method" name="setAction" visibility="private" complexity="1" crap="1" count="13"/>
      <line num="150" type="stmt" count="13"/>
      <line num="153" type="method" name="setModule" visibility="private" complexity="3" crap="3" count="13"/>
      <line num="154" type="stmt" count="13"/>
      <line num="155" type="stmt" count="13"/>
      <line num="156" type="stmt" count="7"/>
      <line num="157" type="stmt" count="6"/>
      <line num="165" type="method" name="getKeyNameAndDescription" visibility="private" complexity="4" crap="4.29" count="6"/>
      <line num="166" type="stmt" count="6"/>
      <line num="167" type="stmt" count="6"/>
      <line num="168" type="stmt" count="6"/>
      <line num="169" type="stmt" count="6"/>
      <line num="171" type="stmt" count="6"/>
      <line num="172" type="stmt" count="6"/>
      <line num="173" type="stmt" count="6"/>
      <line num="174" type="stmt" count="6"/>
      <line num="175" type="stmt" count="6"/>
      <line num="179" type="stmt" count="6"/>
      <line num="180" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="188" type="stmt" count="6"/>
      <line num="189" type="stmt" count="6"/>
      <line num="190" type="stmt" count="6"/>
      <line num="191" type="stmt" count="6"/>
      <line num="194" type="method" name="canRemoveKeys" visibility="private" complexity="4" crap="4" count="10"/>
      <line num="195" type="stmt" count="10"/>
      <line num="196" type="stmt" count="6"/>
      <line num="198" type="stmt" count="4"/>
      <line num="199" type="stmt" count="4"/>
      <line num="200" type="stmt" count="3"/>
      <line num="201" type="stmt" count="3"/>
      <line num="206" type="stmt" count="4"/>
      <line num="212" type="method" name="get2FAGroupsData" visibility="private" complexity="12" crap="12" count="13"/>
      <line num="216" type="stmt" count="13"/>
      <line num="219" type="stmt" count="13"/>
      <line num="220" type="stmt" count="13"/>
      <line num="221" type="stmt" count="4"/>
      <line num="222" type="stmt" count="2"/>
      <line num="224" type="stmt" count="3"/>
      <line num="226" type="stmt" count="4"/>
      <line num="227" type="stmt" count="4"/>
      <line num="228" type="stmt" count="4"/>
      <line num="232" type="stmt" count="13"/>
      <line num="233" type="stmt" count="13"/>
      <line num="234" type="stmt" count="13"/>
      <line num="235" type="stmt" count="4"/>
      <line num="236" type="stmt" count="4"/>
      <line num="238" type="stmt" count="0"/>
      <line num="241" type="stmt" count="4"/>
      <line num="242" type="stmt" count="4"/>
      <line num="243" type="stmt" count="4"/>
      <line num="244" type="stmt" count="4"/>
      <line num="245" type="stmt" count="4"/>
      <line num="247" type="stmt" count="4"/>
      <line num="248" type="stmt" count="3"/>
      <line num="249" type="stmt" count="3"/>
      <line num="253" type="stmt" count="1"/>
      <line num="254" type="stmt" count="1"/>
      <line num="255" type="stmt" count="1"/>
      <line num="258" type="stmt" count="4"/>
      <line num="259" type="stmt" count="4"/>
      <line num="260" type="stmt" count="4"/>
      <line num="261" type="stmt" count="4"/>
      <line num="262" type="stmt" count="4"/>
      <line num="263" type="stmt" count="4"/>
      <line num="266" type="stmt" count="13"/>
      <line num="269" type="method" name="build2FARequiredNotice" visibility="private" complexity="4" crap="9.03" count="2"/>
      <line num="270" type="stmt" count="2"/>
      <line num="271" type="stmt" count="2"/>
      <line num="272" type="stmt" count="2"/>
      <line num="273" type="stmt" count="2"/>
      <line num="274" type="stmt" count="2"/>
      <line num="275" type="stmt" count="2"/>
      <line num="276" type="stmt" count="2"/>
      <line num="278" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="280" type="stmt" count="0"/>
      <line num="281" type="stmt" count="0"/>
      <line num="282" type="stmt" count="0"/>
      <line num="283" type="stmt" count="0"/>
      <line num="286" type="stmt" count="0"/>
      <line num="287" type="stmt" count="0"/>
      <line num="288" type="stmt" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="292" type="stmt" count="0"/>
      <line num="293" type="stmt" count="0"/>
      <line num="294" type="stmt" count="0"/>
      <line num="296" type="stmt" count="0"/>
      <line num="297" type="stmt" count="0"/>
      <line num="299" type="stmt" count="2"/>
      <line num="302" type="method" name="buildIrremovableKeyNotice" visibility="private" complexity="6" crap="6.87" count="1"/>
      <line num="303" type="stmt" count="1"/>
      <line num="304" type="stmt" count="1"/>
      <line num="305" type="stmt" count="0"/>
      <line num="306" type="stmt" count="0"/>
      <line num="307" type="stmt" count="0"/>
      <line num="309" type="stmt" count="0"/>
      <line num="311" type="stmt" count="0"/>
      <line num="312" type="stmt" count="0"/>
      <line num="313" type="stmt" count="0"/>
      <line num="314" type="stmt" count="0"/>
      <line num="315" type="stmt" count="0"/>
      <line num="316" type="stmt" count="0"/>
      <line num="317" type="stmt" count="0"/>
      <line num="318" type="stmt" count="0"/>
      <line num="320" type="stmt" count="1"/>
      <line num="321" type="stmt" count="1"/>
      <line num="322" type="stmt" count="1"/>
      <line num="325" type="stmt" count="1"/>
      <line num="326" type="stmt" count="1"/>
      <line num="327" type="stmt" count="1"/>
      <line num="328" type="stmt" count="1"/>
      <line num="329" type="stmt" count="1"/>
      <line num="330" type="stmt" count="1"/>
      <line num="331" type="stmt" count="1"/>
      <line num="333" type="stmt" count="1"/>
      <line num="334" type="stmt" count="1"/>
      <line num="335" type="stmt" count="1"/>
      <line num="337" type="stmt" count="0"/>
      <line num="339" type="stmt" count="1"/>
      <line num="340" type="stmt" count="1"/>
      <line num="341" type="stmt" count="1"/>
      <line num="342" type="stmt" count="1"/>
      <line num="343" type="stmt" count="1"/>
      <line num="344" type="stmt" count="1"/>
      <line num="345" type="stmt" count="1"/>
      <line num="346" type="stmt" count="1"/>
      <line num="347" type="stmt" count="1"/>
      <line num="349" type="stmt" count="1"/>
      <line num="351" type="stmt" count="1"/>
      <line num="352" type="stmt" count="1"/>
      <line num="353" type="stmt" count="1"/>
      <line num="354" type="stmt" count="1"/>
      <line num="355" type="stmt" count="1"/>
      <line num="356" type="stmt" count="1"/>
      <line num="357" type="stmt" count="1"/>
      <line num="360" type="method" name="buildKeyAccordion" visibility="private" complexity="2" crap="2" count="2"/>
      <line num="361" type="stmt" count="2"/>
      <line num="362" type="stmt" count="2"/>
      <line num="363" type="stmt" count="2"/>
      <line num="364" type="stmt" count="2"/>
      <line num="365" type="stmt" count="2"/>
      <line num="366" type="stmt" count="2"/>
      <line num="368" type="stmt" count="2"/>
      <line num="369" type="stmt" count="2"/>
      <line num="370" type="stmt" count="2"/>
      <line num="373" type="stmt" count="2"/>
      <line num="374" type="stmt" count="2"/>
      <line num="375" type="stmt" count="2"/>
      <line num="376" type="stmt" count="2"/>
      <line num="377" type="stmt" count="2"/>
      <line num="378" type="stmt" count="2"/>
      <line num="379" type="stmt" count="2"/>
      <line num="380" type="stmt" count="2"/>
      <line num="381" type="stmt" count="2"/>
      <line num="382" type="stmt" count="2"/>
      <line num="384" type="stmt" count="2"/>
      <line num="385" type="stmt" count="2"/>
      <line num="386" type="stmt" count="2"/>
      <line num="387" type="stmt" count="2"/>
      <line num="388" type="stmt" count="2"/>
      <line num="389" type="stmt" count="2"/>
      <line num="390" type="stmt" count="2"/>
      <line num="391" type="stmt" count="2"/>
      <line num="392" type="stmt" count="2"/>
      <line num="393" type="stmt" count="2"/>
      <line num="394" type="stmt" count="2"/>
      <line num="395" type="stmt" count="2"/>
      <line num="398" type="method" name="buildVueData" visibility="private" complexity="5" crap="5" count="5"/>
      <line num="399" type="stmt" count="5"/>
      <line num="400" type="stmt" count="5"/>
      <line num="401" type="stmt" count="5"/>
      <line num="402" type="stmt" count="5"/>
      <line num="403" type="stmt" count="5"/>
      <line num="404" type="stmt" count="5"/>
      <line num="406" type="stmt" count="5"/>
      <line num="407" type="stmt" count="5"/>
      <line num="408" type="stmt" count="5"/>
      <line num="409" type="stmt" count="5"/>
      <line num="410" type="stmt" count="5"/>
      <line num="411" type="stmt" count="5"/>
      <line num="412" type="stmt" count="5"/>
      <line num="416" type="stmt" count="5"/>
      <line num="417" type="stmt" count="2"/>
      <line num="418" type="stmt" count="2"/>
      <line num="419" type="stmt" count="2"/>
      <line num="420" type="stmt" count="2"/>
      <line num="422" type="stmt" count="2"/>
      <line num="423" type="stmt" count="0"/>
      <line num="425" type="stmt" count="2"/>
      <line num="429" type="stmt" count="5"/>
      <line num="432" type="method" name="displayNewUI" visibility="private" complexity="22" crap="22.85" count="5"/>
      <line num="433" type="stmt" count="5"/>
      <line num="434" type="stmt" count="5"/>
      <line num="435" type="stmt" count="5"/>
      <line num="436" type="stmt" count="5"/>
      <line num="437" type="stmt" count="5"/>
      <line num="440" type="stmt" count="5"/>
      <line num="441" type="stmt" count="5"/>
      <line num="442" type="stmt" count="0"/>
      <line num="443" type="stmt" count="0"/>
      <line num="444" type="stmt" count="0"/>
      <line num="448" type="stmt" count="5"/>
      <line num="449" type="stmt" count="5"/>
      <line num="450" type="stmt" count="0"/>
      <line num="451" type="stmt" count="0"/>
      <line num="452" type="stmt" count="0"/>
      <line num="453" type="stmt" count="0"/>
      <line num="454" type="stmt" count="0"/>
      <line num="457" type="stmt" count="5"/>
      <line num="458" type="stmt" count="5"/>
      <line num="459" type="stmt" count="5"/>
      <line num="460" type="stmt" count="5"/>
      <line num="461" type="stmt" count="0"/>
      <line num="464" type="stmt" count="5"/>
      <line num="465" type="stmt" count="5"/>
      <line num="466" type="stmt" count="5"/>
      <line num="467" type="stmt" count="5"/>
      <line num="468" type="stmt" count="5"/>
      <line num="470" type="stmt" count="5"/>
      <line num="471" type="stmt" count="0"/>
      <line num="475" type="stmt" count="5"/>
      <line num="476" type="stmt" count="0"/>
      <line num="477" type="stmt" count="0"/>
      <line num="478" type="stmt" count="0"/>
      <line num="479" type="stmt" count="0"/>
      <line num="480" type="stmt" count="0"/>
      <line num="485" type="stmt" count="5"/>
      <line num="486" type="stmt" count="5"/>
      <line num="488" type="stmt" count="5"/>
      <line num="489" type="stmt" count="5"/>
      <line num="490" type="stmt" count="5"/>
      <line num="491" type="stmt" count="5"/>
      <line num="492" type="stmt" count="5"/>
      <line num="493" type="stmt" count="5"/>
      <line num="494" type="stmt" count="5"/>
      <line num="495" type="stmt" count="5"/>
      <line num="496" type="stmt" count="5"/>
      <line num="497" type="stmt" count="5"/>
      <line num="498" type="stmt" count="5"/>
      <line num="499" type="stmt" count="5"/>
      <line num="500" type="stmt" count="5"/>
      <line num="501" type="stmt" count="5"/>
      <line num="502" type="stmt" count="5"/>
      <line num="503" type="stmt" count="5"/>
      <line num="504" type="stmt" count="5"/>
      <line num="505" type="stmt" count="5"/>
      <line num="506" type="stmt" count="5"/>
      <line num="507" type="stmt" count="5"/>
      <line num="508" type="stmt" count="5"/>
      <line num="512" type="stmt" count="5"/>
      <line num="513" type="stmt" count="5"/>
      <line num="514" type="stmt" count="5"/>
      <line num="515" type="stmt" count="1"/>
      <line num="518" type="stmt" count="5"/>
      <line num="519" type="stmt" count="5"/>
      <line num="520" type="stmt" count="5"/>
      <line num="521" type="stmt" count="5"/>
      <line num="522" type="stmt" count="5"/>
      <line num="523" type="stmt" count="5"/>
      <line num="524" type="stmt" count="5"/>
      <line num="525" type="stmt" count="2"/>
      <line num="527" type="stmt" count="0"/>
      <line num="530" type="stmt" count="2"/>
      <line num="532" type="stmt" count="5"/>
      <line num="534" type="stmt" count="3"/>
      <line num="535" type="stmt" count="3"/>
      <line num="536" type="stmt" count="3"/>
      <line num="537" type="stmt" count="3"/>
      <line num="538" type="stmt" count="3"/>
      <line num="541" type="stmt" count="5"/>
      <line num="542" type="stmt" count="2"/>
      <line num="545" type="stmt" count="5"/>
      <line num="546" type="stmt" count="5"/>
      <line num="547" type="stmt" count="5"/>
      <line num="548" type="stmt" count="5"/>
      <line num="549" type="stmt" count="5"/>
      <line num="551" type="stmt" count="5"/>
      <line num="552" type="stmt" count="5"/>
      <line num="553" type="stmt" count="5"/>
      <line num="554" type="stmt" count="5"/>
      <line num="555" type="stmt" count="5"/>
      <line num="556" type="stmt" count="5"/>
      <line num="557" type="stmt" count="5"/>
      <line num="560" type="stmt" count="5"/>
      <line num="561" type="stmt" count="5"/>
      <line num="562" type="stmt" count="5"/>
      <line num="563" type="stmt" count="5"/>
      <line num="564" type="stmt" count="5"/>
      <line num="565" type="stmt" count="5"/>
      <line num="566" type="stmt" count="5"/>
      <line num="567" type="stmt" count="5"/>
      <line num="568" type="stmt" count="5"/>
      <line num="569" type="stmt" count="5"/>
      <line num="570" type="stmt" count="5"/>
      <line num="571" type="stmt" count="5"/>
      <line num="572" type="stmt" count="5"/>
      <line num="575" type="stmt" count="5"/>
      <line num="576" type="stmt" count="5"/>
      <line num="577" type="stmt" count="5"/>
      <line num="578" type="stmt" count="5"/>
      <line num="579" type="stmt" count="2"/>
      <line num="581" type="stmt" count="2"/>
      <line num="583" type="stmt" count="0"/>
      <line num="585" type="stmt" count="5"/>
      <line num="586" type="stmt" count="5"/>
      <line num="587" type="stmt" count="5"/>
      <line num="588" type="stmt" count="5"/>
      <line num="589" type="stmt" count="5"/>
      <line num="591" type="stmt" count="5"/>
      <line num="592" type="stmt" count="3"/>
      <line num="593" type="stmt" count="3"/>
      <line num="594" type="stmt" count="3"/>
      <line num="595" type="stmt" count="3"/>
      <line num="597" type="stmt" count="5"/>
      <line num="600" type="stmt" count="5"/>
      <line num="601" type="stmt" count="5"/>
      <line num="602" type="stmt" count="5"/>
      <line num="603" type="stmt" count="5"/>
      <line num="604" type="stmt" count="5"/>
      <line num="605" type="stmt" count="5"/>
      <line num="606" type="stmt" count="5"/>
      <line num="607" type="stmt" count="5"/>
      <line num="608" type="stmt" count="5"/>
      <line num="609" type="stmt" count="5"/>
      <line num="610" type="stmt" count="5"/>
      <line num="611" type="stmt" count="5"/>
      <line num="612" type="stmt" count="5"/>
      <line num="614" type="stmt" count="5"/>
      <line num="616" type="stmt" count="5"/>
      <line num="617" type="stmt" count="3"/>
      <line num="618" type="stmt" count="5"/>
      <line num="619" type="stmt" count="5"/>
      <line num="622" type="method" name="addModuleHTML" visibility="private" complexity="3" crap="4.68" count="3"/>
      <line num="623" type="stmt" count="3"/>
      <line num="624" type="stmt" count="3"/>
      <line num="625" type="stmt" count="2"/>
      <line num="628" type="stmt" count="0"/>
      <line num="629" type="stmt" count="0"/>
      <line num="630" type="stmt" count="0"/>
      <line num="633" type="stmt" count="0"/>
      <line num="639" type="method" name="getGenericContent" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="640" type="stmt" count="0"/>
      <line num="641" type="stmt" count="0"/>
      <line num="642" type="stmt" count="0"/>
      <line num="643" type="stmt" count="0"/>
      <line num="644" type="stmt" count="0"/>
      <line num="645" type="stmt" count="0"/>
      <line num="647" type="stmt" count="0"/>
      <line num="648" type="stmt" count="0"/>
      <line num="649" type="stmt" count="0"/>
      <line num="650" type="stmt" count="0"/>
      <line num="651" type="stmt" count="0"/>
      <line num="652" type="stmt" count="0"/>
      <line num="653" type="stmt" count="0"/>
      <line num="654" type="stmt" count="0"/>
      <line num="655" type="stmt" count="0"/>
      <line num="656" type="stmt" count="0"/>
      <line num="657" type="stmt" count="0"/>
      <line num="658" type="stmt" count="0"/>
      <line num="660" type="stmt" count="0"/>
      <line num="661" type="stmt" count="0"/>
      <line num="662" type="stmt" count="0"/>
      <line num="663" type="stmt" count="0"/>
      <line num="664" type="stmt" count="0"/>
      <line num="666" type="stmt" count="0"/>
      <line num="667" type="stmt" count="0"/>
      <line num="668" type="stmt" count="0"/>
      <line num="669" type="stmt" count="0"/>
      <line num="670" type="stmt" count="0"/>
      <line num="677" type="method" name="exceedsKeyLimit" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="678" type="stmt" count="2"/>
      <line num="681" type="method" name="addCustomContent" visibility="private" complexity="6" crap="7.64" count="3"/>
      <line num="682" type="stmt" count="3"/>
      <line num="683" type="stmt" count="1"/>
      <line num="684" type="stmt" count="1"/>
      <line num="685" type="stmt" count="1"/>
      <line num="686" type="stmt" count="1"/>
      <line num="687" type="stmt" count="1"/>
      <line num="690" type="stmt" count="2"/>
      <line num="691" type="stmt" count="2"/>
      <line num="692" type="stmt" count="2"/>
      <line num="693" type="stmt" count="2"/>
      <line num="694" type="stmt" count="2"/>
      <line num="695" type="stmt" count="2"/>
      <line num="696" type="stmt" count="2"/>
      <line num="698" type="stmt" count="2"/>
      <line num="699" type="stmt" count="0"/>
      <line num="702" type="stmt" count="2"/>
      <line num="703" type="stmt" count="2"/>
      <line num="704" type="stmt" count="2"/>
      <line num="705" type="stmt" count="2"/>
      <line num="706" type="stmt" count="0"/>
      <line num="709" type="stmt" count="0"/>
      <line num="710" type="stmt" count="0"/>
      <line num="711" type="stmt" count="0"/>
      <line num="712" type="stmt" count="0"/>
      <line num="713" type="stmt" count="0"/>
      <line num="714" type="stmt" count="0"/>
      <line num="715" type="stmt" count="0"/>
      <line num="717" type="stmt" count="0"/>
      <line num="722" type="method" name="shouldShowGenericButtons" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="723" type="stmt" count="0"/>
      <line num="726" type="method" name="isModuleRequested" visibility="private" complexity="3" crap="3" count="3"/>
      <line num="727" type="stmt" count="3"/>
      <line num="728" type="stmt" count="3"/>
      <line num="729" type="stmt" count="3"/>
      <line num="730" type="stmt" count="3"/>
      <line num="731" type="stmt" count="3"/>
      <line num="734" type="method" name="isModuleEnabled" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="735" type="stmt" count="0"/>
      <line num="741" type="method" name="isModuleAvailable" visibility="private" complexity="1" crap="1" count="5"/>
      <line num="742" type="stmt" count="5"/>
      <line num="743" type="stmt" count="5"/>
      <line num="744" type="stmt" count="5"/>
      <line num="745" type="stmt" count="5"/>
      <line num="746" type="stmt" count="5"/>
      <line num="747" type="stmt" count="5"/>
      <line num="748" type="stmt" count="5"/>
      <line num="751" type="method" name="ensureRequiredFormFields" visibility="private" complexity="3" crap="3" count="2"/>
      <line num="752" type="stmt" count="2"/>
      <line num="753" type="stmt" count="2"/>
      <line num="755" type="stmt" count="2"/>
      <line num="756" type="stmt" count="2"/>
      <line num="764" type="method" name="clearPage" visibility="private" complexity="1" crap="1" count="3"/>
      <line num="765" type="stmt" count="3"/>
      <line num="766" type="stmt" count="3"/>
      <line num="767" type="stmt" count="3"/>
      <line num="768" type="stmt" count="3"/>
      <line num="770" type="stmt" count="3"/>
      <line num="771" type="stmt" count="3"/>
      <line num="778" type="method" name="getSpecialModules" visibility="private" complexity="4" crap="4" count="5"/>
      <line num="779" type="stmt" count="5"/>
      <line num="780" type="stmt" count="5"/>
      <line num="781" type="stmt" count="5"/>
      <line num="782" type="stmt" count="5"/>
      <line num="785" type="stmt" count="5"/>
      <line num="791" type="method" name="showDeleteWarning" visibility="private" complexity="10" crap="10" count="5"/>
      <line num="792" type="stmt" count="5"/>
      <line num="793" type="stmt" count="5"/>
      <line num="794" type="stmt" count="5"/>
      <line num="795" type="stmt" count="0"/>
      <line num="796" type="stmt" count="0"/>
      <line num="797" type="stmt" count="0"/>
      <line num="798" type="stmt" count="0"/>
      <line num="801" type="stmt" count="5"/>
      <line num="802" type="stmt" count="1"/>
      <line num="803" type="stmt" count="1"/>
      <line num="804" type="stmt" count="1"/>
      <line num="805" type="stmt" count="1"/>
      <line num="808" type="stmt" count="4"/>
      <line num="809" type="stmt" count="4"/>
      <line num="810" type="stmt" count="4"/>
      <line num="811" type="stmt" count="4"/>
      <line num="812" type="stmt" count="4"/>
      <line num="813" type="stmt" count="4"/>
      <line num="815" type="stmt" count="4"/>
      <line num="816" type="stmt" count="4"/>
      <line num="818" type="stmt" count="4"/>
      <line num="819" type="stmt" count="4"/>
      <line num="821" type="stmt" count="4"/>
      <line num="822" type="stmt" count="3"/>
      <line num="823" type="stmt" count="3"/>
      <line num="824" type="stmt" count="3"/>
      <line num="825" type="stmt" count="3"/>
      <line num="826" type="stmt" count="3"/>
      <line num="829" type="stmt" count="4"/>
      <line num="830" type="stmt" count="4"/>
      <line num="831" type="stmt" count="4"/>
      <line num="832" type="stmt" count="4"/>
      <line num="833" type="stmt" count="4"/>
      <line num="835" type="stmt" count="4"/>
      <line num="836" type="stmt" count="3"/>
      <line num="837" type="stmt" count="3"/>
      <line num="838" type="stmt" count="3"/>
      <line num="839" type="stmt" count="3"/>
      <line num="840" type="stmt" count="3"/>
      <line num="841" type="stmt" count="3"/>
      <line num="842" type="stmt" count="3"/>
      <line num="843" type="stmt" count="1"/>
      <line num="844" type="stmt" count="3"/>
      <line num="845" type="stmt" count="3"/>
      <line num="846" type="stmt" count="3"/>
      <line num="849" type="stmt" count="4"/>
      <line num="850" type="stmt" count="4"/>
      <line num="852" type="stmt" count="4"/>
      <line num="853" type="stmt" count="4"/>
      <line num="854" type="stmt" count="4"/>
      <line num="856" type="stmt" count="4"/>
      <line num="857" type="stmt" count="4"/>
      <line num="858" type="stmt" count="4"/>
      <line num="859" type="stmt" count="4"/>
      <line num="860" type="stmt" count="4"/>
      <line num="862" type="stmt" count="4"/>
      <line num="863" type="stmt" count="3"/>
      <line num="864" type="stmt" count="3"/>
      <line num="865" type="stmt" count="3"/>
      <line num="866" type="stmt" count="3"/>
      <line num="867" type="stmt" count="3"/>
      <line num="868" type="stmt" count="3"/>
      <line num="870" type="stmt" count="3"/>
      <line num="871" type="stmt" count="2"/>
      <line num="872" type="stmt" count="2"/>
      <line num="873" type="stmt" count="2"/>
      <line num="874" type="stmt" count="2"/>
      <line num="875" type="stmt" count="2"/>
      <line num="877" type="stmt" count="2"/>
      <line num="878" type="stmt" count="2"/>
      <line num="879" type="stmt" count="2"/>
      <line num="880" type="stmt" count="2"/>
      <line num="882" type="stmt" count="2"/>
      <line num="883" type="stmt" count="2"/>
      <line num="887" type="stmt" count="3"/>
      <line num="888" type="stmt" count="3"/>
      <line num="889" type="stmt" count="3"/>
      <line num="891" type="stmt" count="3"/>
      <line num="892" type="stmt" count="4"/>
      <line num="894" type="stmt" count="4"/>
      <line num="895" type="stmt" count="4"/>
      <line num="896" type="stmt" count="4"/>
      <line num="898" type="stmt" count="4"/>
      <line num="899" type="stmt" count="4"/>
      <line num="905" type="method" name="addSpecialModulesHTML" visibility="private" complexity="3" crap="3.14" count="5"/>
      <line num="906" type="stmt" count="5"/>
      <line num="907" type="stmt" count="0"/>
      <line num="909" type="stmt" count="5"/>
      <line num="910" type="stmt" count="5"/>
      <line num="920" type="method" name="addSpecialModuleHTML" visibility="private" complexity="2" crap="2" count="5"/>
      <line num="922" type="stmt" count="5"/>
      <line num="923" type="stmt" count="5"/>
      <line num="927" type="method" name="getRecoveryCodesHTML" visibility="private" complexity="11" crap="12.03" count="5"/>
      <line num="928" type="stmt" count="5"/>
      <line num="930" type="stmt" count="5"/>
      <line num="931" type="stmt" count="5"/>
      <line num="932" type="stmt" count="5"/>
      <line num="933" type="stmt" count="5"/>
      <line num="935" type="stmt" count="5"/>
      <line num="936" type="stmt" count="5"/>
      <line num="937" type="stmt" count="5"/>
      <line num="939" type="stmt" count="5"/>
      <line num="940" type="stmt" count="5"/>
      <line num="941" type="stmt" count="5"/>
      <line num="942" type="stmt" count="5"/>
      <line num="943" type="stmt" count="5"/>
      <line num="944" type="stmt" count="5"/>
      <line num="945" type="stmt" count="5"/>
      <line num="946" type="stmt" count="5"/>
      <line num="947" type="stmt" count="5"/>
      <line num="948" type="stmt" count="5"/>
      <line num="949" type="stmt" count="5"/>
      <line num="950" type="stmt" count="5"/>
      <line num="951" type="stmt" count="5"/>
      <line num="952" type="stmt" count="5"/>
      <line num="953" type="stmt" count="5"/>
      <line num="954" type="stmt" count="5"/>
      <line num="955" type="stmt" count="5"/>
      <line num="956" type="stmt" count="5"/>
      <line num="957" type="stmt" count="5"/>
      <line num="958" type="stmt" count="5"/>
      <line num="959" type="stmt" count="5"/>
      <line num="960" type="stmt" count="5"/>
      <line num="961" type="stmt" count="5"/>
      <line num="962" type="stmt" count="5"/>
      <line num="963" type="stmt" count="5"/>
      <line num="964" type="stmt" count="5"/>
      <line num="965" type="stmt" count="5"/>
      <line num="966" type="stmt" count="5"/>
      <line num="967" type="stmt" count="5"/>
      <line num="968" type="stmt" count="5"/>
      <line num="969" type="stmt" count="5"/>
      <line num="971" type="stmt" count="5"/>
      <line num="973" type="stmt" count="5"/>
      <line num="974" type="stmt" count="5"/>
      <line num="975" type="stmt" count="5"/>
      <line num="976" type="stmt" count="5"/>
      <line num="978" type="stmt" count="5"/>
      <line num="979" type="stmt" count="0"/>
      <line num="980" type="stmt" count="0"/>
      <line num="981" type="stmt" count="0"/>
      <line num="982" type="stmt" count="0"/>
      <line num="983" type="stmt" count="0"/>
      <line num="984" type="stmt" count="0"/>
      <line num="988" type="stmt" count="0"/>
      <line num="989" type="stmt" count="0"/>
      <line num="990" type="stmt" count="0"/>
      <line num="991" type="stmt" count="0"/>
      <line num="992" type="stmt" count="0"/>
      <line num="993" type="stmt" count="0"/>
      <line num="994" type="stmt" count="0"/>
      <line num="995" type="stmt" count="0"/>
      <line num="996" type="stmt" count="0"/>
      <line num="997" type="stmt" count="0"/>
      <line num="998" type="stmt" count="0"/>
      <line num="999" type="stmt" count="0"/>
      <line num="1000" type="stmt" count="0"/>
      <line num="1001" type="stmt" count="0"/>
      <line num="1002" type="stmt" count="0"/>
      <line num="1003" type="stmt" count="0"/>
      <line num="1004" type="stmt" count="0"/>
      <line num="1005" type="stmt" count="0"/>
      <line num="1006" type="stmt" count="0"/>
      <line num="1007" type="stmt" count="0"/>
      <line num="1008" type="stmt" count="0"/>
      <line num="1009" type="stmt" count="0"/>
      <line num="1010" type="stmt" count="0"/>
      <line num="1011" type="stmt" count="0"/>
      <line num="1014" type="stmt" count="5"/>
      <line num="1015" type="stmt" count="5"/>
      <line num="1016" type="stmt" count="5"/>
      <line num="1017" type="stmt" count="5"/>
      <line num="1018" type="stmt" count="5"/>
      <line num="1019" type="stmt" count="1"/>
      <line num="1020" type="stmt" count="1"/>
      <line num="1021" type="stmt" count="1"/>
      <line num="1022" type="stmt" count="1"/>
      <line num="1023" type="stmt" count="1"/>
      <line num="1024" type="stmt" count="1"/>
      <line num="1027" type="stmt" count="1"/>
      <line num="1028" type="stmt" count="1"/>
      <line num="1029" type="stmt" count="1"/>
      <line num="1030" type="stmt" count="1"/>
      <line num="1031" type="stmt" count="1"/>
      <line num="1032" type="stmt" count="1"/>
      <line num="1033" type="stmt" count="1"/>
      <line num="1034" type="stmt" count="1"/>
      <line num="1035" type="stmt" count="1"/>
      <line num="1036" type="stmt" count="1"/>
      <line num="1037" type="stmt" count="1"/>
      <line num="1038" type="stmt" count="1"/>
      <line num="1039" type="stmt" count="1"/>
      <line num="1040" type="stmt" count="1"/>
      <line num="1041" type="stmt" count="1"/>
      <line num="1042" type="stmt" count="1"/>
      <line num="1043" type="stmt" count="1"/>
      <line num="1044" type="stmt" count="1"/>
      <line num="1045" type="stmt" count="1"/>
      <line num="1046" type="stmt" count="1"/>
      <line num="1047" type="stmt" count="1"/>
      <line num="1048" type="stmt" count="1"/>
      <line num="1049" type="stmt" count="1"/>
      <line num="1050" type="stmt" count="1"/>
      <line num="1051" type="stmt" count="1"/>
      <line num="1052" type="stmt" count="1"/>
      <line num="1053" type="stmt" count="1"/>
      <line num="1054" type="stmt" count="1"/>
      <line num="1055" type="stmt" count="1"/>
      <line num="1056" type="stmt" count="1"/>
      <line num="1057" type="stmt" count="1"/>
      <line num="1058" type="stmt" count="1"/>
      <line num="1059" type="stmt" count="1"/>
      <line num="1060" type="stmt" count="1"/>
      <line num="1061" type="stmt" count="1"/>
      <line num="1062" type="stmt" count="1"/>
      <line num="1063" type="stmt" count="1"/>
      <line num="1064" type="stmt" count="1"/>
      <line num="1065" type="stmt" count="1"/>
      <line num="1066" type="stmt" count="1"/>
      <line num="1067" type="stmt" count="1"/>
      <line num="1068" type="stmt" count="1"/>
      <line num="1069" type="stmt" count="1"/>
      <line num="1070" type="stmt" count="1"/>
      <line num="1071" type="stmt" count="1"/>
      <line num="1072" type="stmt" count="1"/>
      <line num="1073" type="stmt" count="1"/>
      <line num="1076" type="stmt" count="5"/>
      <line num="1077" type="stmt" count="5"/>
      <line num="1078" type="stmt" count="5"/>
      <line num="1079" type="stmt" count="5"/>
      <line num="1080" type="stmt" count="0"/>
      <line num="1083" type="stmt" count="5"/>
      <line num="1084" type="stmt" count="5"/>
      <line num="1085" type="stmt" count="5"/>
      <line num="1086" type="stmt" count="5"/>
      <line num="1087" type="stmt" count="5"/>
      <line num="1088" type="stmt" count="5"/>
      <line num="1089" type="stmt" count="5"/>
      <line num="1090" type="stmt" count="5"/>
      <line num="1091" type="stmt" count="5"/>
      <line num="1092" type="stmt" count="5"/>
      <line num="1093" type="stmt" count="5"/>
      <line num="1094" type="stmt" count="5"/>
      <line num="1095" type="stmt" count="5"/>
      <line num="1096" type="stmt" count="5"/>
      <line num="1099" type="method" name="hasSpecialModules" visibility="private" complexity="1" crap="1" count="5"/>
      <line num="1100" type="stmt" count="5"/>
      <metrics loc="1103" ncloc="1024" classes="1" methods="34" coveredmethods="16" conditionals="0" coveredconditionals="0" statements="699" coveredstatements="555" elements="733" coveredelements="571"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Special/Recover2FAForUser.php">
      <class name="MediaWiki\Extension\OATHAuth\Special\Recover2FAForUser" namespace="global">
        <metrics complexity="20" methods="12" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="78" coveredstatements="68" elements="90" coveredelements="77"/>
      </class>
      <line num="17" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="24" type="stmt" count="6"/>
      <line num="28" type="method" name="getRestriction" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="30" type="stmt" count="6"/>
      <line num="34" type="method" name="getGroupName" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="39" type="method" name="doesWrites" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="44" type="method" name="getLoginSecurityLevel" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="45" type="stmt" count="5"/>
      <line num="51" type="method" name="alterForm" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="52" type="stmt" count="5"/>
      <line num="54" type="stmt" count="5"/>
      <line num="55" type="stmt" count="5"/>
      <line num="56" type="stmt" count="5"/>
      <line num="57" type="stmt" count="5"/>
      <line num="58" type="stmt" count="5"/>
      <line num="59" type="stmt" count="5"/>
      <line num="60" type="stmt" count="5"/>
      <line num="61" type="stmt" count="5"/>
      <line num="62" type="stmt" count="5"/>
      <line num="66" type="method" name="getDisplayFormat" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="67" type="stmt" count="5"/>
      <line num="71" type="method" name="checkExecutePermissions" visibility="protected" complexity="1" crap="1" count="6"/>
      <line num="72" type="stmt" count="6"/>
      <line num="74" type="stmt" count="6"/>
      <line num="78" type="method" name="execute" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="79" type="stmt" count="6"/>
      <line num="80" type="stmt" count="6"/>
      <line num="84" type="method" name="getFormFields" visibility="protected" complexity="4" crap="4" count="5"/>
      <line num="85" type="stmt" count="5"/>
      <line num="86" type="stmt" count="5"/>
      <line num="87" type="stmt" count="5"/>
      <line num="88" type="stmt" count="4"/>
      <line num="90" type="stmt" count="4"/>
      <line num="91" type="stmt" count="4"/>
      <line num="94" type="stmt" count="5"/>
      <line num="95" type="stmt" count="5"/>
      <line num="96" type="stmt" count="5"/>
      <line num="97" type="stmt" count="5"/>
      <line num="98" type="stmt" count="5"/>
      <line num="99" type="stmt" count="5"/>
      <line num="100" type="stmt" count="5"/>
      <line num="101" type="stmt" count="5"/>
      <line num="102" type="stmt" count="5"/>
      <line num="103" type="stmt" count="5"/>
      <line num="104" type="stmt" count="5"/>
      <line num="105" type="stmt" count="5"/>
      <line num="106" type="stmt" count="5"/>
      <line num="107" type="stmt" count="5"/>
      <line num="108" type="stmt" count="5"/>
      <line num="109" type="stmt" count="5"/>
      <line num="110" type="stmt" count="5"/>
      <line num="111" type="stmt" count="5"/>
      <line num="112" type="stmt" count="5"/>
      <line num="113" type="stmt" count="5"/>
      <line num="114" type="stmt" count="5"/>
      <line num="115" type="stmt" count="5"/>
      <line num="116" type="stmt" count="5"/>
      <line num="117" type="stmt" count="5"/>
      <line num="118" type="stmt" count="5"/>
      <line num="122" type="method" name="onSubmit" visibility="public" complexity="6" crap="8.69" count="2"/>
      <line num="123" type="stmt" count="2"/>
      <line num="124" type="stmt" count="2"/>
      <line num="126" type="stmt" count="2"/>
      <line num="128" type="stmt" count="2"/>
      <line num="129" type="stmt" count="2"/>
      <line num="130" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="132" type="stmt" count="2"/>
      <line num="133" type="stmt" count="2"/>
      <line num="134" type="stmt" count="2"/>
      <line num="135" type="stmt" count="2"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="148" type="method" name="onSuccess" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="149" type="stmt" count="1"/>
      <line num="150" type="stmt" count="1"/>
      <line num="152" type="stmt" count="1"/>
      <line num="154" type="stmt" count="1"/>
      <line num="155" type="stmt" count="1"/>
      <line num="156" type="stmt" count="1"/>
      <line num="157" type="stmt" count="1"/>
      <line num="158" type="stmt" count="1"/>
      <metrics loc="161" ncloc="146" classes="1" methods="12" coveredmethods="9" conditionals="0" coveredconditionals="0" statements="78" coveredstatements="68" elements="90" coveredelements="77"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/Special/VerifyOATHForUser.php">
      <class name="MediaWiki\Extension\OATHAuth\Special\VerifyOATHForUser" namespace="global">
        <metrics complexity="18" methods="13" coveredmethods="10" conditionals="0" coveredconditionals="0" statements="58" coveredstatements="55" elements="71" coveredelements="65"/>
      </class>
      <line num="23" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="30" type="stmt" count="7"/>
      <line num="34" type="method" name="getRestriction" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="36" type="stmt" count="7"/>
      <line num="40" type="method" name="getGroupName" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="45" type="method" name="doesWrites" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="50" type="method" name="getLoginSecurityLevel" visibility="protected" complexity="1" crap="1" count="6"/>
      <line num="51" type="stmt" count="6"/>
      <line num="55" type="method" name="alterForm" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="56" type="stmt" count="6"/>
      <line num="57" type="stmt" count="6"/>
      <line num="61" type="method" name="getDisplayFormat" visibility="protected" complexity="1" crap="1" count="6"/>
      <line num="62" type="stmt" count="6"/>
      <line num="66" type="method" name="requiresUnblock" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="67" type="stmt" count="6"/>
      <line num="70" type="method" name="checkExecutePermissions" visibility="protected" complexity="1" crap="1" count="7"/>
      <line num="71" type="stmt" count="7"/>
      <line num="73" type="stmt" count="7"/>
      <line num="77" type="method" name="execute" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="78" type="stmt" count="7"/>
      <line num="79" type="stmt" count="7"/>
      <line num="83" type="method" name="getFormFields" visibility="protected" complexity="1" crap="1" count="6"/>
      <line num="84" type="stmt" count="6"/>
      <line num="85" type="stmt" count="6"/>
      <line num="86" type="stmt" count="6"/>
      <line num="87" type="stmt" count="6"/>
      <line num="88" type="stmt" count="6"/>
      <line num="89" type="stmt" count="6"/>
      <line num="90" type="stmt" count="6"/>
      <line num="91" type="stmt" count="6"/>
      <line num="92" type="stmt" count="6"/>
      <line num="93" type="stmt" count="6"/>
      <line num="94" type="stmt" count="6"/>
      <line num="95" type="stmt" count="6"/>
      <line num="96" type="stmt" count="6"/>
      <line num="97" type="stmt" count="6"/>
      <line num="98" type="stmt" count="6"/>
      <line num="99" type="stmt" count="6"/>
      <line num="100" type="stmt" count="6"/>
      <line num="104" type="method" name="onSubmit" visibility="public" complexity="5" crap="5" count="5"/>
      <line num="105" type="stmt" count="5"/>
      <line num="106" type="stmt" count="5"/>
      <line num="109" type="stmt" count="5"/>
      <line num="110" type="stmt" count="1"/>
      <line num="113" type="stmt" count="4"/>
      <line num="114" type="stmt" count="0"/>
      <line num="117" type="stmt" count="4"/>
      <line num="119" type="stmt" count="4"/>
      <line num="122" type="stmt" count="4"/>
      <line num="123" type="stmt" count="4"/>
      <line num="124" type="stmt" count="4"/>
      <line num="125" type="stmt" count="4"/>
      <line num="126" type="stmt" count="4"/>
      <line num="128" type="stmt" count="4"/>
      <line num="130" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="134" type="stmt" count="4"/>
      <line num="135" type="stmt" count="4"/>
      <line num="136" type="stmt" count="4"/>
      <line num="137" type="stmt" count="4"/>
      <line num="138" type="stmt" count="4"/>
      <line num="139" type="stmt" count="4"/>
      <line num="140" type="stmt" count="4"/>
      <line num="142" type="stmt" count="4"/>
      <line num="145" type="method" name="onSuccess" visibility="public" complexity="2" crap="2" count="4"/>
      <line num="146" type="stmt" count="4"/>
      <line num="148" type="stmt" count="4"/>
      <line num="149" type="stmt" count="4"/>
      <line num="150" type="stmt" count="4"/>
      <metrics loc="154" ncloc="138" classes="1" methods="13" coveredmethods="10" conditionals="0" coveredconditionals="0" statements="58" coveredstatements="55" elements="71" coveredelements="65"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/WebAuthnAuthenticator.php">
      <class name="MediaWiki\Extension\OATHAuth\WebAuthnAuthenticator" namespace="global">
        <metrics complexity="55" methods="22" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="269" coveredstatements="8" elements="291" coveredelements="10"/>
      </class>
      <line num="55" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="69" type="method" name="isEnabled" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="70" type="stmt" count="1"/>
      <line num="73" type="method" name="getRequest" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="77" type="method" name="canAuthenticate" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="89" type="method" name="canRegister" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="100" type="method" name="startAuthentication" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="111" type="method" name="startPasswordlessAuthentication" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="115" type="method" name="startAuthenticationInternal" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="138" type="method" name="determineUser" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="160" type="method" name="continueAuthentication" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="179" type="stmt" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="208" type="method" name="startRegistration" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="213" type="stmt" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="222" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="227" type="method" name="continueRegistration" visibility="public" complexity="8" crap="72" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="238" type="stmt" count="0"/>
      <line num="241" type="stmt" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="251" type="stmt" count="0"/>
      <line num="252" type="stmt" count="0"/>
      <line num="253" type="stmt" count="0"/>
      <line num="254" type="stmt" count="0"/>
      <line num="255" type="stmt" count="0"/>
      <line num="256" type="stmt" count="0"/>
      <line num="258" type="stmt" count="0"/>
      <line num="259" type="stmt" count="0"/>
      <line num="263" type="stmt" count="0"/>
      <line num="264" type="stmt" count="0"/>
      <line num="265" type="stmt" count="0"/>
      <line num="266" type="stmt" count="0"/>
      <line num="267" type="stmt" count="0"/>
      <line num="269" type="stmt" count="0"/>
      <line num="271" type="stmt" count="0"/>
      <line num="272" type="stmt" count="0"/>
      <line num="273" type="stmt" count="0"/>
      <line num="274" type="stmt" count="0"/>
      <line num="275" type="stmt" count="0"/>
      <line num="276" type="stmt" count="0"/>
      <line num="278" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="280" type="stmt" count="0"/>
      <line num="281" type="stmt" count="0"/>
      <line num="283" type="stmt" count="0"/>
      <line num="285" type="stmt" count="0"/>
      <line num="287" type="stmt" count="0"/>
      <line num="288" type="stmt" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="292" type="stmt" count="0"/>
      <line num="293" type="stmt" count="0"/>
      <line num="294" type="stmt" count="0"/>
      <line num="296" type="stmt" count="0"/>
      <line num="299" type="method" name="getChallengeFromCredential" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="300" type="stmt" count="0"/>
      <line num="301" type="stmt" count="0"/>
      <line num="302" type="stmt" count="0"/>
      <line num="303" type="stmt" count="0"/>
      <line num="304" type="stmt" count="0"/>
      <line num="305" type="stmt" count="0"/>
      <line num="306" type="stmt" count="0"/>
      <line num="309" type="method" name="addPendingRequest" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="310" type="stmt" count="0"/>
      <line num="311" type="stmt" count="0"/>
      <line num="312" type="stmt" count="0"/>
      <line num="313" type="stmt" count="0"/>
      <line num="314" type="stmt" count="0"/>
      <line num="315" type="stmt" count="0"/>
      <line num="316" type="stmt" count="0"/>
      <line num="317" type="stmt" count="0"/>
      <line num="318" type="stmt" count="0"/>
      <line num="321" type="method" name="clearPendingRequests" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="322" type="stmt" count="0"/>
      <line num="330" type="method" name="getPendingRequests" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="332" type="stmt" count="0"/>
      <line num="333" type="stmt" count="0"/>
      <line num="334" type="stmt" count="0"/>
      <line num="336" type="stmt" count="0"/>
      <line num="337" type="stmt" count="0"/>
      <line num="338" type="stmt" count="0"/>
      <line num="340" type="stmt" count="0"/>
      <line num="341" type="stmt" count="0"/>
      <line num="342" type="stmt" count="0"/>
      <line num="343" type="stmt" count="0"/>
      <line num="344" type="stmt" count="0"/>
      <line num="353" type="method" name="getPendingRequestWithChallenge" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="354" type="stmt" count="0"/>
      <line num="355" type="stmt" count="0"/>
      <line num="358" type="method" name="filterExpiredRequests" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="359" type="stmt" count="0"/>
      <line num="360" type="stmt" count="0"/>
      <line num="361" type="stmt" count="0"/>
      <line num="362" type="stmt" count="0"/>
      <line num="363" type="stmt" count="0"/>
      <line num="369" type="method" name="getAuthInfo" visibility="private" complexity="6" crap="42" count="0"/>
      <line num="370" type="stmt" count="0"/>
      <line num="371" type="stmt" count="0"/>
      <line num="372" type="stmt" count="0"/>
      <line num="374" type="stmt" count="0"/>
      <line num="375" type="stmt" count="0"/>
      <line num="377" type="stmt" count="0"/>
      <line num="378" type="stmt" count="0"/>
      <line num="379" type="stmt" count="0"/>
      <line num="380" type="stmt" count="0"/>
      <line num="381" type="stmt" count="0"/>
      <line num="384" type="stmt" count="0"/>
      <line num="385" type="stmt" count="0"/>
      <line num="386" type="stmt" count="0"/>
      <line num="387" type="stmt" count="0"/>
      <line num="388" type="stmt" count="0"/>
      <line num="389" type="stmt" count="0"/>
      <line num="390" type="stmt" count="0"/>
      <line num="391" type="stmt" count="0"/>
      <line num="392" type="stmt" count="0"/>
      <line num="398" type="method" name="getRegisterInfo" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="402" type="stmt" count="0"/>
      <line num="403" type="stmt" count="0"/>
      <line num="407" type="stmt" count="0"/>
      <line num="409" type="stmt" count="0"/>
      <line num="410" type="stmt" count="0"/>
      <line num="411" type="stmt" count="0"/>
      <line num="412" type="stmt" count="0"/>
      <line num="414" type="stmt" count="0"/>
      <line num="415" type="stmt" count="0"/>
      <line num="416" type="stmt" count="0"/>
      <line num="417" type="stmt" count="0"/>
      <line num="418" type="stmt" count="0"/>
      <line num="419" type="stmt" count="0"/>
      <line num="420" type="stmt" count="0"/>
      <line num="421" type="stmt" count="0"/>
      <line num="423" type="stmt" count="0"/>
      <line num="424" type="stmt" count="0"/>
      <line num="425" type="stmt" count="0"/>
      <line num="426" type="stmt" count="0"/>
      <line num="427" type="stmt" count="0"/>
      <line num="428" type="stmt" count="0"/>
      <line num="429" type="stmt" count="0"/>
      <line num="430" type="stmt" count="0"/>
      <line num="431" type="stmt" count="0"/>
      <line num="432" type="stmt" count="0"/>
      <line num="433" type="stmt" count="0"/>
      <line num="434" type="stmt" count="0"/>
      <line num="435" type="stmt" count="0"/>
      <line num="436" type="stmt" count="0"/>
      <line num="437" type="stmt" count="0"/>
      <line num="438" type="stmt" count="0"/>
      <line num="439" type="stmt" count="0"/>
      <line num="440" type="stmt" count="0"/>
      <line num="441" type="stmt" count="0"/>
      <line num="442" type="stmt" count="0"/>
      <line num="443" type="stmt" count="0"/>
      <line num="444" type="stmt" count="0"/>
      <line num="446" type="stmt" count="0"/>
      <line num="447" type="stmt" count="0"/>
      <line num="448" type="stmt" count="0"/>
      <line num="449" type="stmt" count="0"/>
      <line num="450" type="stmt" count="0"/>
      <line num="452" type="stmt" count="0"/>
      <line num="453" type="stmt" count="0"/>
      <line num="454" type="stmt" count="0"/>
      <line num="457" type="stmt" count="0"/>
      <line num="458" type="stmt" count="0"/>
      <line num="459" type="stmt" count="0"/>
      <line num="460" type="stmt" count="0"/>
      <line num="461" type="stmt" count="0"/>
      <line num="462" type="stmt" count="0"/>
      <line num="463" type="stmt" count="0"/>
      <line num="464" type="stmt" count="0"/>
      <line num="465" type="stmt" count="0"/>
      <line num="466" type="stmt" count="0"/>
      <line num="472" type="method" name="getServerId" visibility="private" complexity="4" crap="4.25" count="1"/>
      <line num="473" type="stmt" count="1"/>
      <line num="474" type="stmt" count="1"/>
      <line num="475" type="stmt" count="0"/>
      <line num="478" type="stmt" count="1"/>
      <line num="479" type="stmt" count="1"/>
      <line num="480" type="stmt" count="1"/>
      <line num="481" type="stmt" count="1"/>
      <line num="484" type="stmt" count="0"/>
      <line num="490" type="method" name="getServerName" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="491" type="stmt" count="0"/>
      <line num="492" type="stmt" count="0"/>
      <line num="493" type="stmt" count="0"/>
      <line num="495" type="stmt" count="0"/>
      <line num="496" type="stmt" count="0"/>
      <line num="499" type="stmt" count="0"/>
      <metrics loc="502" ncloc="455" classes="1" methods="22" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="269" coveredstatements="8" elements="291" coveredelements="10"/>
    </file>
    <file name="/workspace/src/extensions/OATHAuth/src/WebAuthnSerializerFactory.php">
      <class name="MediaWiki\Extension\OATHAuth\WebAuthnSerializerFactory" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="0" elements="31" coveredelements="0"/>
      </class>
      <line num="48" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="53" type="method" name="create" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <metrics loc="85" ncloc="73" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="0" elements="31" coveredelements="0"/>
    </file>
    <metrics files="72" loc="10516" ncloc="8937" classes="67" methods="493" coveredmethods="225" conditionals="0" coveredconditionals="0" statements="4297" coveredstatements="2322" elements="4790" coveredelements="2547"/>
  </project>
</coverage>
