PageSourceSearch

https://www.firstmac.com.au/dA/517c72ec-b08a-431f-a625-5a30cd9f50f…?v=46863c2c-911c-48d8-b089-5d61201aae52

js firstmac.com.au collected 2026-09-24 12:42:49 UTC 5,026 bytes, 1 lines download raw bytes

1let phoneLib;const host=window.location.host;let envUrl;const envMap=[{match:["localhost","dev-www","dev-vx.1stm.ac","dev-wizard.1stm.ac","dev-brokertools.1stm.ac"],url:"dev-www.loansau.io"},{match:["test-www","test-vx.1stm.ac","test-wizard.1stm.ac","test-brokertools.1stm.ac"],url:"test-www.loansau.io"},{match:["testu5-"],url:"testu5-www.u5.loansau.io"},{match:["stage-www.loansau.io","stage-www.1stm.ac","stage-vx.1stm.ac","stage-wizard.1stm.ac","stage-brokertools.1stm.ac"],url:"stage-www.loansau.io"},{match:["stage-www","stage-vx.firstmac.com.au","stage-wizard.firstmac.com.au"],url:"stage-www.loans.com.au"}];for(const{match,url}of envMap){if(match.some(pattern=>host.includes(pattern))){envUrl=url;break}}if(!envUrl){envUrl=host.endsWith(".com.au")?"www.loans.com.au":"dev-www.loansau.io"}const TOTAL_CHECK_API=`https://${envUrl}/retailapi/TotalCheckApi/api/Validation/phone`;function sensisValidate(number,countryCode,signal){return new Promise((resolve,reject)=>{fetch(`${TOTAL_CHECK_API}?number=${number}&country=${countryCode||"AU"}`,{signal:signal}).then(response=>{if(!response.ok){throw new Error(`sensis_http_error:${response.status}`)}return response.json()}).then(function(data){const sensisResult=data.result&&data.result.phone_status?data.result.phone_status:"";let invalid=sensisResult&&sensisResult.toLowerCase()!=="active";const msgResult=data.result&&data.result.message?data.result.message:null;if(msgResult&&msgResult.toLowerCase()==="absent subscriber"){invalid=false}return resolve({valid:!invalid,ext:{sensis:data}})}).catch(function(e){return reject(e)})})}function dependencyChecks(){try{phoneLib=libphonenumber}catch(error){throw new Error('missing libphonenumber - Please add "https://cdn.jsdelivr.net/npm/[email protected]/bundle/libphonenumber-max.js" to your dependencies"')}}function phone(number,additionalValidations="",countryCode){dependencyChecks();let finalValid=false;let finalErrors=null;let finalFormatted=number;let finalUnFormatted=number;let finalCountryCode=countryCode;let finalPhoneType=null;let finalExt={};if(number.charAt(0)===" "){number=`+${number.trim()}`}const tryParsing=(n,cc)=>{let parsedNumber;let valid;let formatted;let unFormatted;let outputCountryCode;let phoneType;try{if(cc){parsedNumber=phoneLib.parsePhoneNumber(n,cc);valid=phoneLib.isValidPhoneNumber(n,cc)}else{parsedNumber=phoneLib.parsePhoneNumber(n);valid=phoneLib.isValidPhoneNumber(n)}outputCountryCode=parsedNumber&&parsedNumber.country?parsedNumber.country:"";formatted=(parsedNumber.format("INTERNATIONAL")||"").replace(/[ -]/g,"");phoneType=parsedNumber.getType();unFormatted=n;return{valid:valid,formatted:formatted,unFormatted:unFormatted,countryCode:outputCountryCode,phoneType:phoneType}}catch(e){return{valid:valid,errors:e}}};try{const allCombinations=[];if(countryCode){allCombinations.push(tryParsing(number,countryCode))}else{allCombinations.push(tryParsing(number));allCombinations.push(tryParsing(number,"AU"));allCombinations.push(tryParsing(number,"NZ"))}const foundValid=allCombinations.find(combination=>combination.valid===true);if(foundValid){finalValid=foundValid.valid;finalCountryCode=foundValid.countryCode;finalFormatted=foundValid.formatted;finalUnFormatted=foundValid.unFormatted;finalPhoneType=foundValid.phoneType;finalErrors=undefined}else{finalValid=false;finalErrors=allCombinations.map(combination=>combination.errors&&combination.errors.message?combination.errors.message:undefined)}}catch(e){finalValid=false;finalErrors=e}if(finalValid&&(additionalValidations&&additionalValidations==="sensis")&&finalPhoneType==="MOBILE"&&(finalCountryCode==="AU"||finalCountryCode==="NZ")){const controller=new AbortController;let timeoutId;const sensisTimeout=new Promise(resolve=>{timeoutId=setTimeout(()=>{controller.abort();console.warn("[fmcPhoneValidator] Sensis validation force timeout after 10s, applying fallback validation.");resolve({fallback:true})},1e4)});return Promise.race([sensisValidate(finalFormatted,finalCountryCode,controller.signal),sensisTimeout]).then(sensisRes=>{clearTimeout(timeoutId);if(sensisRes.fallback){return{valid:true,fallback:true,countryCode:finalCountryCode,errors:finalErrors,formatted:finalFormatted,unFormatted:finalUnFormatted,phoneType:finalPhoneType,ext:finalExt}}finalValid=sensisRes.valid;finalExt={...finalExt,...sensisRes.ext};return{valid:finalValid,countryCode:finalCountryCode,errors:finalErrors,formatted:finalFormatted,unFormatted:finalUnFormatted,phoneType:finalPhoneType,ext:finalExt}}).catch(e=>{clearTimeout(timeoutId);
1console.warn("[fmcPhoneValidator] Sensis validation failed, applying fallback validation.",e.message);return{valid:true,fallback:true,countryCode:finalCountryCode,errors:finalErrors,formatted:finalFormatted,unFormatted:finalUnFormatted,phoneType:finalPhoneType,ext:finalExt}})}return Promise.resolve({valid:finalValid,countryCode:finalCountryCode,errors:finalErrors,formatted:finalFormatted,unFormatted:finalUnFormatted,phoneType:finalPhoneType,ext:finalExt})}const fmcPhoneValidator=phone;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.