PageSourceSearch

https://www.hammondre.com/user/login/

html hammondre.com collected 2026-09-26 10:09:27 UTC 128,240 bytes, 1,107 lines download raw bytes

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="&#10;                                Search: City/Town, Zipcode, Neighborhood/Area...&#10;                                Use Up and Down to choose options,&#10;                                press Enter to select the currently focused option,&#10;                                press Escape to exit the menu,&#10;                                press Tab to select the option and exit the menu.&#10;                            " 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&#38;utm_medium=usm-badge&#38;utm_source=www.hammondre.com&#38;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.