1<!DOCTYPE html> 2<html lang="en-us"> 3 <head> 4
4<script> 5 document.addEventListener("DOMContentLoaded", function(event) { 6 function usmPageRenderUtil(){var e=this;e.pageCategory="",e.heroElements=[],e.fpTime=null,e.fmpTime=null,e.fmpToTti=null,e.ttiTime=null,e.checker=null,e.waitTime=5e3,e.debug=!1,e.run=function(t){var n=t.heroElementIdentifiers||[".page-hero-element"];return e.pageCategory=t.pageCategory,e.debug=t.debug||!1,new Promise(function(t,r){e.observePaint().then(function(){e.observeHeroElements(n).then(function(){e.observeLongTasks().then(function(){e.fmpToTti=e.ttiTime-e.fmpTime,e.debug&&(console.log("FP: "+e.fpTime),console.log("FMP: "+e.fmpTime),console.log("FMP to TTI: "+e.fmpToTti),console.log("TTI: "+e.ttiTime)),t(e)})})})})},e.observePaint=function(){return new Promise(function(t,n){if(PerformanceObserver===null||PerformanceObserver===undefined)return n(),!1;var r=new PerformanceObserver(function(n){var r=n.getEntries();for(var i in r){var s=r[i],o=s.name;e.fpTime=performance.now();if("first-paint"===s.name){e.debug&&(console.log(s),console.log("metricName"),console.log(o)),t();return}}});r.observe({entryTypes:["paint"]})})},e.observeHeroElements=function(t){return new Promise(function(n,r){t=t.join(),e.debug&&console.log("Hero elements: "+t),e.heroElements=[].slice.call(document.querySelectorAll(t)),e.debug&&console.log("Hero elements count: ["+e.heroElements.length+"]");var i=new MutationObserver(function(t){for(var r=0;r<e.heroElements.length;r++){var s=e.heroElements[r];document.contains(s)&&e.heroElements.splice(r,1)}e.heroElements.length<=0&&(i.disconnect(),e.fmpTime=performance.now(),e.debug&&console.log("Hero observer disconnected. ["+e.getCurrentTime(!0)+"] Unix: ["+e.getCurrentTime()+"]"),n()),e.debug&&console.log("Hero elements not displayed. ["+e.heroElements.length+"].")});i.observe(document,{attributes:!0,childList:!0,characterData:!1,subtree:!0})})},e.observeLongTasks=function(){return new Promise(function(t,n){if(PerformanceObserver===null||PerformanceObserver===undefined)return n(),!1;var r=new PerformanceObserver(function(n){var i=n.getEntries();for(var s in i){var o=i[s];o instanceof PerformanceLongTaskTiming&&(e.debug&&console.log(o),e.scheduleCheck(r,t))}});r.observe({entryTypes:["longtask"]})})},this.scheduleCheck=function(e,t){var n=this,r=performance.now();clearTimeout(this.checker),this.checker=setTimeout(function(){n.ttiTime=r,e.disconnect(),t(),n.debug&&console.log("Performance observer disconnected. ["+n.getCurrentTime(!0)+"] Unix: ["+n.getCurrentTime()+"]")},n.waitTime)},e.getCurrentTime=function(e){return e===!0?(new Date).toUTCString():(new Date).getTime()},e.getPayload=function(){return{"Time to Interactive":e.formatTime(e.ttiTime),"First Paint":e.formatTime(e.fpTime),"First Meaningful Paint":e.formatTime(e.fmpTime),"FMP to TTI":e.formatTime(e.fmpToTti),"Page Category":e.pageCategory}},e.formatTime=function(e){e/=1e3;var t=Math.pow(10,1);return Math.round(e*t)/t}}; 7 var renderUtil = new usmPageRenderUtil(); 8 var debug = false; 9 renderUtil.run({heroElementIdentifiers: false, pageCategory: "User Login", debug: debug}).then(function (renderUtil) { 10 if (debug) { 11 console.log(renderUtil.getPayload()); 12 } 13 }); 14 }); 15 </script>
15<script> 16window.dataLayer = window.dataLayer || []; 17window.dataLayer.push({"hasSEO":"UA-73987-39","hasGlobalRE":"UA-73987-25","hasPremium":"UA-73987-27","hasCompassV2":"UA-73987-51","NumberOfAgents":103,"NumberOfAgentWebsites":0,"MLS":["MA_MLSPIN"],"CallTracking":false,"MapSearchV2":true,"OffMarketProperty":false,"VendorsPage":false,"Blog":true,"LuxuryBuildings":true,"TownPages":false,"MarketReportTool":false,"AVMTool":false,"LeadRouter":true}); 18</script>
18 19�<!-- Google Tag Manager --> 20�
20<script>
vendor: 317 bytes, line 20
20(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
20GTM-NR38L3C
vendor: 3 bytes, line 20
20');
20</script>
20 21�<!-- End Google Tag Manager --> 22�<title>Massachusetts Real Estate | Hammond Residential Real Estate</title> 23 <meta name="description" content="Browse real estate for sale in Massachusetts with Hammond Residential Real Estate. Contact an expert to find your dream Massachusetts home." /> 24 <meta name="author" content="Hammond Residential Real Estate" /> 25 <link rel="canonical" href="https://www.hammondre.com/user/login/"/> 26 <link rel="copyright" href="https://d.usmre.com/UnionStreetMediaTermsofUse.pdf"/><meta property="fb:app_id" content="1129039538391084" /> 27 <meta property="og:title" content="Massachusetts Real Estate | Hammond Residential Real Estate" /> 28 <meta property="og:description" content="Browse real estate for sale in Massachusetts with Hammond Residential Real Estate. Contact an expert to find your dream Massachusetts home." /> 29 <meta property="og:url" content="https://www.hammondre.com/user/login/" /> 30 <meta property="og:type" content="website" /> 31 <meta property="og:site_name" content="Hammond Residential Real Estate" /> 32 <meta name="twitter:card" content="summary" /> 33 <meta name="twitter:title" content="Massachusetts Real Estate | Hammond Residential Real Estate" /> 34 <meta name="twitter:description" content="Browse real estate for sale in Massachusetts with Hammond Residential Real Estate. Contact an expert to find your dream Massachusetts home." /> 35 <meta name="msvalidate.01" content="7AFB407F61E561ABD1320A24E73E1F9A" /> 36 <meta name="google-site-verification" content="" /> 37 <link rel="shortcut icon" href="https://s3.amazonaws.com/files.usmre.com/8974/i/favicon.png?t=1676472716" /> 38<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 39<meta name="viewport" content="width=device-width, initial-scale=1"> 40<link rel="stylesheet" type="text/css" href="https://d1nn5t56all1qd.cloudfront.net/8974/styles.min.css?version=1783616075" media="screen" /><link rel="stylesheet" type="text/css" href="https://d1nn5t56all1qd.cloudfront.net/layouts/46/print.css?version=1740650949" media="print" />
40<script src="https://kit.fontawesome.com/c7bcd66c3f.js" crossorigin="anonymous"></script>
40<script>/** vim: et:ts=4:sw=4:sts=4 41 * @license RequireJS 2.3.3 Copyright jQuery Foundation and other contributors. 42 * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE 43 */ 44var requirejs,require,define;!function(global,setTimeout){function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){if(e){var i;for(i=0;i<e.length&&(!e[i]||!t(e[i],i,e));i+=1);}}function eachReverse(e,t){if(e){var i;for(i=e.length-1;i>-1&&(!e[i]||!t(e[i],i,e));i-=1);}}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(e,t,i,r){return t&&eachProp(t,function(t,n){!i&&hasProp(e,n)||(!r||"object"!=typeof t||!t||isArray(t)||isFunction(t)||t instanceof RegExp?e[n]=t:(e[n]||(e[n]={}),mixin(e[n],t,i,r)))}),e}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}function newContext(e){function t(e){var t,i;for(t=0;t<e.length;t++)if(i=e[t],"."===i)e.splice(t,1),t-=1;else if(".."===i){if(0===t||1===t&&".."===e[2]||".."===e[t-1])continue;t>0&&(e.splice(t-1,2),t-=2)}}function i(e,i,r){var n,o,a,s,u,c,d,p,f,l,h,m,g=i&&i.split("/"),v=y.map,x=v&&v["*"];if(e&&(e=e.split("/"),d=e.length-1,y.nodeIdCompat&&jsSuffixRegExp.test(e[d])&&(e[d]=e[d].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&g&&(m=g.slice(0,g.length-1),e=m.concat(e)),t(e),e=e.join("/")),r&&v&&(g||x)){a=e.split("/");e:for(s=a.length;s>0;s-=1){if(c=a.slice(0,s).join("/"),g)for(u=g.length;u>0;u-=1)if(o=getOwn(v,g.slice(0,u).join("/")),o&&(o=getOwn(o,c))){p=o,f=s;break e}!l&&x&&getOwn(x,c)&&(l=getOwn(x,c),h=s)}!p&&l&&(p=l,f=h),p&&(a.splice(0,f,p),e=a.join("/"))}return n=getOwn(y.pkgs,e),n?n:e}function r(e){isBrowser&&each(scripts(),function(t){if(t.getAttribute("data-requiremodule")===e&&t.getAttribute("data-requirecontext")===q.contextName)return t.parentNode.removeChild(t),!0})}function n(e){var t=getOwn(y.paths,e);if(t&&isArray(t)&&t.length>1)return t.shift(),q.require.undef(e),q.makeRequire(null,{skipMap:!0})([e]),!0}function o(e){var t,i=e?e.indexOf("!"):-1;return i>-1&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function a(e,t,r,n){var a,s,u,c,d=null,p=t?t.name:null,f=e,l=!0,h="";return e||(l=!1,e="_@r"+(T+=1)),c=o(e),d=c[0],e=c[1],d&&(d=i(d,p,n),s=getOwn(j,d)),e&&(d?h=r?e:s&&s.normalize?s.normalize(e,function(e){return i(e,p,n)}):e.indexOf("!")===-1?i(e,p,n):e:(h=i(e,p,n),c=o(h),d=c[0],h=c[1],r=!0,a=q.nameToUrl(h))),u=!d||s||r?"":"_unnormalized"+(A+=1),{prefix:d,name:h,parentMap:t,unnormalized:!!u,url:a,originalName:f,isDefine:l,id:(d?d+"!"+h:h)+u}}function s(e){var t=e.id,i=getOwn(S,t);return i||(i=S[t]=new q.Module(e)),i}function u(e,t,i){var r=e.id,n=getOwn(S,r);!hasProp(j,r)||n&&!n.defineEmitComplete?(n=s(e),n.error&&"error"===t?i(n.error):n.on(t,i)):"defined"===t&&i(j[r])}function c(e,t){var i=e.requireModules,r=!1;t?t(e):(each(i,function(t){var i=getOwn(S,t);i&&(i.error=e,i.events.error&&(r=!0,i.emit("error",e)))}),r||req.onError(e))}function d(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(q.defQueueMap[t]=!0),O.push(e)}),globalDefQueue=[])}function p(e){delete S[e],delete k[e]}function f(e,t,i){var r=e.map.id;e.error?e.emit("error",e.error):(t[r]=!0,each(e.depMaps,function(r,n){var o=r.id,a=getOwn(S,o);!a||e.depMatched[n]||i[o]||(getOwn(t,o)?(e.defineDep(n,j[o]),e.check()):f(a,t,i))}),i[r]=!0)}function l(){var e,t,i=1e3*y.waitSeconds,o=i&&q.startTime+i<(new Date).getTime(),a=[],s=[],u=!1,d=!0;if(!x){if(x=!0,eachProp(k,function(e){var i=e.map,c=i.id;if(e.enabled&&(i.isDefine||s.push(e),!e.error))if(!e.inited&&o)n(c)?(t=!0,u=!0):(a.push(c),r(c));else if(!e.inited&&e.fetched&&i.isDefine&&(u=!0,!i.prefix))return d=!1}),o&&a.length)return e=makeError("timeout","Load timeout for modules: "+a,null,a),e.contextName=q.contextName,c(e);d&&each(s,function(e){f(e,{},{})}),o&&!t||!u||!isBrowser&&!isWebWorker||w||(w=setTimeout(function(){w=0,l()},50)),x=!1}}function h(e){hasProp(j,e[0])||s(a(e[0],null,!0)).init(e[1],e[2])}function m(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function g(e){var t=e.currentTarget||e.srcElement;return m(t,q.onScriptLoad,"load","onreadystatechange"),m(t,q.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function v(){var e;
44for(d();O.length;){if(e=O.shift(),null===e[0])return c(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));h(e)}q.defQueueMap={}}var x,b,q,E,w,y={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},S={},k={},M={},O=[],j={},P={},R={},T=1,A=1;return E={require:function(e){return e.require?e.require:e.require=q.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?j[e.map.id]=e.exports:e.exports=j[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(y.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},b=function(e){this.events=getOwn(M,e.id)||{},this.map=e,this.shim=getOwn(y.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},b.prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,q.startTime=(new Date).getTime();var e=this.map;return this.shim?void q.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()})):e.prefix?this.callPlugin():this.load()}},load:function(){var e=this.map.url;P[e]||(P[e]=!0,q.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var e,t,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=q.execCb(i,o,r,n)}catch(t){e=t}else n=q.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&(t=this.module,t?n=t.exports:this.usingExports&&(n=this.exports)),e)return e.requireMap=this.map,e.requireModules=this.map.isDefine?[this.map.id]:null,e.requireType=this.map.isDefine?"define":"require",c(this.error=e)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(j[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(q,this.map,a)}p(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(q.defQueueMap,i)||this.fetch()}},callPlugin:function(){var e=this.map,t=e.id,r=a(e.prefix);this.depMaps.push(r),u(r,"defined",bind(this,function(r){var n,o,d,f=getOwn(R,this.map.id),l=this.map.name,h=this.map.parentMap?this.map.parentMap.name:null,m=q.makeRequire(e.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(r.normalize&&(l=r.normalize(l,function(e){return i(e,h,!0)})||""),o=a(e.prefix+"!"+l,this.map.parentMap,!0),u(o,"defined",bind(this,function(e){this.map.normalizedMap=o,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),d=getOwn(S,o.id),void(d&&(this.depMaps.push(o),this.events.error&&d.on("error",bind(this,function(e){this.emit("error",e)})),d.enable()))):f?(this.map.url=q.nameToUrl(f),void this.load()):(n=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})}),n.error=bind(this,function(e){this.inited=!0,this.error=e,e.requireModules=[t],eachProp(S,function(e){0===e.map.id.indexOf(t+"_unnormalized")&&p(e.map.id)}),c(e)}),n.fromText=bind(this,function(i,r){var o=e.name,u=a(o),d=useInteractive;r&&(i=r),d&&(useInteractive=!1),s(u),hasProp(y.config,t)&&(y.config[o]=y.config[t]);try{req.exec(i)}catch(e){return c(makeError("fromtexteval","fromText eval for "+t+" failed: "+e,e,[t]))}d&&(useInteractive=!0),this.depMaps.push(u),q.completeLoad(o),m([o],n)}),void r.load(e.name,m,n,y))})),q.enable(r,this),this.pluginMaps[r.id]=r},enable:function(){k[this.map.id]=this,this.enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=a(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(E,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,u(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?u(e,"error",bind(this,this.errback)):this.events.error&&u(e,"error",bind(this,function(e){this.emit
44("error",e)}))}i=e.id,r=S[i],hasProp(E,i)||!r||r.enabled||q.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(S,e.id);t&&!t.enabled&&q.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},q={config:y,contextName:e,registry:S,defined:j,urlFetched:P,defQueue:O,defQueueMap:{},Module:b,makeModuleMap:a,nextTick:req.nextTick,onError:c,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var t=e.urlArgs;e.urlArgs=function(e,i){return(i.indexOf("?")===-1?"?":"&")+t}}var i=y.shim,r={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){r[t]?(y[t]||(y[t]={}),mixin(y[t],e,!0,!0)):y[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(R[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=q.makeShimExports(e)),i[t]=e}),y.shim=i),e.packages&&each(e.packages,function(e){var t,i;e="string"==typeof e?{name:e}:e,i=e.name,t=e.location,t&&(y.paths[i]=e.location),y.pkgs[i]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(S,function(e,t){e.inited||e.map.unnormalized||(e.map=a(t,null,!0))}),(e.deps||e.callback)&&q.require(e.deps||[],e.callback)},makeShimExports:function(e){function t(){var t;return e.init&&(t=e.init.apply(global,arguments)),t||e.exports&&getGlobal(e.exports)}return t},makeRequire:function(t,n){function o(i,r,u){var d,p,f;return n.enableBuildCallback&&r&&isFunction(r)&&(r.__requireJsBuild=!0),"string"==typeof i?isFunction(r)?c(makeError("requireargs","Invalid require call"),u):t&&hasProp(E,i)?E[i](S[t.id]):req.get?req.get(q,i,t,o):(p=a(i,t,!1,!0),d=p.id,hasProp(j,d)?j[d]:c(makeError("notloaded",'Module name "'+d+'" has not been loaded yet for context: '+e+(t?"":". Use require([])")))):(v(),q.nextTick(function(){v(),f=s(a(null,t)),f.skipMap=n.skipMap,f.init(i,r,u,{enabled:!0}),l()}),o)}return n=n||{},mixin(o,{isBrowser:isBrowser,toUrl:function(e){var r,n=e.lastIndexOf("."),o=e.split("/")[0],a="."===o||".."===o;return n!==-1&&(!a||n>1)&&(r=e.substring(n,e.length),e=e.substring(0,n)),q.nameToUrl(i(e,t&&t.id,!0),r,!0)},defined:function(e){return hasProp(j,a(e,t,!1,!0).id)},specified:function(e){return e=a(e,t,!1,!0).id,hasProp(j,e)||hasProp(S,e)}}),t||(o.undef=function(e){d();var i=a(e,t,!0),n=getOwn(S,e);n.undefed=!0,r(e),delete j[e],delete P[i.url],delete M[e],eachReverse(O,function(t,i){t[0]===e&&O.splice(i,1)}),delete q.defQueueMap[e],n&&(n.events.defined&&(M[e]=n.events),p(e))}),o},enable:function(e){var t=getOwn(S,e.id);t&&s(e).enable()},completeLoad:function(e){var t,i,r,o=getOwn(y.shim,e)||{},a=o.exports;for(d();O.length;){if(i=O.shift(),null===i[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);h(i)}if(q.defQueueMap={},r=getOwn(S,e),!t&&!hasProp(j,e)&&r&&!r.inited){if(!(!y.enforceDefine||a&&getGlobal(a)))return n(e)?void 0:c(makeError("nodefine","No define call for "+e,null,[e]));h([e,o.deps||[],o.exportsFn])}l()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c,d=getOwn(y.pkgs,e);if(d&&(e=d),c=getOwn(R,e))return q.nameToUrl(c,t,i);if(req.jsExtRegExp.test(e))s=e+(t||"");else{for(r=y.paths,n=e.split("/"),o=n.length;o>0;o-=1)if(a=n.slice(0,o).join("/"),u=getOwn(r,a)){isArray(u)&&(u=u[0]),n.splice(0,o,u);break}s=n.join("/"),s+=t||(/^data\:|^blob\:|\?/.test(s)||i?"":".js"),s=("/"===s.charAt(0)||s.match(/^[\w\+\.\-]+:/)?"":y.baseUrl)+s}return y.urlArgs&&!/^blob\:/.test(s)?s+y.urlArgs(e,s):s},load:function(e,t){req.load(q,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=g(e);q.completeLoad(t.id)}},onScriptError:function(e){var t=g(e);if(!n(t.id)){var i=[];return eachProp(S,function(e,r){0!==r.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===t.id)return i.push(r),!0})}),c(makeError("scripterror",'Script error for "'+t.id+(i.length?'", needed by: '+i.join(", "):'"'),e,[t.id]))}}},q.require=q.makeRequire(),q}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState?interactiveScript:(eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript)}var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.3",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;if("undefined"==typeof define){if("undefined"!=typeof requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}"undefined"==typeof require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),n=getOwn(contexts,a),n||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick="undefined"!=typeof setTimeout?function(e){setTimeout(e,4)}:function(e){e()}
44,require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(e){req[e]=function(){var t=contexts[defContextName];return t.require[e].apply(t,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(e,t,i){var r,n=e&&e.config||{};if(isBrowser)return r=req.createNode(n,t,i),r.setAttribute("data-requirecontext",e.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||isOpera?(r.addEventListener("load",e.onScriptLoad,!1),r.addEventListener("error",e.onScriptError,!1)):(useInteractive=!0,r.attachEvent("onreadystatechange",e.onScriptLoad)),r.src=i,n.onNodeCreated&&n.onNodeCreated(r,n,t,i),currentlyAddingScript=r,baseElement?head.insertBefore(r,baseElement):head.appendChild(r),currentlyAddingScript=null,r;if(isWebWorker)try{setTimeout(function(){},0),importScripts(i),e.completeLoad(t)}catch(r){e.onError(makeError("importscripts","importScripts failed for "+t+" at "+i,r,[t]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||mainScript.indexOf("!")!==-1||(src=mainScript.split("/"),mainScript=src.pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,t,i){var r,n;"string"!=typeof e&&(i=t,t=e,e=null),isArray(t)||(i=t,t=null),!t&&isFunction(i)&&(t=[],i.length&&(i.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,i){t.push(i)}),t=(1===i.length?["require"]:["require","exports","module"]).concat(t))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript(),r&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")])),n?(n.defQueue.push([e,t,i]),n.defQueueMap[e]=!0):globalDefQueue.push([e,t,i])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}}(this,"undefined"==typeof setTimeout?void 0:setTimeout);</script>
44<script type="text/javascript"> 45 var requireConfig = {"waitSeconds":20,"baseUrl":"https:\/\/d1mlo4htassgww.cloudfront.net\/shipyard\/build\/","paths":{"async":"profiles\/default","bootstrap":"profiles\/default","goog":"profiles\/default","jquery":"profiles\/default","jquery.browser":"profiles\/default","jquery.deparam":"profiles\/default","jquery.dropdownchecklist":"profiles\/default","jquery.form":"profiles\/default","jquery.history":"profiles\/default","jquery.html5-placeholder-shim":"profiles\/default","jquery.inview":"profiles\/default","jquery.usmNlsShipyard":"profiles\/default","jquery.pageitems":"profiles\/default","jquery.usmajaxtogglebutton":"profiles\/default","jquery.usmmortgageestimate":"profiles\/default","jquery.usmtruncate":"profiles\/default","jquery.validation":"profiles\/default","jquery.validation-extensions-usm":"profiles\/default","jqueryui":"profiles\/default","knockout":"knockout-2.3.0","owlcarousel":"profiles\/default","picturefill.min":"profiles\/default","propertyParser":"profiles\/default","shim.polyfills":"profiles\/default","captcha":"profiles\/default","shipyard":"profiles\/default","static-map-search":"profiles\/default","usm":"profiles\/default","usm.analytics":"profiles\/default","usm.cookie":"profiles\/default","usm.url":"profiles\/default","usm.user":"profiles\/default","usm.favorite":"profiles\/default","usm.savesearch":"profiles\/default","usm.modalform":"profiles\/default","usm.dynamicsearch":"profiles\/default","LLSDKsJS":"https:\/\/sdk.locallogic.co\/sdks-js\/1.19.30\/index.umd","webfontloader":"\/\/ajax.googleapis.com\/ajax\/libs\/webfont\/1\/webfont","Leaflet":"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.0.1\/leaflet","mapboxgl":"https:\/\/api.tiles.mapbox.com\/mapbox-gl-js\/v0.42.0\/mapbox-gl","plunk":"plunkComponents.min","emblaCarousel":"https:\/\/unpkg.com\/[email protected]\/embla-carousel.umd","emblaCarouselAutoplay":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-autoplay.umd","emblaCarouselClassNames":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-class-names.umd","emblaCarouselFade":"https:\/\/unpkg.com\/[email protected]\/embla-carousel-fade.umd","emblaCarouselPlugins":"emblaCarouselPlugins","map.regions":"\/realestate\/regions\/?json","jquery.validationextensionsusm":"\/data\/shipyard\/js\/jquery.validation-extensions-usm"}}; 46 requireConfig.urlArgs = function(id, url) { 47 var args = ""; 48 if (url.indexOf("d1nn5t56all1qd") <= 0 && url.indexOf("dy0meowegjlo2") <= 0) { 49 args = "version=1790337528"; 50 return (url.indexOf("?") === -1 ? "?" : "&") + args; 51 } 52 53 return ""; 54 }; 55 56 require.config(requireConfig); 57 </script>
57 58
58<script type="text/javascript">require(["profiles/default", "usm", "usm.calltracking", "usm.goscript"], function (listing, usm) { 59 if (usm.touchSupport) { require(["profiles/touch"]); } 60 });</script>
vendor: 73 bytes, line 60
60<script async src="https://www.google.com/recaptcha/enterprise.js?render=
606Lcw8JApAAAAAMqesucPC8ak3QiTgIQdbYNI7ws2
vendor: 24 bytes, lines 60-61
60"></script> 61
61<link rel="preconnect" href="https://www.google.com"> 62 <link rel="preconnect" href="https://www.gstatic.com" crossorigin> 63</head> 64�<body class="login array1-user array1-login fall" data-site-type="shipyard" data-re-captcha-site-key="6Lcw8JApAAAAAMqesucPC8ak3QiTgIQdbYNI7ws2"> 65�<!-- Google Tag Manager (noscript) -->
vendor: 63 bytes, lines 65-66
65 66�<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
66GTM-NR38L3C
vendor: 84 bytes, lines 66-67
66" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 67�
67<!-- End Google Tag Manager (noscript) --> 68�<header class="utilBarWrap"> 69 <div id="sidebar3"><div id="image-202697" class="widget image container"><a href="/" target="_self"><img src="https://d3w216np43fnr4.cloudfront.net/8974/202697/1.png?version=1668802032" alt="Hammon Residential Real Estate Logo" fetchpriority="high" width="350" height="82"/></a></div><div id="menuwidget-202698" class="widget menu menuwidget default-nav container"><h3 class="widget-title">Desctop Menu</h3><div class="widget-inner"><div class="desktop-nav"><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-202698"><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-143309"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-143309" class="dropdown-toggle" role="menuitem">Properties<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-143309" role="menu"><li role="presentation" class=" menu-item-143301"><a href="/listings/our-listings/" target="_self" role="menuitem">Exclusive Listings</a></li><li role="presentation" class=" menu-item-143302"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-143303"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143304"><a href="/open-houses/" target="_self" role="menuitem">Open Houses</a></li></ul></li><li role="presentation" class="has-children menu-item-142422"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-142422" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-142422" role="menu"><li role="presentation" class=" menu-item-142092"><a href="/buyers/" target="_self" role="menuitem">Buying A Home</a></li><li role="presentation" class=" menu-item-142093"><a href="/sellers/" target="_self" role="menuitem">Selling A Home</a></li><li role="presentation" class=" menu-item-142094"><a href="/home-worth/" target="_self" role="menuitem">Mortgage</a></li><li role="presentation" class=" menu-item-142661"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class="has-children menu-item-142425"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-142425" class="dropdown-toggle" role="menuitem">Communities<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-142425" role="menu"><li role="presentation" class=" menu-item-154643"><a href="/greater-boston-community-guide/" target="_self" role="menuitem">Greater Boston Community Guide</a></li><li role="presentation" class=" menu-item-143311"><a href="/listings/brookline-and-newton/" target="_self" role="menuitem">Brookline, Newton, and Chestnut Hill</a></li><li role="presentation" class=" menu-item-143312"><a href="/boston-neighborhoods/" target="_self" role="menuitem">Boston Neighborhoods and Greater Boston Towns</a></li><li role="presentation" class=" menu-item-143313"><a href="/listings/coming-soon/" target="_self" role="menuitem">Coming Soon Properties</a></li><li role="presentation" class=" menu-item-143314"><a href="/new-developments/" target="_self" role="menuitem">New Construction</a></li><li role="presentation" class=" menu-item-143315"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143316"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class="has-children menu-item-149564"><a href="#" target="_blank" rel="noopener" data-toggle="dropdown" data-target="sub-menu-149564" class="dropdown-toggle" role="menuitem">Neighborhoods<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-149564" role="menu"><li role="presentation" class=" menu-item-149566"><a href="/area-info/" target="_self" role="menuitem">Boston Neighborhood Guide</a></li></ul></li><li role="presentation" class="has-children menu-item-143310"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu
69-143310" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-143310" role="menu"><li role="presentation" class=" menu-item-142105"><a href="/realestate/agents/group/agents/" target="_self" role="menuitem">Our Agents</a></li><li role="presentation" class=" menu-item-142483"><a href="/realestate/offices/chestnut-hill/" target="_self" role="menuitem">Our Office</a></li><li role="presentation" class=" menu-item-144530"><a href="/realestate/agents/group/staff/" target="_self" role="menuitem">Management & Administrative Staff</a></li><li role="presentation" class=" menu-item-142107"><a href="/contact-us/" target="_self" role="menuitem">Contact Us</a></li><li role="presentation" class=" menu-item-142662"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class=" menu-item-143915"><a href="/social-media/" target="_self" role="menuitem">Social Media</a></li><li role="presentation" class=" menu-item-144837"><a href="/resources/" target="_self" role="menuitem">Resources</a></li><li role="presentation" class=" menu-item-142109"><a href="/contact-us/" target="_self" role="menuitem">Contact</a></li></ul></div></nav></div></div><div class="mobile-nav"><button type="button" class="navbar-toggle" data-target="#navbar-mobile-202698" aria-label="Toggle navigation"><span>Menu</span><span class="fa fa-bar"></span><span class="fa fa-bar"></span><span class="fa fa-bar"></span></button><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-mobile-202698"><a href="#" class="menu-close"><i class="fa fa-times-circle-o"></i><span class="sr-only">Close Button</span></a><div class="menu-sign-on"><a class="usm-btn nav-login" href="/user/login/" rel="nofollow">Log In</a><a class="usm-btn nav-register" href="/user/register/" rel="nofollow">Sign Up</a><a class="usm-btn nav-account" href="/user/" rel="nofollow">My Account</a></div><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-143309"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-143309" class="dropdown-toggle" role="menuitem">Properties<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-143309" role="menu"><li role="presentation" class=" menu-item-143301"><a href="/listings/our-listings/" target="_self" role="menuitem">Exclusive Listings</a></li><li role="presentation" class=" menu-item-143302"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-143303"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143304"><a href="/open-houses/" target="_self" role="menuitem">Open Houses</a></li></ul></li><li role="presentation" class="has-children menu-item-142422"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-142422" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-142422" role="menu"><li role="presentation" class=" menu-item-142092"><a href="/buyers/" target="_self" role="menuitem">Buying A Home</a></li><li role="presentation" class=" menu-item-142093"><a href="/sellers/" target="_self" role="menuitem">Selling A Home</a></li><li role="presentation" class=" menu-item-142094"><a href="/home-worth/" target="_self" role="menuitem">Mortgage</a></li><li role="presentation" class=" menu-item-142661"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class="has-children menu-item-142425"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-142425" class="dropdown-toggle" role="menuitem">Communities<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-142425" role="menu"><li role="presentation" class=" menu-item-154643"><a href="/greater-boston-community-guide/" target="_self" role="menuitem">
69Greater Boston Community Guide</a></li><li role="presentation" class=" menu-item-143311"><a href="/listings/brookline-and-newton/" target="_self" role="menuitem">Brookline, Newton, and Chestnut Hill</a></li><li role="presentation" class=" menu-item-143312"><a href="/boston-neighborhoods/" target="_self" role="menuitem">Boston Neighborhoods and Greater Boston Towns</a></li><li role="presentation" class=" menu-item-143313"><a href="/listings/coming-soon/" target="_self" role="menuitem">Coming Soon Properties</a></li><li role="presentation" class=" menu-item-143314"><a href="/new-developments/" target="_self" role="menuitem">New Construction</a></li><li role="presentation" class=" menu-item-143315"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143316"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class="has-children menu-item-149564"><a href="#" target="_blank" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-149564" class="dropdown-toggle" role="menuitem">Neighborhoods<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-149564" role="menu"><li role="presentation" class=" menu-item-149566"><a href="/area-info/" target="_self" role="menuitem">Boston Neighborhood Guide</a></li></ul></li><li role="presentation" class="has-children menu-item-143310"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-143310" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-143310" role="menu"><li role="presentation" class=" menu-item-142105"><a href="/realestate/agents/group/agents/" target="_self" role="menuitem">Our Agents</a></li><li role="presentation" class=" menu-item-142483"><a href="/realestate/offices/chestnut-hill/" target="_self" role="menuitem">Our Office</a></li><li role="presentation" class=" menu-item-144530"><a href="/realestate/agents/group/staff/" target="_self" role="menuitem">Management & Administrative Staff</a></li><li role="presentation" class=" menu-item-142107"><a href="/contact-us/" target="_self" role="menuitem">Contact Us</a></li><li role="presentation" class=" menu-item-142662"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class=" menu-item-143915"><a href="/social-media/" target="_self" role="menuitem">Social Media</a></li><li role="presentation" class=" menu-item-144837"><a href="/resources/" target="_self" role="menuitem">Resources</a></li><li role="presentation" class=" menu-item-142109"><a href="/contact-us/" target="_self" role="menuitem">Contact</a></li></ul><ul class="nav navbar-nav user-nav"><li class="menu-item-saved-search" role="presentation"><a href="/realestate/searches/" rel="nofollow">Saved Searches</a></li><li class="menu-item-favorites" role="presentation"><a href="/realestate/favorites/view/" rel="nofollow">Favorites</a></li></ul></div></nav></div></div></div></div><div id="menuwidget-202699" class="widget menu menuwidget default-nav container"><h3 class="widget-title">Mobile Menu</h3><div class="widget-inner"><div class="desktop-nav"><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-202699"><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-143309"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-143309" class="dropdown-toggle" role="menuitem">Properties<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-143309" role="menu"><li role="presentation" class=" menu-item-143301"><a href="/listings/our-listings/" target="_self" role="menuitem">Exclusive Listings</a></li><li role="presentation" class=" menu-item-143302"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-143303"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143304"><a href="/open-houses/" target="_self" role="menuitem">Open Houses</a></li></ul></li><li role="presentation" class="has-children menu-item-142422"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu
69-142422" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-142422" role="menu"><li role="presentation" class=" menu-item-142092"><a href="/buyers/" target="_self" role="menuitem">Buying A Home</a></li><li role="presentation" class=" menu-item-142093"><a href="/sellers/" target="_self" role="menuitem">Selling A Home</a></li><li role="presentation" class=" menu-item-142094"><a href="/home-worth/" target="_self" role="menuitem">Mortgage</a></li><li role="presentation" class=" menu-item-142661"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class="has-children menu-item-142425"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-142425" class="dropdown-toggle" role="menuitem">Communities<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-142425" role="menu"><li role="presentation" class=" menu-item-154643"><a href="/greater-boston-community-guide/" target="_self" role="menuitem">Greater Boston Community Guide</a></li><li role="presentation" class=" menu-item-143311"><a href="/listings/brookline-and-newton/" target="_self" role="menuitem">Brookline, Newton, and Chestnut Hill</a></li><li role="presentation" class=" menu-item-143312"><a href="/boston-neighborhoods/" target="_self" role="menuitem">Boston Neighborhoods and Greater Boston Towns</a></li><li role="presentation" class=" menu-item-143313"><a href="/listings/coming-soon/" target="_self" role="menuitem">Coming Soon Properties</a></li><li role="presentation" class=" menu-item-143314"><a href="/new-developments/" target="_self" role="menuitem">New Construction</a></li><li role="presentation" class=" menu-item-143315"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143316"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class="has-children menu-item-149564"><a href="#" target="_blank" rel="noopener" data-toggle="dropdown" data-target="sub-menu-149564" class="dropdown-toggle" role="menuitem">Neighborhoods<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-149564" role="menu"><li role="presentation" class=" menu-item-149566"><a href="/area-info/" target="_self" role="menuitem">Boston Neighborhood Guide</a></li></ul></li><li role="presentation" class="has-children menu-item-143310"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="sub-menu-143310" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="sub-menu-143310" role="menu"><li role="presentation" class=" menu-item-142105"><a href="/realestate/agents/group/agents/" target="_self" role="menuitem">Our Agents</a></li><li role="presentation" class=" menu-item-142483"><a href="/realestate/offices/chestnut-hill/" target="_self" role="menuitem">Our Office</a></li><li role="presentation" class=" menu-item-144530"><a href="/realestate/agents/group/staff/" target="_self" role="menuitem">Management & Administrative Staff</a></li><li role="presentation" class=" menu-item-142107"><a href="/contact-us/" target="_self" role="menuitem">Contact Us</a></li><li role="presentation" class=" menu-item-142662"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class=" menu-item-143915"><a href="/social-media/" target="_self" role="menuitem">Social Media</a></li><li role="presentation" class=" menu-item-144837"><a href="/resources/" target="_self" role="menuitem">Resources</a></li><li role="presentation" class=" menu-item-142109"><a href="/contact-us/" target="_self" role="menuitem">Contact</a></li></ul></div></nav></div></div><div class="mobile-nav"><button type="button" class="navbar-toggle" data-target="#navbar-mobile-202699" aria-label="Toggle navigation"><span>Menu</span><span class="fa fa-bar"></span><span class="fa fa-bar"></span><span class="fa fa-bar"></span></button><div class="navbar-wrapper"><nav class="navbar navbar-default" role="navigation"><div id="navbar-mobile-202699"><a href="#" class="menu-close"><i class="fa fa-times-circle-o"></i><span class="sr-only">Close Button</span></a><div class="menu-sign-on"><a class="usm-btn nav-login" href="/user/login/" rel="nofollow">Log In</a><a class="usm-btn nav-register" href="/user/register/" rel="nofollow">Sign Up</a><a class="usm-btn nav-account" href="/user/" rel="nofollow">My Account</a></div><ul class="nav navbar-nav site-nav" role="menubar"><li role="presentation" class="has-children menu-item-143309"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-143309" class="dropdown-toggle" role="menuitem">Properties<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-143309" role="menu"><li role="presentation" class=" menu-item-143301"><a href="/listings/our-listings/" target="_self" role="menuitem">Exclusive Listings</a></li><li role="presentation" class=" menu-item-143302"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-143303"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143304"><a href="/open-houses/" target="_self" role="menuitem">Open Houses</a></li></ul></li><li role="presentation" class="has-children menu-item-142422"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-142422" class="dropdown-toggle" role="menuitem">Services<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-142422" role="menu"><li role="presentation" class=" menu-item-142092"><a href="/buyers/" target="_self" role="menuitem">Buying A Home</a></li><li role="presentation" class=" menu-item-142093"><a href="/sellers/" target="_self" role="menuitem">Selling A Home</a></li><li role="presentation" class=" menu-item-142094"><a href="/home-worth/" target="_self" role="menuitem">Mortgage</a></li><li role="presentation" class=" menu-item-142661"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class="has-children menu-item-142425"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-142425" class="dropdown-toggle" role="menuitem">Communities<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-142425" role="menu"><li role="presentation" class=" menu-item-154643"><a href="/greater-boston-community-guide/" target="_self" role="menuitem">
69Greater Boston Community Guide</a></li><li role="presentation" class=" menu-item-143311"><a href="/listings/brookline-and-newton/" target="_self" role="menuitem">Brookline, Newton, and Chestnut Hill</a></li><li role="presentation" class=" menu-item-143312"><a href="/boston-neighborhoods/" target="_self" role="menuitem">Boston Neighborhoods and Greater Boston Towns</a></li><li role="presentation" class=" menu-item-143313"><a href="/listings/coming-soon/" target="_self" role="menuitem">Coming Soon Properties</a></li><li role="presentation" class=" menu-item-143314"><a href="/new-developments/" target="_self" role="menuitem">New Construction</a></li><li role="presentation" class=" menu-item-143315"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143316"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class="has-children menu-item-149564"><a href="#" target="_blank" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-149564" class="dropdown-toggle" role="menuitem">Neighborhoods<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-149564" role="menu"><li role="presentation" class=" menu-item-149566"><a href="/area-info/" target="_self" role="menuitem">Boston Neighborhood Guide</a></li></ul></li><li role="presentation" class="has-children menu-item-143310"><a href="#" target="_self" rel="noopener" data-toggle="dropdown" data-target="mobile-sub-menu-143310" class="dropdown-toggle" role="menuitem">About Us<span class="caret"></span></a><ul class="dropdown-menu" id="mobile-sub-menu-143310" role="menu"><li role="presentation" class=" menu-item-142105"><a href="/realestate/agents/group/agents/" target="_self" role="menuitem">Our Agents</a></li><li role="presentation" class=" menu-item-142483"><a href="/realestate/offices/chestnut-hill/" target="_self" role="menuitem">Our Office</a></li><li role="presentation" class=" menu-item-144530"><a href="/realestate/agents/group/staff/" target="_self" role="menuitem">Management & Administrative Staff</a></li><li role="presentation" class=" menu-item-142107"><a href="/contact-us/" target="_self" role="menuitem">Contact Us</a></li><li role="presentation" class=" menu-item-142662"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></li><li role="presentation" class=" menu-item-143915"><a href="/social-media/" target="_self" role="menuitem">Social Media</a></li><li role="presentation" class=" menu-item-144837"><a href="/resources/" target="_self" role="menuitem">Resources</a></li><li role="presentation" class=" menu-item-142109"><a href="/contact-us/" target="_self" role="menuitem">Contact</a></li></ul><ul class="nav navbar-nav user-nav"><li class="menu-item-saved-search" role="presentation"><a href="/realestate/searches/" rel="nofollow">Saved Searches</a></li><li class="menu-item-favorites" role="presentation"><a href="/realestate/favorites/view/" rel="nofollow">Favorites</a></li></ul></div></nav></div></div></div></div></div> 70</header> 71<div class="topWrap"> 72 <div id="top"><div id="slideshow-203398" class="widget slideshow container"><div class="slideshow-wrapper" id="carousel-203398"><div class="carousel slide carousel-fade"><div class="carousel-inner"><div class="item active"><img alt="kitchen" fetchpriority="high" src="https://d3w216np43fnr4.cloudfront.net/8974/203398/1-original.jpg?version=1653066164" srcset="https://d3w216np43fnr4.cloudfront.net/1170x1170/8974/203398/1.jpg?version=1653066180 1170w,https://d3w216np43fnr4.cloudfront.net/970x970/8974/203398/1.jpg?version=1653066191 970w,https://d3w216np43fnr4.cloudfront.net/750x750/8974/203398/1.jpg?version=1653066205 750w,https://d3w216np43fnr4.cloudfront.net/320x320/8974/203398/1.jpg?version=1653066208 320w,https://d3w216np43fnr4.cloudfront.net/8974/203398/1-original.jpg?version=1653066164 1900w"/></div></div></div></div></div><div id="autosuggestionsearch-202702" class="widget autosuggestionsearch container"><div class="autosuggest widget-autosuggest"><div class="widget-inner"><form action="/listings/" method="get"><div class="autosuggest-searchbar"><input type="search" placeholder="City/Town, Zipcode, Neighborhood/Area..." aria-label=" Search: City/Town, Zipcode, Neighborhood/Area... Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu, press Tab to select the option and exit the menu. " autocomplete="off" name="autosuggest-search-query" id="autosuggest-search-query-202702" maxlength="200" class="search-input form-control"/><div class="buttons"><div class="autosuggest-loader"></div><button class="usm-btn btn-search" id="autosuggest-search-button" role="button" aria-label="Search"><span>Search</span><i class="fa fa-search"></i></button></div></div><div class="autosuggest-links"><div class="col-links"></div></div></form></div></div></div></div> 73</div> 74<div class="sub1Wrap"> 75 <div id="group1"><div id="recsearch-203290" class="widget recsearchlist recsearch recommendedsearchlist tabbed container"><h3 class="widget-title">Internal Top RecSearches</h3><div class="widget-inner"><ul class="nav nav-tabs"><li class="active recsearch-category-community"><a href="#tab-30024" data-toggle="tab">Community</a></li></ul><div class="tab-content"><div class="tab-pane active" id="tab-30024"><ul class="category-searches"><li><a title="Boston Neighborhoods" href="/listings/boston-neighborhoods/">Boston Neighborhoods</a></li><li><a title="Homes For Sale in Brookline, Newton and Chestnut Hill" href="/listings/brookline-and-newton/">Brookline, Newton, Chestnut Hill</a></li></ul></div></div><a href="/realestate/searchcategories/" title="View All Recommended Searches" class="usm-btn view-all">View all</a></div> 76 </div></div> 77</div> 78<div class="sub2Wrap"> 79 <div id="group2"></div> 80</div> 81<section id="wrapper"> 82 <div class="content-row"> 83 <div class="contentWrap"> 84 <main> 85 86 87<section class="login-wrap {parentClass}"> 88 <h1>Sign In</h1> 89 90 <div class="login-left-wrap"> 91 <div class="user-login-messages"> 92 93 </div> 94 95 <div class="social-opt-in-question"> 96 97 </div> 98 99 100 <div class="google-login"> 101 102 <style type="text/css"> 103 .google-auth { 104 margin-bottom: 15px; 105 } 106 .google-auth iframe, 107 .google-auth div div div { 108 margin: 0 auto !important; 109 } 110 .question-merge-google-account { 111 text-align: center; 112 } 113 .question-merge-google-account .alert-title { 114 margin-bottom: 15px; 115 } 116 .question-merge-google-account form { 117 display: inline-block; 118 margin-right: 15px; 119 } 120 </style> 121
121<script src="https://accounts.google.com/gsi/client" async defer></script>
121 122
122<script type="text/javascript"> 123 require(["jquery", "usm", "usm.modalform"], function ($, usm) { 124 // Dynamic protocol instead of hardcoded https: - the button only renders 125 // when SSL is on in production, but hardcoding https would break plain-http 126 // local/dev domains. 127 var loginUri = window.location.protocol + "//www.hammondre.com/user/login/login/"; 128 129 function submitCredentialForm(credential) { 130 var $form = $("<form>", {method: "POST", action: loginUri}) 131 .append($("<input>", {type: "hidden", name: "credential", value: credential})); 132 $("body").append($form); 133 $form.trigger("submit"); 134 } 135 136 function handleCredentialResponse(response) { 137 var $button = $("#googleAuth5583"); 138 var $loginPopup = $button.closest(".login-popup"); 139 140 if (!$loginPopup.length) { 141 submitCredentialForm(response.credential); 142 return; 143 } 144 145 $.ajax({ 146 type: "POST", 147 url: loginUri, 148 data: {credential: response.credential}, 149 dataType: "json" 150 }).done(function (data) { 151 if (data && data.action === "html") { 152 usm.modalForm.showSocialOptIn($loginPopup, data.html); 153 } else if (data && data.action === "redirect") { 154 submitCredentialForm(response.credential); 155 } else { 156 usm.modalForm.revealSuccess($loginPopup); 157 } 158 }).fail(function (xhr) { 159 usm.modalForm.showSocialError($loginPopup, xhr); 160 }); 161 } 162 163 function googleAuthInit() { 164 google.accounts.id.initialize({ 165 client_id: "715576541995-b17rp8748efmf9qf76g3acfsfvjp8o8m.apps.googleusercontent.com", 166 context: "signin", 167 callback: handleCredentialResponse 168 }); 169 google.accounts.id.prompt(); 170 google.accounts.id.renderButton(document.getElementById("googleAuth5583"), { 171 type: "standard", 172 shape: "pill", 173 theme: "outline", 174 text: "signin_with", 175 size: "large", 176 locale: "en-US", 177 logo_alignment: "left", 178 width: 288 179 }); 180 } 181 182 // onGoogleLibraryLoad only fires once per page; if GSI already loaded 183 // (e.g. the modal opened after a full page load), assigning it here 184 // would never fire, so init directly instead. 185 if (window.google && window.google.accounts && window.google.accounts.id) { 186 googleAuthInit(); 187 } else { 188 window.onGoogleLibraryLoad = googleAuthInit; 189 } 190 }); 191 </script>
191 192 <div class="google-wrapper"><div class="button-wrapper"><div id="googleAuth5583" class="google-auth"></div></div></div> 193 </div> 194 195 <div class="facebook-login"> 196
196<script type="text/javascript">require(["jquery", "jqueryui", "usm", "usm.modalform"], function ($, jqueryui, usm) { 197 var appId = 1129039538391084; 198 /* Init FB */ 199 window.fbAsyncInit = function() { 200 FB.init({ 201 appId : appId, 202 cookie : true, // enable cookies to allow the server to access the session 203 xfbml : true, // parse social plugins on this page 204 version : "v2.5" // use graph api version 2.5 205 }); 206 }; 207 208 // Load the SDK asynchronously 209 (function(d, s, id) { 210 var js, fjs = d.getElementsByTagName(s)[0]; 211 if (d.getElementById(id)) return; 212 js = d.createElement(s); js.id = id; 213 js.src = "//connect.facebook.net/en_US/sdk.js"; 214 fjs.parentNode.insertBefore(js, fjs); 215 }(document, "script", "facebook-jssdk")); 216 217 $(".facebook-action").on("click", function (e) { 218 var $this = $(this); 219 220 /* Find closest facebook form to submit. */ 221 var $fbForm = $this.closest(".facebook-wrapper").find(".facebook-form"); 222 223 FB.login(function (response) { 224 FB.getLoginStatus(function (response) { 225 statusChangeCallback(response, $fbForm); 226 }); 227 }, {scope: "public_profile,email"}); 228 }); 229 230 function statusChangeCallback(response, facebookForm) { 231 if (response.status === "connected") { 232 var $loginPopup = facebookForm.closest(".login-popup"); 233 234 if ($loginPopup.length) { 235 facebookForm.ajaxSubmit({ 236 dataType: "json", 237 success: function (data) { 238 if (data && data.action === "html") { 239 usm.modalForm.showSocialOptIn($loginPopup, data.html); 240 } else if (data && data.action === "redirect") { 241 facebookForm.get(0).submit(); 242 } else { 243 usm.modalForm.revealSuccess($loginPopup); 244 } 245 }, 246 error: function (xhr) { 247 usm.modalForm.showSocialError($loginPopup, xhr); 248 } 249 }); 250 } else { 251 facebookForm.submit(); 252 } 253 } else { 254 $(".facebook-info").html("Something went wrong. Please try again."); 255 } 256 } 257 }); 258 </script>
258<div class="facebook-wrapper"><div class="button-wrapper"><div><a class="btn btn-block btn-social btn-facebook facebook-action"><span class="social-icon"><i class="fa fa-facebook-official"></i></span><span class="button-text">Sign In with Facebook</span><i class="fa fa-angle-right"></i></a></div><br/><div class="or-text"><p>Or sign in with your email and password <i class="fa fa-angle-down"></i></p></div></div><div class="fields-wrapper" style="display: none"><form method="post" action="/user/login/login/" class="facebook-form social-login-form"><input name="SocialLogin" id="SocialLogin" value="Facebook" type="hidden" class="form-control"/><div class="form-group"><label for="Email">Email Address</label><input name="Email" id="Email" type="email" class="form-control"/></div><div class="form-group"><label for="FirstName">First Name</label><input name="FirstName" id="FirstName" type="text" class="form-control"/></div><div class="form-group"><label for="LastName">Last Name</label><input name="LastName" id="LastName" type="text" class="form-control"/></div><input type="submit" name="Submit" id="Submit" value="Submit" class="submit"/></form></div><div class="facebook-info"></div></div> 259 </div> 260 261 <div id="login"> 262 <form method="post" action="/user/login/login/" id="login-form" class="bootstrap-validate" role="form"> 263 <div class="form-group"> 264 <label for="Username">Email</label> 265 <input type="text" name="Username" class="form-control username required" id="UserName" placeholder="*ex: [email protected]" /> 266 </div> 267 <div class="form-group"> 268 <label for="Password">Password</label> 269 <input type="password" name="Password" class="form-control password required" id="Password" placeholder="Your Password" autocomplete="new-password" /> 270 </div> 271 272 273 <div class="submit-section"> 274 <div class="form-group login-submit-group"> 275 <button name="send" id="user-login" type="submit" class="btn usm-btn btn-default submit" tabindex="10" value="Sign In">Sign In</button> 276 <a href="/user/forgot/?RedirectURL=/user/" class="forgot-password">Forgot password?</a> 277 </div> 278 279 <div class="account-group"> 280 <div class="text-center log-bottom"> 281 <div class="log-bottom-left">Don't have an account yet?</div> 282 <div class="log-bottom-right"> 283 <a href="/user/register/?RedirectURL=%2Fuser%2F" id="modal-register" class="btn register-link"> 284 <span> 285 <i class="fa fa-user"></i> 286 </span> 287 Sign Up 288 </a> 289 </div> 290 </div> 291 </div> 292 </div> 293 294 <input type="hidden" name="RedirectURL" value="/user/" /> 295 </form> 296 </div> 297 298 </div> 299</section> 300
301<script type="text/javascript"> 302 require(["jquery", "shipyard"], function($, shipyard) { 303 shipyard.validateForm($('.bootstrap-validate')); 304 }); 305</script>
305 306</main> 307 <aside id="sidebar1"></aside> 308 </div> 309 </div> 310</section> 311<div class="sub3Wrap"> 312 <div id="group3"></div> 313</div> 314<div class="sub4Wrap"> 315 <div id="group4"><div id="recsearch-203287" class="widget recsearchlist recsearch recommendedsearchlist tabbed container"><h3 class="widget-title">Internal Footer RecSearches</h3><div class="widget-inner"><ul class="nav nav-tabs"><li class="active recsearch-category-community"><a href="#tab-30024" data-toggle="tab">Community</a></li><li class="recsearch-category-suburbs"><a href="#tab-30026" data-toggle="tab">Suburbs</a></li><li class="recsearch-category-property-type"><a href="#tab-30028" data-toggle="tab">Property Type</a></li></ul><div class="tab-content"><div class="tab-pane active" id="tab-30024"><ul class="category-searches"><li><a title="Boston Neighborhoods" href="/listings/boston-neighborhoods/">Boston Neighborhoods</a></li><li><a title="Homes For Sale in Brookline, Newton and Chestnut Hill" href="/listings/brookline-and-newton/">Brookline, Newton, Chestnut Hill</a></li></ul></div><div class="tab-pane" id="tab-30026"><ul class="category-searches"><li><a title="Homes For Sale in Abington, MA" href="/suburbs/abington/">Abington</a></li><li><a title="Homes For Sale in Acton, MA" href="/suburbs/acton/">Acton</a></li><li><a title="Homes For Sale in Acushnet, MA" href="/suburbs/acushnet/">Acushnet</a></li><li><a title="Homes For Sale in Amesbury, MA" href="/suburbs/amesbury/">Amesbury</a></li><li><a title="Homes For Sale in Andover, MA" href="/suburbs/andover/">Andover</a></li><li><a title="Homes For Sale in Arlington, MA" href="/suburbs/arlington/">Arlington</a></li><li><a title="Homes For Sale in Ashburnham, MA" href="/suburbs/ashburnham/">Ashburnham</a></li><li><a title="Homes For Sale in Ashby, MA" href="/suburbs/ashby/">Ashby</a></li><li><a title="Homes For Sale in Ashland, MA" href="/suburbs/ashland/">Ashland</a></li><li><a title="Homes For Sale in Athol, MA" href="/suburbs/athol/">Athol</a></li><li><a title="Homes For Sale in Attleboro, MA" href="/suburbs/attleboro/">Attleboro</a></li><li><a title="Homes For Sale in Auburn, MA" href="/suburbs/auburn/">Auburn</a></li><li><a title="Homes For Sale in Avon, MA" href="/suburbs/avon/">Avon</a></li><li><a title="Homes For Sale in Ayer, MA" href="/suburbs/ayer/">Ayer</a></li><li><a title="Homes For Sale in Barre, MA" href="/suburbs/barre/">Barre</a></li><li><a title="Homes For Sale in Bedford, MA" href="/suburbs/bedford/">Bedford</a></li><li><a title="Homes For Sale in Bellingham, MA" href="/suburbs/bellingham/">Bellingham</a></li><li><a title="Homes For Sale in Belmont, MA" href="/suburbs/belmont/">Belmont</a></li><li><a title="Homes For Sale in Berkley, MA" href="/suburbs/berkley/">Berkley</a></li><li><a title="Homes For Sale in Berlin, MA" href="/suburbs/berlin/">Berlin</a></li><li><a title="Homes For Sale in Beverly, MA" href="/suburbs/beverly/">Beverly</a></li><li><a title="Homes For Sale in Billerica, MA" href="/suburbs/billerica/">Billerica</a></li><li><a title="Homes For Sale in Blackstone, MA" href="/suburbs/blackstone/">Blackstone</a></li><li><a title="Homes For Sale in Bolton, MA" href="/suburbs/bolton/">Bolton</a></li><li><a title="Homes For Sale in Boston, MA" href="/suburbs/boston/">Boston</a></li><li><a title="Homes For Sale in Boxford, MA" href="/suburbs/boxford/">Boxford</a></li><li><a title="Homes For Sale in Boylston, MA" href="/suburbs/boylston/">Boylston</a></li><li><a title="Homes For Sale in Braintree, MA" href="/suburbs/braintree/">Braintree</a></li><li><a title="Homes For Sale in Bridgewater, MA" href="/suburbs/bridgewater/">Bridgewater</a></li><li><a title="Homes For Sale in Brockton, MA" href="/suburbs/brockton/">Brockton</a></li><li><a title="Homes For Sale in Brookfield, MA" href="/suburbs/brookfield/">Brookfield</a></li><li><a title="Homes For Sale in Brookline, MA" href="/suburbs/brookline/">Brookline</a></li><li><a title="Homes For Sale in Burlington, MA" href="/suburbs/burlington/">Burlington</a></li><li><a title="Homes For Sale in Cambridge, MA" href="/suburbs/cambridge/">Cambridge</a></li><li><a title="Homes For Sale in Canton, MA" href="/suburbs/canton/">Canton</a></li><li><a title="Homes For Sale in Carver, MA" href="/suburbs/carver/">Carver</a></li><li><a title="Homes For Sale in Charlton, MA" href="/suburbs/charlton/">Charlton</a></li><li><a title="Homes For Sale in Chelmsford, MA" href="/suburbs/chelmsford/">Chelmsford</a></li><li><a title="Homes For Sale in Chelsea, MA" href="/suburbs/chelsea/">Chelsea</a></li><li><a title="Homes For Sale in Clinton, MA" href="/suburbs/clinton/">Clinton</a></li><li><a title="Homes For Sale in Cohasset, MA" href="/suburbs/cohasset/">Cohasset</a></li><li><a title="Homes For Sale in Concord, MA" href="/suburbs/concord/">Concord</a></li><li><a title="Homes For Sale in Danvers, MA" href="/suburbs/danvers/">Danvers</a></li><li><a title="Homes For Sale in Dartmouth, MA" href="/suburbs/dartmouth/">Dartmouth</a></li><li><a title="Homes For Sale in Dedham, MA" href="/suburbs/dedham/">Dedham</a></li><li><a title="Homes For Sale in Dighton, MA" href="/suburbs/dighton/">Dighton</a></li><li><a title="Homes For Sale in Douglas, MA" href="/suburbs/douglas/">Douglas</a></li><li><a title="Homes For Sale in Dover, MA" href="/suburbs/dover/">Dover</a></li><li><a title="Homes For Sale in Dracut, MA" href="/suburbs/dracut/">Dracut</a></li><li><a title="Homes For Sale in Dudley, MA" href="/suburbs/dudley/">Dudley</a></li><li><a title="Homes For Sale in Dunstable, MA" href="/suburbs/dunstable/">Dunstable</a></li><li><a title="Homes For Sale in Duxbury, MA" href="/suburbs/duxbury/">Duxbury</a></li><li><a title="Homes For Sale in East Bridgewater, MA" href="/suburbs/east-bridgewater/">East Bridgewater</a></li><li><a title="Homes For Sale in East Brookfield, MA" href="/suburbs/east-brookfield/">East Brookfield</a></li><li><a title="Homes For Sale in Easton, MA" href="/suburbs/easton/">Easton</a></li><li><a title="Homes For Sale in Essex, MA" href="/suburbs/essex/">Essex</a></li><li><a title="Homes For Sale in Everett, MA" href="/suburbs/everett/">Everett</a></li><li><a title="Homes For Sale in Fairhaven, MA" href="/suburbs/fairhaven/">Fairhaven</a></li><li><a title="Homes For Sale in Fall River, MA" href="/suburbs/fall-river/">Fall River</a></li><li><a title="Homes For Sale in Fitchburg, MA" href="/suburbs/fitchburg/">Fitchburg</a></li><li><a title="Homes For Sale in Foxboro, MA" href="/suburbs/foxboro/">Foxboro</a></li><li><a title="Homes For Sale in Framingham, MA" href="/suburbs/framingham/">Framingham</a></li><li><a title="Homes For Sale in Franklin, MA" href="/suburbs/franklin/">Franklin</a></li><li><a title="Homes For Sale in Freetown, MA" href="/suburbs/freetown/">Freetown</a></li><li><a title="Homes For Sale in Gardner, MA" href="/suburbs/gardner/">
315Gardner</a></li><li><a title="Homes For Sale in Georgetown, MA" href="/suburbs/georgetown/">Georgetown</a></li><li><a title="Homes For Sale in Gloucester, MA" href="/suburbs/gloucester/">Gloucester</a></li><li><a title="Homes For Sale in Grafton, MA" href="/suburbs/grafton/">Grafton</a></li><li><a title="Homes For Sale in Groton, MA" href="/suburbs/groton/">Groton</a></li><li><a title="Homes For Sale in Groveland, MA" href="/suburbs/groveland/">Groveland</a></li><li><a title="Homes For Sale in Halifax, MA" href="/suburbs/halifax/">Halifax</a></li><li><a title="Homes For Sale in Hamilton, MA" href="/suburbs/hamilton/">Hamilton</a></li><li><a title="Homes For Sale in Hanover, MA" href="/suburbs/hanover/">Hanover</a></li><li><a title="Homes For Sale in Hanson, MA" href="/suburbs/hanson/">Hanson</a></li><li><a title="Homes For Sale in Harvard, MA" href="/suburbs/harvard/">Harvard</a></li><li><a title="Homes For Sale in Haverhill, MA" href="/suburbs/haverhill/">Haverhill</a></li><li><a title="Homes For Sale in Hingham, MA" href="/suburbs/hingham/">Hingham</a></li><li><a title="Homes For Sale in Holbrook, MA" href="/suburbs/holbrook/">Holbrook</a></li><li><a title="Homes For Sale in Holden, MA" href="/suburbs/holden/">Holden</a></li><li><a title="Homes For Sale in Holliston, MA" href="/suburbs/holliston/">Holliston</a></li><li><a title="Homes For Sale in Hopkinton, MA" href="/suburbs/hopkinton/">Hopkinton</a></li><li><a title="Homes For Sale in Hudson, MA" href="/suburbs/hudson/">Hudson</a></li><li><a title="Homes For Sale in Hull, MA" href="/suburbs/hull/">Hull</a></li><li><a title="Homes For Sale in Ipswich, MA" href="/suburbs/ipswich/">Ipswich</a></li><li><a title="Homes For Sale in Kingston, MA" href="/suburbs/kingston/">Kingston</a></li><li><a title="Homes For Sale in Lakeville, MA" href="/suburbs/lakeville/">Lakeville</a></li><li><a title="Homes For Sale in Lancaster, MA" href="/suburbs/lancaster/">Lancaster</a></li><li><a title="Homes For Sale in Lawrence, MA" href="/suburbs/lawrence/">Lawrence</a></li><li><a title="Homes For Sale in Leicester, MA" href="/suburbs/leicester/">Leicester</a></li><li><a title="Homes For Sale in Leominster, MA" href="/suburbs/leominster/">Leominster</a></li><li><a title="Homes For Sale in Lexington, MA" href="/suburbs/lexington/">Lexington</a></li><li><a title="Homes For Sale in Lincoln, MA" href="/suburbs/lincoln/">Lincoln</a></li><li><a title="Homes For Sale in Littleton, MA" href="/suburbs/littleton/">Littleton</a></li><li><a title="Homes For Sale in Lowell, MA" href="/suburbs/lowell/">Lowell</a></li><li><a title="Homes For Sale in Lunenburg, MA" href="/suburbs/lunenburg/">Lunenburg</a></li><li><a title="Homes For Sale in Lynn, MA" href="/suburbs/lynn/">Lynn</a></li><li><a title="Homes For Sale in Lynnfield, MA" href="/suburbs/lynnfield/">Lynnfield</a></li><li><a title="Homes For Sale in Malden, MA" href="/suburbs/malden/">Malden</a></li><li><a title="Homes For Sale in Manchester, MA" href="/suburbs/manchester/">Manchester</a></li><li><a title="Homes For Sale in Mansfield, MA" href="/suburbs/mansfield/">Mansfield</a></li><li><a title="Homes For Sale in Marblehead, MA" href="/suburbs/marblehead/">Marblehead</a></li><li><a title="Homes For Sale in Marion, MA" href="/suburbs/marion/">Marion</a></li><li><a title="Homes For Sale in Marlborough, MA" href="/suburbs/marlborough/">Marlborough</a></li><li><a title="Homes For Sale in Marshfield, MA" href="/suburbs/marshfield/">Marshfield</a></li><li><a title="Homes For Sale in Mattapoisett, MA" href="/suburbs/mattapoisett/">Mattapoisett</a></li><li><a title="Homes For Sale in Maynard, MA" href="/suburbs/maynard/">Maynard</a></li><li><a title="Homes For Sale in Medfield, MA" href="/suburbs/medfield/">Medfield</a></li><li><a title="Homes For Sale in Medford, MA" href="/suburbs/medford/">Medford</a></li><li><a title="Homes For Sale in Medway, MA" href="/suburbs/medway/">Medway</a></li><li><a title="Homes For Sale in Melrose, MA" href="/suburbs/melrose/">Melrose</a></li><li><a title="Homes For Sale in Mendon, MA" href="/suburbs/mendon/">Mendon</a></li><li><a title="Homes For Sale in Merrimac, MA" href="/suburbs/merrimac/">Merrimac</a></li><li><a title="Homes For Sale in Methuen, MA" href="/suburbs/methuen/">Methuen</a></li><li><a title="Homes For Sale in Middleboro, MA" href="/suburbs/middleboro/">Middleboro</a></li><li><a title="Homes For Sale in Middleton, MA" href="/suburbs/middleton/">Middleton</a></li><li><a title="Homes For Sale in Milford, MA" href="/suburbs/milford/">Milford</a></li><li><a title="Homes For Sale in Millbury, MA" href="/suburbs/millbury/">Millbury</a></li><li><a title="Homes For Sale in Millis, MA" href="/suburbs/millis/">Millis</a></li><li><a title="Homes For Sale in Milton, MA" href="/suburbs/milton/">Milton</a></li><li><a title="Homes For Sale in Nahant, MA" href="/suburbs/nahant/">Nahant</a></li><li><a title="Homes For Sale in Natick, MA" href="/suburbs/natick/">Natick</a></li><li><a title="Homes For Sale in Needham, MA" href="/suburbs/needham/">Needham</a></li><li><a title="Homes For Sale in New Bedford, MA" href="/suburbs/new-bedford/">New Bedford</a></li><li><a title="Homes For Sale in Newbury, MA" href="/suburbs/newbury/">Newbury</a></li><li><a title="Homes For Sale in Newburyport, MA" href="/suburbs/newburyport/">
315Newburyport</a></li><li><a title="Homes For Sale in Newton, MA" href="/suburbs/newton/">Newton</a></li><li><a title="Homes For Sale in Norfolk, MA" href="/suburbs/norfolk/">Norfolk</a></li><li><a title="Homes For Sale in North Andover, MA" href="/suburbs/north-andover/">North Andover</a></li><li><a title="Homes For Sale in North Attleboro, MA" href="/suburbs/north-attleboro/">North Attleboro</a></li><li><a title="Homes For Sale in North Brookfield, MA" href="/suburbs/north-brookfield/">North Brookfield</a></li><li><a title="Homes For Sale in North Reading, MA" href="/suburbs/north-reading/">North Reading</a></li><li><a title="Homes For Sale in Northborough, MA" href="/suburbs/northborough/">Northborough</a></li><li><a title="Homes For Sale in Northbridge, MA" href="/suburbs/northbridge/">Northbridge</a></li><li><a title="Homes For Sale in Norton, MA" href="/suburbs/norton/">Norton</a></li><li><a title="Homes For Sale in Norwell, MA" href="/suburbs/norwell/">Norwell</a></li><li><a title="Homes For Sale in Norwood, MA" href="/suburbs/norwood/">Norwood</a></li><li><a title="Homes For Sale in Oxford, MA" href="/suburbs/oxford/">Oxford</a></li><li><a title="Homes For Sale in Paxton, MA" href="/suburbs/paxton/">Paxton</a></li><li><a title="Homes For Sale in Peabody, MA" href="/suburbs/peabody/">Peabody</a></li><li><a title="Homes For Sale in Pembroke, MA" href="/suburbs/pembroke/">Pembroke</a></li><li><a title="Homes For Sale in Pepperell, MA" href="/suburbs/pepperell/">Pepperell</a></li><li><a title="Homes For Sale in Plainville, MA" href="/suburbs/plainville/">Plainville</a></li><li><a title="Homes For Sale in Plymouth, MA" href="/suburbs/plymouth/">Plymouth</a></li><li><a title="Homes For Sale in Plympton, MA" href="/suburbs/plympton/">Plympton</a></li><li><a title="Homes For Sale in Princeton, MA" href="/suburbs/princeton/">Princeton</a></li><li><a title="Homes For Sale in Quincy, MA" href="/suburbs/quincy/">Quincy</a></li><li><a title="Homes For Sale in Randolph, MA" href="/suburbs/randolph/">Randolph</a></li><li><a title="Homes For Sale in Raynham, MA" href="/suburbs/raynham/">Raynham</a></li><li><a title="Homes For Sale in Reading, MA" href="/suburbs/reading/">Reading</a></li><li><a title="Homes For Sale in Rehoboth, MA" href="/suburbs/rehoboth/">Rehoboth</a></li><li><a title="Homes For Sale in Revere, MA" href="/suburbs/revere/">Revere</a></li><li><a title="Homes For Sale in Rochester, MA" href="/suburbs/rochester/">Rochester</a></li><li><a title="Homes For Sale in Rockland, MA" href="/suburbs/rockland/">Rockland</a></li><li><a title="Homes For Sale in Rockport, MA" href="/suburbs/rockport/">Rockport</a></li><li><a title="Homes For Sale in Rowley, MA" href="/suburbs/rowley/">Rowley</a></li><li><a title="Homes For Sale in Rutland, MA" href="/suburbs/rutland/">Rutland</a></li><li><a title="Homes For Sale in Salem, MA" href="/suburbs/salem/">Salem</a></li><li><a title="Homes For Sale in Salisbury, MA" href="/suburbs/salisbury/">Salisbury</a></li><li><a title="Homes For Sale in Saugus, MA" href="/suburbs/saugus/">Saugus</a></li><li><a title="Homes For Sale in Scituate, MA" href="/suburbs/scituate/">Scituate</a></li><li><a title="Homes For Sale in Seekonk, MA" href="/suburbs/seekonk/">Seekonk</a></li><li><a title="Homes For Sale in Sharon, MA" href="/suburbs/sharon/">Sharon</a></li><li><a title="Homes For Sale in Shirley, MA" href="/suburbs/shirley/">Shirley</a></li><li><a title="Homes For Sale in Shrewsbury, MA" href="/suburbs/shrewsbury/">Shrewsbury</a></li><li><a title="Homes For Sale in Somerset, MA" href="/suburbs/somerset/">Somerset</a></li><li><a title="Homes For Sale in Somerville, MA" href="/suburbs/somerville/">Somerville</a></li><li><a title="Homes For Sale in Southborough, MA" href="/suburbs/southborough/">Southborough</a></li><li><a title="Homes For Sale in Southbridge, MA" href="/suburbs/southbridge/">Southbridge</a></li><li><a title="Homes For Sale in Spencer, MA" href="/suburbs/spencer/">Spencer</a></li><li><a title="Homes For Sale in Sterling, MA" href="/suburbs/sterling/">Sterling</a></li><li><a title="Homes For Sale in Stoneham, MA" href="/suburbs/stoneham/">Stoneham</a></li><li><a title="Homes For Sale in Stoughton, MA" href="/suburbs/stoughton/">Stoughton</a></li><li><a title="Homes For Sale in Stow, MA" href="/suburbs/stow/">Stow</a></li><li><a title="Homes For Sale in Sturbridge, MA" href="/suburbs/sturbridge/">Sturbridge</a></li><li><a title="Homes For Sale in Sudbury, MA" href="/suburbs/sudbury/">Sudbury</a></li><li><a title="Homes For Sale in Sutton, MA" href="/suburbs/sutton/">Sutton</a></li><li><a title="Homes For Sale in Swampscott, MA" href="/suburbs/swampscott/">Swampscott</a></li><li><a title="Homes For Sale in Swansea, MA" href="/suburbs/swansea/">Swansea</a></li><li><a title="Homes For Sale in Taunton, MA" href="/suburbs/taunton/">Taunton</a></li><li><a title="Homes For Sale in Templeton, MA" href="/suburbs/templeton/">Templeton</a></li><li><a title="Homes For Sale in Tewksbury, MA" href="/suburbs/tewksbury/">Tewksbury</a></li><li><a title="Homes For Sale in Topsfield, MA" href="/suburbs/topsfield/">Topsfield</a></li><li><a title="Homes For Sale in Townsend, MA" href="/suburbs/townsend/">Townsend</a></li><li><a title="Homes For Sale in Tyngsborough, MA" href="/suburbs/tyngsborough/">Tyngsborough</a></li><li><a title="Homes For Sale in Upton, MA" href="/suburbs/upton/">Upton</a></li><li><a title="Homes For Sale in Uxbridge, MA" href="/suburbs/uxbridge/">Uxbridge</a></li><li><a title="Homes For Sale in Wakefield, MA" href="/suburbs/wakefield/">Wakefield</a></li><li><a title="Homes For Sale in Waltham, MA" href="/suburbs/waltham/">Waltham</a></li><li><a title="Homes For Sale in Wareham, MA" href="/suburbs/wareham/">Wareham</a></li><li><a title="Homes For Sale in Warren, MA" href="/suburbs/warren/">Warren</a></li><li><a title="Homes For Sale in Watertown, MA" href="/suburbs/watertown/">Watertown</a></li><li><a title="Homes For Sale in Wayland, MA" href="/suburbs/wayland/">Wayland</a></li><li><a title="Homes For Sale in Webster, MA" href="/suburbs/webster/">Webster</a></li><li><a title="Homes For Sale in Wellesley, MA" href="/suburbs/wellesley/">Wellesley</a></li><li><a title="Homes For Sale in Wenham, MA" href="/suburbs/wenham/">Wenham</a></li><li><a title="Homes For Sale in West Boylston, MA" href="/suburbs/west-boylston/">West Boylston</a></li><li><a title="Homes For Sale in West Bridgewater, MA" href="/suburbs/west-bridgewater/">West Bridgewater</a></li><li><a title="Homes For Sale in West Brookfield, MA" href="/suburbs/west-brookfield/">West Brookfield</a></li><li><a title="Homes For Sale in West Newbury, MA" href="/suburbs/west-newbury/">West Newbury</a></li><li><a title="Homes For Sale in Westborough, MA" href="/suburbs/westborough/">Westborough</a></li><li><a title="Homes For Sale in Westford, MA" href="/suburbs/westford/">Westford</a></li><li><a title="Homes For Sale in Westminster, MA" href="/suburbs/westminster/">Westminster</a></li><li><a title="Homes For Sale in Weston, MA" href="/suburbs/weston/">Weston</a></li><li><a title="Homes For Sale in Westport, MA" href="/suburbs/westport/">Westport</a></li><li><a title="Homes For Sale in Westwood, MA" href="/suburbs/westwood/">
315Westwood</a></li><li><a title="Homes For Sale in Weymouth, MA" href="/suburbs/weymouth/">Weymouth</a></li><li><a title="Homes For Sale in Whitman, MA" href="/suburbs/whitman/">Whitman</a></li><li><a title="Homes For Sale in Wilmington, MA" href="/suburbs/wilmington/">Wilmington</a></li><li><a title="Homes For Sale in Winchendon, MA" href="/suburbs/winchendon/">Winchendon</a></li><li><a title="Homes For Sale in Winchester, MA" href="/suburbs/winchester/">Winchester</a></li><li><a title="Homes For Sale in Winthrop, MA" href="/suburbs/winthrop/">Winthrop</a></li><li><a title="Homes For Sale in Woburn, MA" href="/suburbs/woburn/">Woburn</a></li><li><a title="Homes For Sale in Worcester, MA" href="/suburbs/worcester/">Worcester</a></li><li><a title="Homes For Sale in Wrentham, MA" href="/suburbs/wrentham/">Wrentham</a></li></ul></div><div class="tab-pane" id="tab-30028"><ul class="category-searches"><li><a title="Single Family Homes For Sale in Massachusetts" href="/property-type/single-homes/">Single-Family</a></li><li><a title="Condos For Sale in Massachusetts" href="/property-type/condos/">Condos</a></li><li><a title="Multy Family Homes For Sale in Massachusetts" href="/property-type/multy-family-homes/">Multi-Family Homes</a></li><li><a title="Land For Sale in Massachusetts" href="/property-type/land/">Land</a></li><li><a title="New Developments in Massachusetts" href="/new-developments/">New Developments</a></li><li><a title="Commercial Properties for Sale in Massachusetts" href="/property-type/commercial/">Commercial</a></li></ul></div></div><a href="/realestate/searchcategories/" title="View All Recommended Searches" class="usm-btn view-all">View all</a></div> 316 </div></div> 317</div> 318<div class="footWrap"> 319 <div id="footer"><div id="codewidget-203178" class="widget code codewidget container"><img src="https://s3.amazonaws.com/files.usmre.com/8974/img/logos/HammondRRE-white.png" alt="Hammond Residential Logo" height="400" width="600" loading="lazy"></div><div id="codewidget-203186" class="widget code codewidget container"><div class="footer-contact-wrapper"> 320 <div class="footer-contact"> 321 <div class="footer-contact-inner"> 322 <a href="tel:617-731-4644" class="phone"><i class="fal fa-phone"></i>617-731-4644</a> 323 <a href="/contact-us/"><i class="fal fa-envelope"></i>[email protected]</a> 324 </div> 325 </div> 326</div></div><div id="sociallinks-203179" class="widget sociallinks socialinkswidget flat container"><ul class="fa-social-links sm40"><li><a target="_blank" title="Facebook" href="https://www.facebook.com/HammondResidential/" class="fa-social-links fsml-facebook" rel="noopener nofollow"><i class="fa fa-facebook"></i><span class="sr-only">Facebook</span></a></li><li><a target="_blank" title="Linkedin" href="https://www.linkedin.com/company/hammond-residential/" class="fa-social-links fsml-linkedin" rel="noopener nofollow"><i class="fa fa-linkedin"></i><span class="sr-only">Linkedin</span></a></li><li><a target="_blank" title="Instagram" href="https://www.instagram.com/HammondChestnutHill/" class="fa-social-links fsml-instagram" rel="noopener nofollow"><i class="fa fa-instagram"></i><span class="sr-only">Instagram</span></a></li></ul></div><div id="menuwidget-203181" class="widget menu menuwidget bare container"><h3 class="widget-title">Properties</h3><div class="widget-inner"><ul role="menubar"><li role="presentation" class=" menu-item-143305"><a href="/listings/our-listings/" target="_self" role="menuitem">Exclusive Listings</a></li><li role="presentation" class=" menu-item-143306"><a href="/listings/" target="_self" role="menuitem">All Listings</a></li><li role="presentation" class=" menu-item-143307"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143308"><a href="/open-houses/" target="_self" role="menuitem">Open Houses</a></li></ul></div></div><div id="menuwidget-203182" class="widget menu menuwidget bare container"><h3 class="widget-title">Services</h3><div class="widget-inner"><ul role="menubar"><li role="presentation" class=" menu-item-142290"><a href="/buyers/" target="_self" role="menuitem">Buying A Home</a></li><li role="presentation" class=" menu-item-142291"><a href="/sellers/" target="_self" role="menuitem">Selling A Home</a></li><li role="presentation" class=" menu-item-142293"><a href="/home-worth/" target="_self" role="menuitem">Mortgage</a></li><li role="presentation" class=" menu-item-142295"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond / Coldwell Banker Magazines</a></li></ul></div></div><div id="menuwidget-203183" class="widget menu menuwidget bare container"><h3 class="widget-title">Communities</h3><div class="widget-inner"><ul role="menubar"><li role="presentation" class=" menu-item-143317"><a href="/listings/brookline-and-newton/" target="_self" role="menuitem">Brookline, Newton, and Chestnut Hill</a></li><li role="presentation" class=" menu-item-143318"><a href="/boston-neighborhoods/" target="_self" role="menuitem">Boston Neighborhoods and Greater Boston Towns</a></li><li role="presentation" class=" menu-item-143319"><a href="/listings/coming-soon/" target="_self" role="menuitem">Coming Soon Properties</a></li><li role="presentation" class=" menu-item-143320"><a href="/new-developments/" target="_self" role="menuitem">New Construction</a></li><li role="presentation" class=" menu-item-143321"><a href="/rentals/" target="_self" role="menuitem">Rentals</a></li><li role="presentation" class=" menu-item-143322"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li></ul></div></div><div id="menuwidget-203184" class="widget menu menuwidget bare container"><h3 class="widget-title">About Us</h3><div class="widget-inner"><ul role="menubar"><li role="presentation" class=" menu-item-142305"><a href="/realestate/agents/group/agents/" target="_self" role="menuitem">Our Agents</a></li><li role="presentation" class=" menu-item-142306"><a href="/realestate/offices/chestnut-hill/" target="_self" role="menuitem">Our Office</a></li><li role="presentation" class=" menu-item-144531"><a href="/realestate/agents/group/staff/" target="_self" role="menuitem">Management & Administrative Staff</a></li><li role="presentation" class=" menu-item-142307"><a href="/contact-us/" target="_self" role="menuitem">Contact Us</a></li><li role="presentation" class=" menu-item-142308"><a href="/hammond-magazines/" target="_self" role="menuitem">Hammond Magazines</a></li><li role="presentation" class=" menu-item-144836"><a href="/resources/" target="_self" role="menuitem">Resources</a></li></ul></div></div>
326<div id="codewidget-203185" class="widget code codewidget container"><p> 2009 - 2022 Hammond Residential Real Estate All Rights Reserved.<br>Hammond Residential Real Estate fully supports the principles of the Fair Housing Act and the Equal Opportunity Act. Operated by a subsidiary of NRT LLC.</p></div></div> 327</div> 328<footer class="usmWrap"> 329 <div id="group5"><div id="associations-203277" class="widget associations container"><div id="footer-logos" style="width: 100%"><div id="footer-logos-left-assoc"></div><div id="footer-logos-right-accred"></div><div id="footer-logos-right-custom"><img src="https://d3w216np43fnr4.cloudfront.net/8974/203277/1.png?version=1652955490" title="Association logos" alt="Association logos"/></div></div></div><div id="codewidget-203278" class="widget code codewidget container"><a href="/privacy-policy/">Privacy Policy</a></div><div id="usmlogo-203279" class="widget usmlogo container"><a href="https://www.unionstreetmedia.com/?utm_campaign=passive&utm_medium=usm-badge&utm_source=www.hammondre.com&utm_content=real-estate" rel="nofollow noopener" title="VT NH Real Estate Web Design" target="_blank"><img src="https://d1mlo4htassgww.cloudfront.net/i/usmtag/usm-short-white.png?version=1790337194" alt="Union Street Media Logo"/></a></div></div> 330</footer><div id="progress"><i class="fa fa-spinner fa-spin"></i></div>
330<script type="text/javascript"> 331 require(["jquery"], function ($) { 332 var $navbarToggle = $("#menuwidget-202698 .navbar-toggle"); 333 334 $navbarToggle.click(function () { 335 var target = $(this).data("target"); 336 $(target).parent("nav").toggleClass("active"); 337 if ($(target).parent("nav").hasClass("active")) { 338 $("body").addClass("modal-open"); 339 } else { 340 $("body.modal-open").removeClass("modal-open"); 341 } 342 }); 343 344 $("#menuwidget-202698 .menu-close").click(function (e) { 345 $navbarToggle.click(); 346 e.preventDefault(); 347 }); 348 349 $("#menuwidget-202698 li.has-children ul li").click(function (event) { 350 event.stopPropagation(); 351 }); 352 }); 353 354 require(["jquery"], function ($) { 355 var $navbarToggle = $("#menuwidget-202699 .navbar-toggle"); 356 357 $navbarToggle.click(function () { 358 var target = $(this).data("target"); 359 $(target).parent("nav").toggleClass("active"); 360 if ($(target).parent("nav").hasClass("active")) { 361 $("body").addClass("modal-open"); 362 } else { 363 $("body.modal-open").removeClass("modal-open"); 364 } 365 }); 366 367 $("#menuwidget-202699 .menu-close").click(function (e) { 368 $navbarToggle.click(); 369 e.preventDefault(); 370 }); 371 372 $("#menuwidget-202699 li.has-children ul li").click(function (event) { 373 event.stopPropagation(); 374 }); 375 }); 376 377 require(["jquery", "bootstrap"], function ($) { 378 if ($.fn.carousel === undefined && jQuery.fn.carousel !== undefined) { 379 $ = jQuery; 380 } 381 $("#carousel-203398 .carousel").carousel({ 382 "interval": 0 383 }); 384 $("#carousel-203398 .carousel-inner .item").each(function() { 385 this.style["-webkit-transition-duration"] = "1s"; 386 this.style["-moz-transition-duration"] = "1s"; 387 this.style["-o-transition-duration"] = "1s"; 388 this.style["transition-duration"] = "1s"; 389 }); 390 }); 391 392 // Searchable suggestions with a label values for the suggestion. 393 var SEARCHABLE_SUGGESTIONS_OPTIONS = { 394 usmCityAndState: '', 395 county: ' - County', 396 stateOrProvince: '', 397 usmNeighborhood: ' - Neighborhood', 398 postalCode: ' - Zip Code', 399 listingId: ' - MLS Number', 400 usmNonMlsId: ' - Internal ID', 401 elementarySchool: ' - Elementary School', 402 middleOrJuniorSchool: ' - Middle Or Junior High School', 403 usmArea: ' - Area', 404 address: ' - Address', 405 highSchool: ' - High School', 406 highSchoolDistrict: ' - School District', 407 usmVillage: ' - Village', 408 usmSubdivision: ' - Subdivision', 409 streetName: ' - Street', 410 usmComplex: ' - Complex', 411 usmPropertyName: ' - Property Name', 412 mlsAreaMinor: ' - MLS Area Minor', 413 mlsAreaMajor: ' - MLS Area Major', 414 offMarketData: ' - Off Market', 415 title: 'title', 416 agent: ' - Agent', 417 team: ' - Team', 418 } 419 420 var displayWaterBodyNameSuggestions = ''; 421 var showAgentsSearch = '0'; 422 423 if (displayWaterBodyNameSuggestions) { 424 SEARCHABLE_SUGGESTIONS_OPTIONS.waterBodyName = ' - Water Body Name'; 425 } 426 427 var suggestionResponse = null; 428 require(['jquery'], function($) { 429 /** 430 * Get current search mode based on active button 431 */ 432 function getCurrentSearchMode() { 433 if (showAgentsSearch === '1' && $('#agents-202702').hasClass('active')) { 434 return 'agents'; 435 } else if ($('#rentals-property-types-202702').hasClass('active')) { 436 return 'rentals'; 437 } else { 438 return 'sales'; 439 } 440 } 441 442 /** 443 * Filter out not supported suggestions. 444 * 445 * @param suggestions 446 * @returns {[]} 447 */ 448 function sanitizeSuggestions(suggestions) { 449 const sanitizedSuggestions = []; 450 if (suggestions && Array.isArray(suggestions)) { 451 for (var suggestionIndex in suggestions) { 452 var suggestion = suggestions[suggestionIndex]; 453 454 var suggestionType = suggestion.type; 455 // Filter out suggestions that are not currently supported 456 if (!SEARCHABLE_SUGGESTIONS_OPTIONS.hasOwnProperty(suggestionType)) { 457 continue; 458 } 459 460 sanitizedSuggestions.push(suggestion); 461 } 462 return sanitizedSuggestions; 463 } 464 465 return []; 466 } 467 468 /** 469 * Transform agents API response to suggestions format 470 */ 471 function transformAgentsToSuggestions(responseData) { 472 if (!Array.isArray(responseData?.agents) || !Array.isArray(responseData?.teams)) { 473 return []; 474 } 475 const data = [ 476 ...responseData.agents.map(agent => ({ ...agent, type: 'agent' })), 477 ...responseData.teams.map(team => ({ ...team, type: 'team' })) 478 ]; 479 480 return data.map((item) => ({ 481 label: item.name, 482 value: item.name, 483 type: item.type, 484 id: item.id, 485 slug: item.slug, 486 })); 487 } 488 489 /** 490 * Check if the parameter looks like an address (starts with digits followed by words) 491 */ 492 function shouldReduceByAddress(value) { 493 var addressPattern = /^\d+\s+\w+/i; 494 return addressPattern.test(value.trim()); 495 } 496 497 function fetchSuggestions(request, response) { 498 var param = request.term; 499 var requestPrefix = ''; 500 var isOMPEnabled = requestPrefix === 'OMP:'; 501 var searchMode = getCurrentSearchMode(); 502 503 // Restrict search length to minimum 2 characters before sending the request. 504 if (param.length < 2) { 505 // We do not store and show recent searches if OMP is enabled or in agents mode 506 var isRecentSearchesDisabled = isOMPEnabled || searchMode === 'agents'; 507 var recentSearches = isRecentSearchesDisabled ? [] : JSON.parse(window.localStorage.getItem('lastSearches')); 508 509 if (recentSearches && recentSearches.length > 0) { 510 recentSearches.unshift({label: 'Recent Searches', value: 'Recent Searches', type: 'title'}) 511 response(recentSearches); 512 } else { 513 response([{label: 'The search word must be at least 3 characters long.', noResults: true}]); 514 } 515 } else { 516 // Different API endpoints based on search mode 517 var baseUrl = ''; 518 var requestData = {}; 519 520 if (searchMode === 'agents') { 521 baseUrl = '/api/suggestions/teams/'; 522 requestData = { 523 q: param, 524 }; 525 } else { 526 baseUrl = '/api/suggestions/'; 527 requestData = { 528 q: requestPrefix + param 529 }; 530 531 if (shouldReduceByAddress(param)) { 532 requestData.reduce = 'usmFullAddress'; 533 } 534 } 535 536 $.ajax({ 537 dataType: 'json', 538 url: baseUrl, 539 data: requestData, 540 type: 'GET', 541 timeout: 10000, 542 success: function(data) { 543 var suggestions = []; 544 545 if (searchMode === 'agents') { 546 // Transform agents response 547 suggestions = transformAgentsToSuggestions(data); 548 } else { 549 // Regular suggestions 550 if (data.suggestions && data.suggestions.length > 0) { 551 suggestions = sanitizeSuggestions(data.suggestions); 552 } 553 } 554 555 if (suggestions.length > 0) { 556 // Set the suggestion response to the first suggestion 557 suggestionResponse = suggestions[0]; 558 response(suggestions); 559 } else { 560 // No results from API 561 var noResultsMessage = searchMode === 'agents' ? 'No agents found.' : 'Enter another region.'; 562 response([{label: noResultsMessage, noResults: true}]); 563 } 564 }, 565 error: function() { 566 response([{label: 'Problem contacting server, please refresh and try again.', noResults: true}]); 567 $('.autosuggest-loader').removeClass('fal fa-spinner fa-pulse'); 568 $('.autosuggest-loader').addClass('fal fa-exclamation-triangle'); 569 } 570 }); 571 } 572 } 573 574 $('#autosuggest-search-query-202702').autocomplete({ 575 source: function(request, response) { 576 fetchSuggestions(request, response); 577 }, 578 minLength: 0, 579 open: function() {
580 inputWidth = $('#autosuggest-search-query-202702').outerWidth(); 581 $('ul.ui-menu').css( 'width', inputWidth ); 582 }, 583 search: function(event, ui) { 584 $('.autosuggest-loader').addClass('fal fa-spinner fa-pulse'); 585 }, 586 response: function(event, ui) { 587 $('.autosuggest-loader').removeClass('fal fa-spinner fa-pulse'); 588 }, 589 position: { 590 offset: '0 -6' 591 }, 592 autoFocus: true, 593 messages: { 594 //These messages are for accessability and are not visible in the UI (with proper styling). 595 noResults: 'No options found.', 596 results: function(amount) { 597 return amount + (amount > 1 ? ' results ' : ' result ') + 'found.' 598 } 599 }, 600 delay: 300 601 }).focus(function() { 602 $(this).autocomplete('search', $(this).val()); 603 }).data('ui-autocomplete')._renderItem = function(ul, item) { 604 let txt = String(item.label); 605 606 if (item.type) { 607 txt = txt.replace(new RegExp(this.term, 'gi'),'<b>$&</b>'); 608 } 609 610 var type = item.type; 611 612 if (SEARCHABLE_SUGGESTIONS_OPTIONS.hasOwnProperty(type)) { 613 type = SEARCHABLE_SUGGESTIONS_OPTIONS[type]; 614 615 if (type == 'listingId') { 616 txt = txt.toUpperCase(); 617 } 618 } else { 619 type = ''; 620 } 621 622 if (type === 'title') { 623 return $('<li></li>') 624 .append('<div class="item-title"><b>' + txt + '</b></div>') 625 .appendTo(ul); 626 } 627 628 var status = ''; 629 if (item.standardStatus && item.standardStatus.length === 1 && item.standardStatus[0] === 'Closed') { 630 status = ' <span class="ui-status">Sold</span>'; 631 } 632 633 const itemNoResultsClassName = !!item?.noResults ? 'autosuggest-item-no-result' : ''; 634 635 return $(`<li class='${itemNoResultsClassName}'></li>`) 636 .data('ui-autocomplete-item', item) 637 .append('<a>' + txt + '<span>' + type + '</span>' + status + '</a>') 638 .appendTo(ul); 639 }; 640 }); 641 642 require(['jquery'], function($) { 643 var stateMap = JSON.parse('{"Alabama":"AL","Alaska":"AK","Arizona":"AZ","Arkansas":"AR","Bahamas":"BS","California":"CA","Colorado":"CO","Connecticut":"CT","Delaware":"DE","D.C.":"DC","Florida":"FL","Georgia":"GA","Hawaii":"HI","Idaho":"ID","Illinois":"IL","Indiana":"IN","Iowa":"IA","Kansas":"KS","Kentucky":"KY","Louisiana":"LA","Maine":"ME","Maryland":"MD","Massachusetts":"MA","Michigan":"MI","Minnesota":"MN","Mississippi":"MS","Missouri":"MO","Montana":"MT","Nebraska":"NE","Nevada":"NV","New Hampshire":"NH","New Jersey":"NJ","New Mexico":"NM","New York":"NY","North Carolina":"NC","North Dakota":"ND","Ohio":"OH","Oklahoma":"OK","Oregon":"OR","Pennsylvania":"PA","Rhode Island":"RI","South Carolina":"SC","South Dakota":"SD","Tennessee":"TN","Texas":"TX","Utah":"UT","Vermont":"VT","Virginia":"VA","Washington":"WA","West Virginia":"WV","Wisconsin":"WI","Wyoming":"WY","Alberta":"AB","British Columbia":"BC","Manitoba":"MB","New Brunswick":"NB","Newfoundland and Labrador":"NL","Nova Scotia":"NS","Ontario":"ON","Prince Edward Island":"PE","Quebec":"QC","Saskatchewan":"SK"}'); 644 const MAX_RECENT_SEARCHES_CACHED = 5; 645 var showAgentsSearch = '0'; 646 647 function getCurrentSearchMode() { 648 if (showAgentsSearch === '1' && $('#agents-202702').hasClass('active')) { 649 return 'agents'; 650 } else if ($('#rentals-property-types-202702').hasClass('active')) { 651 return 'rentals'; 652 } else { 653 return 'sales'; 654 } 655 } 656 657 /** 658 * Update placeholder based on current search mode 659 */ 660 function updatePlaceholder() { 661 var searchMode = getCurrentSearchMode(); 662 var searchInput = $('#autosuggest-search-query-202702'); 663 var placeholder = ''; 664 665 switch(searchMode) { 666 case 'agents': 667 placeholder = 'Search for agents by name'; 668 break; 669 case 'rentals': 670 case 'sales': 671 default: 672 placeholder = `City/Town, Zipcode, Neighborhood/Area...`; 673 break; 674 } 675 676 searchInput.attr('placeholder', placeholder); 677 } 678 679 function getStateAbbreviation(stateName) { 680 if (!stateName) { 681 return null; 682 } 683 684 if (!stateMap.hasOwnProperty(stateName)) { 685 return null; 686 } 687 688 return stateMap[stateName]; 689 } 690
691 function goToDetailView(filter) { 692 var baseUrl = '/api/listings/'; 693 // We should use this replace in order to divide params into array in the ListingSearch.php in the V2 694 filter = filter.replace(/\S&\S/g, function (tmpVal) { 695 return tmpVal.replace(/&/g, '#'); 696 }); 697 filter = encodeURIComponent(filter); 698 $.ajax({ 699 dataType: 'json', 700 url: baseUrl + '?suggestionFilter=' + filter, 701 type: 'GET', 702 success: function(data) { 703 if (!Array.isArray(data.listings)) { 704 return; 705 } 706 707 if (data.listings.length === 1) { 708 window.location.href = data.listings[0].usmDetailPath; 709 710 return; 711 } 712 713 if (data.listings.length > 1) { 714 window.location.href = '/listings/' + '?suggestionFilter=' + filter; 715 716 return; 717 } 718 } 719 }); 720 } 721 722 function getCityAndStatePath(value) { 723 var array = value.split(' '); 724 725 const state = array.pop().toLowerCase(); 726 const city = array.join('-').toLowerCase(); 727 728 return state + '/' + city + '/'; 729 } 730 731 function parseFilterString(filterString) { 732 var filters = {}; 733 if (!filterString) { 734 return filters; 735 } 736 filterString.split('&').forEach(function(f) { 737 var parts = f.split('='); 738 if (parts.length >= 2) { 739 var name = parts[0].match(/\[(.*?)\]/)?.[1]; 740 if (name) { 741 filters[name] = decodeURIComponent(parts.slice(1).join('=')); 742 } 743 } 744 }); 745 return filters; 746 } 747 748 function getStateAbbrFromFilterValue(stateValue) { 749 if (!stateValue) { 750 return null; 751 } 752 var abbr = getStateAbbreviation(stateValue); 753 if (abbr) { 754 return abbr.toLowerCase(); 755 } 756 if (stateValue.length === 2) { 757 return stateValue.toLowerCase(); 758 } 759 return null; 760 } 761 762 /** 763 * Build url with path based on the selected suggestion. 764 * 765 */ 766 function getUrlPath(suggestion) { 767 let path = ''; 768 switch (suggestion.type) { 769 case 'cityAndState': 770 path += getCityAndStatePath(suggestion.value); 771 772 return path; 773 case 'stateOrProvince': 774 var stateAbbreviation = getStateAbbreviation(suggestion.value); 775 776 if (stateAbbreviation && stateAbbreviation.length == 2) { 777 path += stateAbbreviation.toLowerCase() + '/'; 778 } 779 780 return path; 781 case 'neighborhood': 782 case 'village': 783 path += convertFilterString(suggestion.filter); 784 785 return path; 786 case 'county': { 787 var filters = parseFilterString(suggestion.filter); 788 var county = filters.county; 789 var stateAbbr = getStateAbbrFromFilterValue(filters.stateOrProvince); 790 if (county && stateAbbr) { 791 var countySlug = county.replace(/\s+county$/i, '').toLowerCase().replace(/\s+/g, '-') + '-county'; 792 path = stateAbbr + '/' + countySlug + '/'; 793 } 794 return path; 795 } 796 case 'postalCode': { 797 var filters = parseFilterString(suggestion.filter); 798 var postalCode = filters.postalCode; 799 var stateAbbr = getStateAbbrFromFilterValue(filters.stateOrProvince); 800 if (postalCode && stateAbbr) { 801 path = stateAbbr + '/' + postalCode + '/'; 802 } 803 return path; 804 } 805 default: 806 return path; 807 } 808 } 809 810 function convertFilterString(filterString) { 811 if (!filterString) { 812 return ''; 813 } 814 815 const filters = filterString.split('&'); 816 const suggestionFilters = filters.map(filter => { 817 const filterPart = filter.split('='); 818 819 if (filterPart.length !== 2) { 820 return null; 821 } 822 823 const [key, value] = filterPart; 824 const name = key.match(/\[(.*?)\]/)?.[1]; 825 826 if (!name) return null; 827 828 return name === 'cityAndState' || name === 'usmCityAndState' 829 ? getCityAndStatePath(value) + '?' 830 : name + '=' + value ; 831 }); 832 833 return getPathFromFilters(suggestionFilters); 834 } 835 836 function getPathFromFilters(suggestionFilters) { 837 if (!suggestionFilters || suggestionFilters.length === 0) { 838 return ''; 839 } 840 841 const cityAndStateItem = suggestionFilters.find(item => item.includes('/?')); 842 843 if (!cityAndStateItem) { 844 return '?' + suggestionFilters.join('&'); 845 } 846 847 const filtersWithoutCityAndState = suggestionFilters.filter(item => item !== cityAndStateItem); 848 849 return cityAndStateItem + filtersWithoutCityAndState.join('&'); 850 } 851 852 function getPropertyDetailPathFromOffMarketSuggestion(suggestion) { 853 if (!suggestion) { 854 return ''; 855 } 856 857 const { value, filter } = suggestion; 858 const startIndex = filter?.indexOf('=') + 1; 859 const usmPid = filter?.substring(startIndex); 860 861 const address = value?.split(' ') 862 ?.map(function(word) { return word.toLowerCase() }) 863 ?.join('-') || ''; 864 865 return '/property/' + address + '/' + usmPid + '/'; 866 }; 867 868 function submitSearch(e, item) { 869 e.preventDefault(); 870 871 if (!item) { 872 return; 873 } 874 875 // If the item has no type, it's an error message and shouldn't send anywhere 876 if (!item.type) { 877 return; 878 } 879 880 var searchMode = getCurrentSearchMode(); 881
882 // Finish the input in case a selection was made without completing it 883 $('#autosuggest-search-query').val(item.type === 'listingId' ? item.value.toUpperCase() : item.label); 884 885 if (item.type === 'agent' || item.type === 'team') { 886 window.location.href = `/realestate/${item.type}/${item.slug}/`; 887 888 return; 889 } 890 891 // Send to detail view if MLS Number 892 if (item.type === 'listingId' || item.type === 'address' || item.type === 'usmPropertyName' || item.type === 'usmNonMlsId') { 893 var filter = item.filter; 894 895 if (item.standardStatus && item.standardStatus.length > 0) { 896 var statusList = Array.isArray(item.standardStatus) 897 ? item.standardStatus 898 : [item.standardStatus]; 899 // It is very common for listings other than 'Active 'to being filtered out, so we need to add this filter to ensure that they are returned by the listings api 900 filter += (filter !== '' ? '&' : '') + 'filter[standardStatus]=' + statusList.join(','); 901 } 902 goToDetailView(filter); 903 904 return; 905 } else if (item.type === 'offMarketData') { 906 const propertyPath = getPropertyDetailPathFromOffMarketSuggestion(item); 907 908 window.location.href = propertyPath; 909 910 return; 911 } 912 913 item.type = item.type.replace('usmCityAndState', 'cityAndState') 914 .replace('usmNeighborhood', 'neighborhood') 915 .replace('usmVillage', 'village') 916 .replace('usmSubdivision', 'subdivision') 917 .replace('usmComplex', 'complex'); 918 919 if (item.type === 'cityAndState') { 920 item.value = item.value.replace(', ', ' '); 921 } 922 923 path = getUrlPath(item); 924 925 // Don't save agents to recent searches 926 if (searchMode !== 'agents') { 927 var searches = [Object.assign({}, item)]; 928 var storedSearches = JSON.parse(localStorage.getItem('lastSearches')); 929 930 if (storedSearches) { 931 searches = storedSearches.filter(function(storedSearch) { 932 storedSearch.value !== item.value 933 }); 934 storedSearches = searches.length <= (MAX_RECENT_SEARCHES_CACHED - 1) 935 ? searches 936 : searches.slice(0,-1); 937 searches = [Object.assign({}, item), ...storedSearches]; 938 } 939 940 localStorage.setItem('lastSearches', JSON.stringify(searches)); 941 } 942 943 var propertyTypeFilter = ''; 944 var displaySalesRentalsToggle = ''; 945 946 if (displaySalesRentalsToggle && searchMode !== 'agents') { 947 var forSalePropertyTypes = ''; 948 var rentalsPropertyTypes = ''; 949 var forSaleLabel = 'Sales'; 950 var rentalsLabel = 'Rentals'; 951 var agentsLabel = ''; 952 var propertyTypes = $('#sales-property-types-202702').hasClass('active') ? forSalePropertyTypes : rentalsPropertyTypes; 953 954 if (propertyTypes) { 955 var urlPathTypes = ['cityAndState', 'county', 'postalCode']; 956 if (urlPathTypes.indexOf(item.type) !== -1 && !propertyTypes.includes(',')) { 957 path = path + propertyTypes.toLowerCase() + '/'; 958 } else { 959 propertyTypeFilter = 'propertyTypes=' + propertyTypes; 960 } 961 } 962 } 963 964 var fullPath = ''; 965 if (path.length > 0) { 966 var separator = path.indexOf('?') !== -1 ? '&' : '?'; 967 fullPath = '/listings/' + path + separator +'' + propertyTypeFilter; 968 } else { 969 fullPath = '/listings/?' + item.type + '=' + encodeURIComponent(item.value) + '&' + propertyTypeFilter; 970 } 971 972 // Remove trailing ? or & 973 const lastChar = fullPath.charAt(fullPath.length - 1); 974 if (lastChar === '?' || lastChar === '&') { 975 fullPath = fullPath.slice(0, -1); 976 } 977 978 window.location.href = fullPath; 979 } 980 981 $('.widget-autosuggest').on('submit', function(e) { 982 submitSearch(e, suggestionResponse); 983 }); 984 985 $('.widget-autosuggest').on('autocompleteselect', function(e, ui) { 986 submitSearch(e, ui.item); 987 }); 988 989 var salesPropertyTypesButton = $('#sales-property-types-202702'); 990 var rentalPropertyTypesButton = $('#rentals-property-types-202702'); 991 var agentsButton = $('#agents-202702'); 992 993 // Function to clear search and refresh autocomplete 994 function clearSearchAndRefresh() { 995 $('#autosuggest-search-query-202702').val('').autocomplete('search', ''); 996 } 997
998 const buttons = [salesPropertyTypesButton, rentalPropertyTypesButton]; 999 if (showAgentsSearch === '1') { 1000 buttons.push(agentsButton); 1001 } 1002 1003 function setActiveButton(activeButton, buttons) { 1004 $.each(buttons, function(index, btn) { 1005 btn.removeClass('active'); 1006 }); 1007 activeButton.addClass('active'); 1008 updatePlaceholder(); 1009 clearSearchAndRefresh(); 1010 } 1011 1012 salesPropertyTypesButton.on('click', function() { 1013 setActiveButton(salesPropertyTypesButton, buttons); 1014 }); 1015 1016 rentalPropertyTypesButton.on('click', function() { 1017 setActiveButton(rentalPropertyTypesButton, buttons); 1018 }); 1019 1020 // Only add event handler if agents search is enabled 1021 if (showAgentsSearch === '1') { 1022 agentsButton.on('click', function() {
1023 setActiveButton(agentsButton, buttons); 1024 }); 1025 } 1026 1027 // Initialize placeholder on document ready 1028 $(document).ready(function() { 1029 updatePlaceholder(); 1030 }); 1031 }); 1032 1033 require(["jquery", "usm", "bootstrap"], function ($, usm) { 1034 if (usm.touchSupport) { 1035 require(["bootstraptabcollapse"], function() { 1036 $(document).ready(function() { 1037 var tab = $("#recsearch-203290 .nav-tabs"); 1038 1039 if (tab) { 1040 tab.tabCollapse(); 1041 1042 //It is a specific task for adding category class for the rec search items by category name 1043 tab.on("shown-accordion.bs.tabcollapse", function(e) { 1044 let tabPanel = document.querySelectorAll("#recsearch-203290 .panel-group .panel"); 1045 1046 if (tabPanel) { 1047 let classList = []; 1048 1049 e.target.querySelectorAll("li").forEach((li) => { 1050 li.className.split(' ').forEach((className) => { 1051 if (!classList.includes(className) && className.indexOf("recsearch-category-") !== -1) { 1052 classList.push(className); 1053 } 1054 }); 1055 }); 1056 1057 tabPanel.forEach((panel, index) => { 1058 if (!panel.classList.contains(classList[index])) { 1059 panel.classList.add(classList[index]); 1060 } 1061 }); 1062 } 1063 }); 1064 } 1065 }); 1066 }); 1067 } 1068 }); 1069 1070 require(["jquery", "usm", "bootstrap"], function ($, usm) { 1071 if (usm.touchSupport) { 1072 require(["bootstraptabcollapse"], function() { 1073 $(document).ready(function() { 1074 var tab = $("#recsearch-203287 .nav-tabs"); 1075 1076 if (tab) { 1077 tab.tabCollapse(); 1078 1079 //It is a specific task for adding category class for the rec search items by category name 1080 tab.on("shown-accordion.bs.tabcollapse", function(e) { 1081 let tabPanel = document.querySelectorAll("#recsearch-203287 .panel-group .panel"); 1082 1083 if (tabPanel) { 1084 let classList = []; 1085 1086 e.target.querySelectorAll("li").forEach((li) => { 1087 li.className.split(' ').forEach((className) => { 1088 if (!classList.includes(className) && className.indexOf("recsearch-category-") !== -1) { 1089 classList.push(className); 1090 } 1091 }); 1092 }); 1093 1094 tabPanel.forEach((panel, index) => { 1095 if (!panel.classList.contains(classList[index])) { 1096 panel.classList.add(classList[index]); 1097 } 1098 }); 1099 } 1100 }); 1101 } 1102 }); 1103 }); 1104 } 1105 }); 1106 var URI = "/user/login/";require(['usm', 'usm.user'], function (usm) { usm.user.setModal(true); });require(["jquery"], function ($) { $("body").addClass("js"); });</script>
1106<script type="text/javascript">require(["https://d1nn5t56all1qd.cloudfront.net/8974/js/custom.js?version=1694525733"]);</script>
1106</body> 1107</html><!-- You're on: Some other server - 172.18.22.9 - www.hammondre.com Time: 0.742 -->
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.