Sniffing & Spoofing

BetterCap – A complete, modular, portable and easily extensible MITM framework

BetterCap is an attempt to create a complete, modular, portable and easily extensible MITM framework with every kind of features could be needed while performing a man in the middle attack.
It’s currently able to sniff and print from the network the following informations:

  • URLs being visited.
  • HTTPS host being visited.
  • HTTP POSTed data.
  • FTP credentials.
  • IRC credentials.
  • POP, IMAP and SMTP credentials.
  • NTLMv1/v2 ( HTTP, SMB, LDAP, etc ) credentials.

Examples:
Default sniffer mode, all parsers enabled:

sudo ruby bettercap.rb --proxy

Enable proxy and use a custom port:

sudo ruby bettercap.rb --proxy --proxy-port=8081

Enable proxy and load the module example_proxy_module.rb:

sudo ruby bettercap.rb --proxy --proxy-module=example_proxy_module.rb

Disable spoofer and enable proxy ( stand alone proxy mode ):

sudo ruby bettercap.rb -S NONE --proxy

Modules – You can easily implement a module to inject data into pages or just inspect the requests/responses creating a ruby file and passing it to bettercap with the –proxy-module argument, the following is a sample module that injects some contents into the title tag of each html page.

class HackTitle < Proxy::Module
    def initialize
        # do your initialization stuff here
    end
    # self explainatory
    def is_enabled?
        return true
    end
    def on_request request, response
        # is an html page?
        if response.content_type == "text/html"
            Logger.info "Hacking #{http://#{request.host}#{request.url}} title tag"
            # make sure to use sub! or gsub! to update the instance
            response.body.sub!( "", "<title> !!! HACKED !!! " )
        end
    end
end
</pre>
<p>Depends:</p>
<ul>
<li>colorize (gem install colorize)</li>
<li>packetfu (gem install packetfu)</li>
<li>pcaprub (gem install pcaprub) [sudo apt-get install ruby-dev libpcap-dev]</li>
</ul>
<p>Download BetterCap at Github Repo: <a href="https://github.com/evilsocket/bettercap" target="_blank" rel="noopener noreferrer">EvilSocket</a></p>
<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-facebook"><a rel="nofollow noopener noreferrer" data-shared="sharing-facebook-2505" class="share-facebook sd-button share-icon" href="https://www.jameseduard.com/bettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework/?share=facebook" target="_blank" title="Click to share on Facebook" ><span>Facebook</span></a></li><li class="share-x"><a rel="nofollow noopener noreferrer" data-shared="sharing-x-2505" class="share-x sd-button share-icon" href="https://www.jameseduard.com/bettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework/?share=x" target="_blank" title="Click to share on X" ><span>X</span></a></li><li class="share-end"></li></ul></div></div></div><div class="post-ads-after post-ads default-position">
<!-- JEA Horizontal Ads -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-3116476424964638"
     data-ad-slot="6727585527"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
</div><div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='like-post-wrapper-176721193-2505-669688794bf81' data-src='https://widgets.wp.com/likes/?ver=13.6#blog_id=176721193&post_id=2505&origin=www.jameseduard.com&obj_id=176721193-2505-669688794bf81&n=1' data-name='like-post-frame-176721193-2505-669688794bf81' data-title='Like or Reblog'><h3 class="sd-title">Like this:</h3><div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>Like</span></span> <span class="loading">Loading...</span></div><span class='sd-text-color'></span><a class='sd-link-color'></a></div>
<div id='jp-relatedposts' class='jp-relatedposts' >
	
</div>		
	</div>

	<footer class="entry-footer">

					<span class="tag-links" itemprop="keywords">
				<span>Tags: </span>
									<a href="https://www.jameseduard.com/tag/irc/">#IRC</a>
									<a href="https://www.jameseduard.com/tag/mitm/">#MITM</a>
									<a href="https://www.jameseduard.com/tag/mitm-framework/">#MITM framework.</a>
									<a href="https://www.jameseduard.com/tag/ntlmv1/">#NTLMv1</a>
									<a href="https://www.jameseduard.com/tag/sniffer/">#sniffer</a>
									<a href="https://www.jameseduard.com/tag/sniffing/">#sniffing</a>
							</span>
		
	</footer>

</article><!-- #post-## -->

						<div class="entry-share">
			<ul>
				<li class="twitter"><a href="https://twitter.com/intent/tweet?text=BetterCap+%26%238211%3B+A+complete%2C+modular%2C+portable+and+easily+extensible+MITM+framework&url=https%3A%2F%2Fwww.jameseduard.com%2Fbettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework%2F" target="_blank"><i class="fa fa-twitter"></i> <span>Twitter</span></a></li>
				<li class="facebook"><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.jameseduard.com%2Fbettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework%2F" target="_blank"><i class="fa fa-facebook"></i> <span>Facebook</span></a></li>
				<li class="google-plus"><a href="https://plus.google.com/share?url=https%3A%2F%2Fwww.jameseduard.com%2Fbettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework%2F" target="_blank"><i class="fa fa-google-plus"></i> <span>Google+</span></a></li>
				<li class="linkedin"><a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.jameseduard.com%2Fbettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework%2F&title=BetterCap+%26%238211%3B+A+complete%2C+modular%2C+portable+and+easily+extensible+MITM+framework" target="_blank"><i class="fa fa-linkedin"></i> <span>Linkedin</span></a></li>
				<li class="pinterest"><a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fwww.jameseduard.com%2Fbettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework%2F&media=" target="_blank"><i class="fa fa-pinterest"></i> <span>Pinterest</span></a></li>
				<li class="email"><a href="mailto:?subject=http://%5BJames+Eduard%5D+BetterCap+%26%238211%3B+A+complete%2C+modular%2C+portable+and+easily+extensible+MITM+framework&body=http://https%3A%2F%2Fwww.jameseduard.com%2Fbettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework%2F"><i class="fa fa-envelope"></i> <span>Email</span></a></li>
			</ul>
		</div>
	
					<div class="post-pagination">

					<div class="prev-post">

									<a class="thumbnail-link" href="https://www.jameseduard.com/snitch-a-tool-which-automate-information-gathering/"></a>
				
				<div class="post-detail">
					<span>Previous Post</span>
					<a href="https://www.jameseduard.com/snitch-a-tool-which-automate-information-gathering/" class="post-title">Snitch – A tool which automate Information Gathering</a>
				</div>

			</div>
		
					<div class="next-post">

									<a class="thumbnail-link" href="https://www.jameseduard.com/passgen-random-character-generator-crunch-which-attempts-to-solve-cracking-wpawpa2/"></a>
				
				<div class="post-detail">
					<span>Next Post</span>
					<a href="https://www.jameseduard.com/passgen-random-character-generator-crunch-which-attempts-to-solve-cracking-wpawpa2/" class="post-title">Passgen – Random character generator Crunch which attempts to solve cracking WPA/WPA2</a>
				</div>

			</div>
		
	</div>

				
				
				
<div id="comments" class="comments-area">

	
	
	
		<div id="respond" class="comment-respond">
		<h3 id="reply-title" class="comment-reply-title">Post Comment <small><a rel="nofollow" id="cancel-comment-reply-link" href="/bettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://www.jameseduard.com/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-form-comment"><label for="comment">Comment <span class="required">*</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required></textarea></p><p class="comment-form-author"><label for="author">Name <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p>
<p class="comment-form-email"><label for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" autocomplete="email" required /></p>
<p class="comment-form-url"><label for="url">Website</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p>
<p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='2505' id='comment_post_ID' />
<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
</p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="c139f06a82" /></p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="175"/></p></form>	</div><!-- #respond -->
	
</div><!-- #comments -->

			
		</main><!-- #main -->
	</div><!-- #primary -->


<div id="secondary" class="sidebar-primary" aria-label="Primary Sidebar" role="complementary" itemscope="itemscope" itemtype="http://schema.org/WPSideBar">
	<aside id="block-41" class="widget widget_block">
<ul class="wp-block-social-links has-large-icon-size is-layout-flex wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a href="https://www.linkedin.com/in/jameseduardandaya/" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-twitter  wp-block-social-link"><a href="https://twitter.com/pir8g33k" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Twitter</span></a></li>

<li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a href="https://www.facebook.com/JamesEduardAndaya" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-feed  wp-block-social-link"><a href="https://www.jameseduard.com/feed/" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M2,8.667V12c5.515,0,10,4.485,10,10h3.333C15.333,14.637,9.363,8.667,2,8.667z M2,2v3.333 c9.19,0,16.667,7.477,16.667,16.667H22C22,10.955,13.045,2,2,2z M4.5,17C3.118,17,2,18.12,2,19.5S3.118,22,4.5,22S7,20.88,7,19.5 S5.882,17,4.5,17z"></path></svg><span class="wp-block-social-link-label screen-reader-text">RSS Feed</span></a></li></ul>
</aside><aside id="media_image-2" class="widget widget_media_image"><h3 class="widget-title">HackTheBox Badge</h3><a href="https://www.hackthebox.eu/home/users/profile/123880"><img class="image " src="https://www.hackthebox.eu/badge/image/123880" alt="HTB Badge" width="220" height="50" decoding="async" /></a></aside><aside id="media_image-4" class="widget widget_media_image"><a href="https://www.rootcon.org/"><img width="300" height="250" src="https://i0.wp.com/www.jameseduard.com/wp-content/uploads/2020/05/Banner2.gif?fit=300%2C250&ssl=1" class="image wp-image-3977  attachment-full size-full" alt="" style="max-width: 100%; height: auto;" decoding="async" /></a></aside>
		<aside id="recent-posts-2" class="widget widget_recent_entries">
		<h3 class="widget-title">Recent Posts</h3>
		<ul>
											<li>
					<a href="https://www.jameseduard.com/how-to-add-dkim-and-dmarc-for-onmicrosoft-com-domain-in-microsoft-365/">How to Add DKIM and DMARC for onmicrosoft.com Domain in Microsoft 365</a>
									</li>
											<li>
					<a href="https://www.jameseduard.com/how-to-read-windows-defender-event-logs-using-windeflogview/">How to Read Windows Defender Event Logs Using WinDefLogView</a>
									</li>
											<li>
					<a href="https://www.jameseduard.com/how-to-enable-windows-smartscreen-with-intune/">How to Enable Windows SmartScreen with Intune</a>
									</li>
											<li>
					<a href="https://www.jameseduard.com/how-to-view-windows-defender-offline-scan-results/">How to View Windows Defender Offline Scan Results</a>
									</li>
											<li>
					<a href="https://www.jameseduard.com/how-to-create-users-in-microsoft-365/">How to Create Users in Microsoft 365 Cloud</a>
									</li>
					</ul>

		</aside><aside id="nav_menu-4" class="widget widget_nav_menu"><h3 class="widget-title">Categories</h3><div class="menu-categories-container"><ul id="menu-categories" class="menu"><li id="menu-item-4601" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4601"><a href="https://www.jameseduard.com/category/azure/">Azure</a></li>
<li id="menu-item-4602" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4602"><a href="https://www.jameseduard.com/category/devops/">DevOps</a></li>
<li id="menu-item-4603" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4603"><a href="https://www.jameseduard.com/category/docker/">Docker</a></li>
<li id="menu-item-4604" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4604"><a href="https://www.jameseduard.com/category/how-tos/">How To’s</a></li>
<li id="menu-item-4596" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4596"><a href="https://www.jameseduard.com/category/linux/">Linux</a></li>
<li id="menu-item-4597" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4597"><a href="https://www.jameseduard.com/category/malware/">Malware</a></li>
<li id="menu-item-4598" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4598"><a href="https://www.jameseduard.com/category/network-security/">Network Security</a></li>
<li id="menu-item-4599" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4599"><a href="https://www.jameseduard.com/category/powershell/">Powershell</a></li>
<li id="menu-item-4600" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4600"><a href="https://www.jameseduard.com/category/security/">Security</a></li>
</ul></div></aside><aside id="block-28" class="widget widget_block"><p><a href="https://namecheap.pxf.io/c/2068671/1130493/5618" target="_top" id="1130493"><img fetchpriority="high" decoding="async" src="//a.impactradius-go.com/display-ad/5618-1130493" border="0" alt="" width="300" height="250"></a><img decoding="async" height="0" width="0" src="https://namecheap.pxf.io/i/2068671/1130493/5618" style="position:absolute;visibility:hidden;" border="0"></p></aside><aside id="block-27" class="widget widget_block"><p><a href="https://1.envato.market/c/2068671/528319/4415" target="_top" id="528319"><img decoding="async" src="//a.impactradius-go.com/display-ad/4415-528319" border="0" alt="" width="300" height="250"></a><img loading="lazy" decoding="async" height="0" width="0" src="https://1.envato.market/i/2068671/528319/4415" style="position:absolute;visibility:hidden;" border="0"></p></aside><aside id="block-22" class="widget widget_block"><p><br>
<!-- JEA Horizontal --><br>
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3116476424964638" data-ad-slot="5653789960" data-ad-format="auto" data-full-width-responsive="true"></ins><br>
</p></aside><aside id="block-24" class="widget widget_block"><p><br>
<!-- JEA Vertical Ads --><br>
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3116476424964638" data-ad-slot="4386656352" data-ad-format="auto" data-full-width-responsive="true"></ins><br>
</p></aside></div><!-- #secondary -->
			</div><!-- .container -->
		</div><!-- #content -->

		<div class="footer-ads"><div class="container">
<!-- JEA Horizontal -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-3116476424964638"
     data-ad-slot="5653789960"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
</div></div>
		<footer id="colophon" class="site-footer" itemscope="itemscope" itemtype="http://schema.org/WPFooter">
			
<div id="tertiary" class="sidebar-footer">
	<div class="container">

		<div class="footer-column footer-column-1">
			<aside id="block-55" class="widget widget_block">
      <style>
        .libutton {
          display: flex;
          flex-direction: column;
          justify-content: center;
          padding: 7px;
          text-align: center;
          outline: none;
          text-decoration: none !important;
          color: #ffffff !important;
          width: 200px;
          height: 32px;
          border-radius: 16px;
          background-color: #0A66C2;
          font-family: "SF Pro Text", Helvetica, sans-serif;
        }
      </style>
<a class="libutton" href="https://www.linkedin.com/comm/mynetwork/discovery-see-all?usecase=PEOPLE_FOLLOWS&followMember=jameseduardandaya" target="_blank">Follow on LinkedIn</a></aside>		</div>

		<div class="footer-column footer-column-2">
					</div>

		<div class="footer-column footer-column-3">
					</div>

	</div><!-- .container -->
</div><!-- #tertiary -->


			<div class="site-info">
				<div class="container">

											<div id="footer-social" class="social-icons"><a href="https://twitter.com/pir8g33k"><i class="fa fa-twitter"></i></a> <a href="https://web.facebook.com/Pir8g33k"><i class="fa fa-facebook"></i></a> <a href="https://www.linkedin.com/in/jameseduardandaya/"><i class="fa fa-linkedin"></i></a> </div>					
					<p class="copyright">© Copyright 2011 <a href="https://www.jameseduard.com">James Eduard</a></p>
				</div>
			</div><!-- .site-info -->
		</footer><!-- #colophon -->

	</div><!-- .wide-container -->
</div><!-- #page -->

			<!-- Facebook Pixel Code -->
			<noscript>
				<img
					height="1"
					width="1"
					style="display:none"
					alt="fbpx"
					src="https://www.facebook.com/tr?id=2584255611712487&ev=PageView&noscript=1"
				/>
			</noscript>
			<!-- End Facebook Pixel Code -->
						
			
	
	
	
				<link rel='stylesheet' id='wc-blocks-style-css' href='https://c0.wp.com/p/woocommerce/9.1.2/assets/client/blocks/wc-blocks.css' type='text/css' media='all' />


















<script data-jetpack-boost="ignore" type="text/javascript" src="https://c0.wp.com/p/jetpack/13.6/_inc/build/likes/queuehandler.min.js" id="jetpack_likes_queuehandler-js"></script>




	<iframe src='https://widgets.wp.com/likes/master.html?ver=20240716#ver=20240716&n=1' scrolling='no' id='likes-master' name='likes-master' style='display:none;'></iframe>
	<div id='likes-other-gravatars' class='wpl-new-layout' role="dialog" aria-hidden="true" tabindex="-1"><div class="likes-text"><span>%d</span></div><ul class="wpl-avatars sd-like-gravatars"></ul></div>
	
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><script>
  (adsbygoogle = window.adsbygoogle || []).push({
    google_ad_client: "ca-pub-7452936773594057",
    enable_page_level_ads: true
  });
</script><script>window._wca = window._wca || [];</script><script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.jameseduard.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.5.5"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script><script type="text/javascript" id="jetpack_related-posts-js-extra">
/* <![CDATA[ */
var related_posts_js_options = {"post_heading":"h4"};
/* ]]> */
</script><script type="text/javascript" src="https://c0.wp.com/p/jetpack/13.6/_inc/build/related-posts/related-posts.min.js" id="jetpack_related-posts-js"></script><script type="text/javascript" src="https://c0.wp.com/c/6.5.5/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script><script type="text/javascript" src="https://www.jameseduard.com/wp-content/plugins/buymeacoffee/public/js/buy-me-a-coffee-public.js?ver=4.0" id="buy-me-a-coffee-js"></script><script type="text/javascript" src="https://c0.wp.com/p/woocommerce/9.1.2/assets/js/jquery-blockui/jquery.blockUI.min.js" id="jquery-blockui-js" defer="defer" data-wp-strategy="defer"></script><script type="text/javascript" id="wc-add-to-cart-js-extra">
/* <![CDATA[ */
var wc_add_to_cart_params = {"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https:\/\/www.jameseduard.com\/cart\/","is_cart":"","cart_redirect_after_add":"no"};
/* ]]> */
</script><script type="text/javascript" src="https://c0.wp.com/p/woocommerce/9.1.2/assets/js/frontend/add-to-cart.min.js" id="wc-add-to-cart-js" defer="defer" data-wp-strategy="defer"></script><script type="text/javascript" src="https://c0.wp.com/p/woocommerce/9.1.2/assets/js/js-cookie/js.cookie.min.js" id="js-cookie-js" defer="defer" data-wp-strategy="defer"></script><script type="text/javascript" id="woocommerce-js-extra">
/* <![CDATA[ */
var woocommerce_params = {"ajax_url":"\/wp-admin\/admin-ajax.php","wc_ajax_url":"\/?wc-ajax=%%endpoint%%"};
/* ]]> */
</script><script type="text/javascript" src="https://c0.wp.com/p/woocommerce/9.1.2/assets/js/frontend/woocommerce.min.js" id="woocommerce-js" defer="defer" data-wp-strategy="defer"></script><script type="text/javascript" src="https://www.jameseduard.com/wp-content/plugins/wpo365-login/apps/dist/pintra-redirect.js?ver=29.0" id="pintraredirectjs-js" async></script><script type="text/javascript" src="https://stats.wp.com/s-202429.js" id="woocommerce-analytics-js" defer="defer" data-wp-strategy="defer"></script><script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=G-FQBDES5W1M" id="google_gtagjs-js" async></script><script type="text/javascript" id="google_gtagjs-js-after">
/* <![CDATA[ */
window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}
gtag("set","linker",{"domains":["www.jameseduard.com"]});
gtag("js", new Date());
gtag("set", "developer_id.dZTNiMT", true);
gtag("config", "G-FQBDES5W1M");
/* ]]> */
</script><script data-name="BMC-Widget" src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js" data-id="JamesEduard" data-description="Support me on Buy Me a Coffee!" data-message="Thank you for visiting. You can now buy me a coffee!" data-color="#FF813F" data-position="right" data-x_margin="18" data-y_margin="18">
        </script><script  type="text/javascript">
				!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
					n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
					n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
					t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
					document,'script','https://connect.facebook.net/en_US/fbevents.js');
			</script><script  type="text/javascript">

				fbq('init', '2584255611712487', {}, {
    "agent": "woocommerce-9.1.2-3.2.5"
});

				fbq( 'track', 'PageView', {
    "source": "woocommerce",
    "version": "9.1.2",
    "pluginVersion": "3.2.5"
} );

				document.addEventListener( 'DOMContentLoaded', function() {
					// Insert placeholder for events injected when a product is added to the cart through AJAX.
					document.body.insertAdjacentHTML( 'beforeend', '<div class=\"wc-facebook-pixel-event-placeholder\"></div>' );
				}, false );

			</script><script type="text/javascript" async="async" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3116476424964638&host=ca-host-pub-2644536267352236" crossorigin="anonymous"></script><script async src="https://fundingchoicesmessages.google.com/i/pub-3116476424964638?ers=1" nonce="yaDyazIXSqdyiBe9xjq_Qg"></script><script nonce="yaDyazIXSqdyiBe9xjq_Qg">(function() {function signalGooglefcPresent() {if (!window.frames['googlefcPresent']) {if (document.body) {const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe);} else {setTimeout(signalGooglefcPresent, 0);}}}signalGooglefcPresent();})();</script><script>(function(){'use strict';function aa(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}var ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};
function ea(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");}var fa=ea(this);function ha(a,b){if(b)a:{var c=fa;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&ba(c,a,{configurable:!0,writable:!0,value:b})}}
var ia="function"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},l;if("function"==typeof Object.setPrototypeOf)l=Object.setPrototypeOf;else{var m;a:{var ja={a:!0},ka={};try{ka.__proto__=ja;m=ka.a;break a}catch(a){}m=!1}l=m?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var la=l;
function n(a,b){a.prototype=ia(b.prototype);a.prototype.constructor=a;if(la)la(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.A=b.prototype}function ma(){for(var a=Number(this),b=[],c=a;c<arguments.length;c++)b[c-a]=arguments[c];return b}
var na="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(a[e]=d[e])}return a};ha("Object.assign",function(a){return a||na});/*

 Copyright The Closure Library Authors.
 SPDX-License-Identifier: Apache-2.0
*/
var p=this||self;function q(a){return a};var t,u;a:{for(var oa=["CLOSURE_FLAGS"],v=p,x=0;x<oa.length;x++)if(v=v[oa[x]],null==v){u=null;break a}u=v}var pa=u&&u[610401301];t=null!=pa?pa:!1;var z,qa=p.navigator;z=qa?qa.userAgentData||null:null;function A(a){return t?z?z.brands.some(function(b){return(b=b.brand)&&-1!=b.indexOf(a)}):!1:!1}function B(a){var b;a:{if(b=p.navigator)if(b=b.userAgent)break a;b=""}return-1!=b.indexOf(a)};function C(){return t?!!z&&0<z.brands.length:!1}function D(){return C()?A("Chromium"):(B("Chrome")||B("CriOS"))&&!(C()?0:B("Edge"))||B("Silk")};var ra=C()?!1:B("Trident")||B("MSIE");!B("Android")||D();D();B("Safari")&&(D()||(C()?0:B("Coast"))||(C()?0:B("Opera"))||(C()?0:B("Edge"))||(C()?A("Microsoft Edge"):B("Edg/"))||C()&&A("Opera"));var sa={},E=null;var ta="undefined"!==typeof Uint8Array,ua=!ra&&"function"===typeof btoa;var F="function"===typeof Symbol&&"symbol"===typeof Symbol()?Symbol():void 0,G=F?function(a,b){a[F]|=b}:function(a,b){void 0!==a.g?a.g|=b:Object.defineProperties(a,{g:{value:b,configurable:!0,writable:!0,enumerable:!1}})};function va(a){var b=H(a);1!==(b&1)&&(Object.isFrozen(a)&&(a=Array.prototype.slice.call(a)),I(a,b|1))}
var H=F?function(a){return a[F]|0}:function(a){return a.g|0},J=F?function(a){return a[F]}:function(a){return a.g},I=F?function(a,b){a[F]=b}:function(a,b){void 0!==a.g?a.g=b:Object.defineProperties(a,{g:{value:b,configurable:!0,writable:!0,enumerable:!1}})};function wa(){var a=[];G(a,1);return a}function xa(a,b){I(b,(a|0)&-99)}function K(a,b){I(b,(a|34)&-73)}function L(a){a=a>>11&1023;return 0===a?536870912:a};var M={};function N(a){return null!==a&&"object"===typeof a&&!Array.isArray(a)&&a.constructor===Object}var O,ya=[];I(ya,39);O=Object.freeze(ya);var P;function Q(a,b){P=b;a=new a(b);P=void 0;return a}
function R(a,b,c){null==a&&(a=P);P=void 0;if(null==a){var d=96;c?(a=[c],d|=512):a=[];b&&(d=d&-2095105|(b&1023)<<11)}else{if(!Array.isArray(a))throw Error();d=H(a);if(d&64)return a;d|=64;if(c&&(d|=512,c!==a[0]))throw Error();a:{c=a;var e=c.length;if(e){var f=e-1,g=c[f];if(N(g)){d|=256;b=(d>>9&1)-1;e=f-b;1024<=e&&(za(c,b,g),e=1023);d=d&-2095105|(e&1023)<<11;break a}}b&&(g=(d>>9&1)-1,b=Math.max(b,e-g),1024<b&&(za(c,g,{}),d|=256,b=1023),d=d&-2095105|(b&1023)<<11)}}I(a,d);return a}
function za(a,b,c){for(var d=1023+b,e=a.length,f=d;f<e;f++){var g=a[f];null!=g&&g!==c&&(c[f-b]=g)}a.length=d+1;a[d]=c};function Aa(a){switch(typeof a){case "number":return isFinite(a)?a:String(a);case "boolean":return a?1:0;case "object":if(a&&!Array.isArray(a)&&ta&&null!=a&&a instanceof Uint8Array){if(ua){for(var b="",c=0,d=a.length-10240;c<d;)b+=String.fromCharCode.apply(null,a.subarray(c,c+=10240));b+=String.fromCharCode.apply(null,c?a.subarray(c):a);a=btoa(b)}else{void 0===b&&(b=0);if(!E){E={};c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split("");d=["+/=","+/","-_=","-_.","-_"];for(var e=
0;5>e;e++){var f=c.concat(d[e].split(""));sa[e]=f;for(var g=0;g<f.length;g++){var h=f[g];void 0===E[h]&&(E[h]=g)}}}b=sa[b];c=Array(Math.floor(a.length/3));d=b[64]||"";for(e=f=0;f<a.length-2;f+=3){var k=a[f],w=a[f+1];h=a[f+2];g=b[k>>2];k=b[(k&3)<<4|w>>4];w=b[(w&15)<<2|h>>6];h=b[h&63];c[e++]=g+k+w+h}g=0;h=d;switch(a.length-f){case 2:g=a[f+1],h=b[(g&15)<<2]||d;case 1:a=a[f],c[e]=b[a>>2]+b[(a&3)<<4|g>>4]+h+d}a=c.join("")}return a}}return a};function Ba(a,b,c){a=Array.prototype.slice.call(a);var d=a.length,e=b&256?a[d-1]:void 0;d+=e?-1:0;for(b=b&512?1:0;b<d;b++)a[b]=c(a[b]);if(e){b=a[b]={};for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=c(e[f]))}return a}function Da(a,b,c,d,e,f){if(null!=a){if(Array.isArray(a))a=e&&0==a.length&&H(a)&1?void 0:f&&H(a)&2?a:Ea(a,b,c,void 0!==d,e,f);else if(N(a)){var g={},h;for(h in a)Object.prototype.hasOwnProperty.call(a,h)&&(g[h]=Da(a[h],b,c,d,e,f));a=g}else a=b(a,d);return a}}
function Ea(a,b,c,d,e,f){var g=d||c?H(a):0;d=d?!!(g&32):void 0;a=Array.prototype.slice.call(a);for(var h=0;h<a.length;h++)a[h]=Da(a[h],b,c,d,e,f);c&&c(g,a);return a}function Fa(a){return a.s===M?a.toJSON():Aa(a)};function Ga(a,b,c){c=void 0===c?K:c;if(null!=a){if(ta&&a instanceof Uint8Array)return b?a:new Uint8Array(a);if(Array.isArray(a)){var d=H(a);if(d&2)return a;if(b&&!(d&64)&&(d&32||0===d))return I(a,d|34),a;a=Ea(a,Ga,d&4?K:c,!0,!1,!0);b=H(a);b&4&&b&2&&Object.freeze(a);return a}a.s===M&&(b=a.h,c=J(b),a=c&2?a:Q(a.constructor,Ha(b,c,!0)));return a}}function Ha(a,b,c){var d=c||b&2?K:xa,e=!!(b&32);a=Ba(a,b,function(f){return Ga(f,e,d)});G(a,32|(c?2:0));return a};function Ia(a,b){a=a.h;return Ja(a,J(a),b)}function Ja(a,b,c,d){if(-1===c)return null;if(c>=L(b)){if(b&256)return a[a.length-1][c]}else{var e=a.length;if(d&&b&256&&(d=a[e-1][c],null!=d))return d;b=c+((b>>9&1)-1);if(b<e)return a[b]}}function Ka(a,b,c,d,e){var f=L(b);if(c>=f||e){e=b;if(b&256)f=a[a.length-1];else{if(null==d)return;f=a[f+((b>>9&1)-1)]={};e|=256}f[c]=d;e&=-1025;e!==b&&I(a,e)}else a[c+((b>>9&1)-1)]=d,b&256&&(d=a[a.length-1],c in d&&delete d[c]),b&1024&&I(a,b&-1025)}
function La(a,b){var c=Ma;var d=void 0===d?!1:d;var e=a.h;var f=J(e),g=Ja(e,f,b,d);var h=!1;if(null==g||"object"!==typeof g||(h=Array.isArray(g))||g.s!==M)if(h){var k=h=H(g);0===k&&(k|=f&32);k|=f&2;k!==h&&I(g,k);c=new c(g)}else c=void 0;else c=g;c!==g&&null!=c&&Ka(e,f,b,c,d);e=c;if(null==e)return e;a=a.h;f=J(a);f&2||(g=e,c=g.h,h=J(c),g=h&2?Q(g.constructor,Ha(c,h,!1)):g,g!==e&&(e=g,Ka(a,f,b,e,d)));return e}function Na(a,b){a=Ia(a,b);return null==a||"string"===typeof a?a:void 0}
function Oa(a,b){a=Ia(a,b);return null!=a?a:0}function S(a,b){a=Na(a,b);return null!=a?a:""};function T(a,b,c){this.h=R(a,b,c)}T.prototype.toJSON=function(){var a=Ea(this.h,Fa,void 0,void 0,!1,!1);return Pa(this,a,!0)};T.prototype.s=M;T.prototype.toString=function(){return Pa(this,this.h,!1).toString()};
function Pa(a,b,c){var d=a.constructor.v,e=L(J(c?a.h:b)),f=!1;if(d){if(!c){b=Array.prototype.slice.call(b);var g;if(b.length&&N(g=b[b.length-1]))for(f=0;f<d.length;f++)if(d[f]>=e){Object.assign(b[b.length-1]={},g);break}f=!0}e=b;c=!c;g=J(a.h);a=L(g);g=(g>>9&1)-1;for(var h,k,w=0;w<d.length;w++)if(k=d[w],k<a){k+=g;var r=e[k];null==r?e[k]=c?O:wa():c&&r!==O&&va(r)}else h||(r=void 0,e.length&&N(r=e[e.length-1])?h=r:e.push(h={})),r=h[k],null==h[k]?h[k]=c?O:wa():c&&r!==O&&va(r)}d=b.length;if(!d)return b;
var Ca;if(N(h=b[d-1])){a:{var y=h;e={};c=!1;for(var ca in y)Object.prototype.hasOwnProperty.call(y,ca)&&(a=y[ca],Array.isArray(a)&&a!=a&&(c=!0),null!=a?e[ca]=a:c=!0);if(c){for(var rb in e){y=e;break a}y=null}}y!=h&&(Ca=!0);d--}for(;0<d;d--){h=b[d-1];if(null!=h)break;var cb=!0}if(!Ca&&!cb)return b;var da;f?da=b:da=Array.prototype.slice.call(b,0,d);b=da;f&&(b.length=d);y&&b.push(y);return b};function Qa(a){return function(b){if(null==b||""==b)b=new a;else{b=JSON.parse(b);if(!Array.isArray(b))throw Error(void 0);G(b,32);b=Q(a,b)}return b}};function Ra(a){this.h=R(a)}n(Ra,T);var Sa=Qa(Ra);var U;function V(a){this.g=a}V.prototype.toString=function(){return this.g+""};var Ta={};function Ua(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)};function Va(a,b){b=String(b);"application/xhtml+xml"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)}function Wa(a){this.g=a||p.document||document}Wa.prototype.appendChild=function(a,b){a.appendChild(b)};/*

 SPDX-License-Identifier: Apache-2.0
*/
function Xa(a,b){a.src=b instanceof V&&b.constructor===V?b.g:"type_error:TrustedResourceUrl";var c,d;(c=(b=null==(d=(c=(a.ownerDocument&&a.ownerDocument.defaultView||window).document).querySelector)?void 0:d.call(c,"script[nonce]"))?b.nonce||b.getAttribute("nonce")||"":"")&&a.setAttribute("nonce",c)};function Ya(a){a=void 0===a?document:a;return a.createElement("script")};function Za(a,b,c,d,e,f){try{var g=a.g,h=Ya(g);h.async=!0;Xa(h,b);g.head.appendChild(h);h.addEventListener("load",function(){e();d&&g.head.removeChild(h)});h.addEventListener("error",function(){0<c?Za(a,b,c-1,d,e,f):(d&&g.head.removeChild(h),f())})}catch(k){f()}};var $a=p.atob("aHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2ljb25zL21hdGVyaWFsL3N5c3RlbS8xeC93YXJuaW5nX2FtYmVyXzI0ZHAucG5n"),ab=p.atob("WW91IGFyZSBzZWVpbmcgdGhpcyBtZXNzYWdlIGJlY2F1c2UgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlIGlzIGludGVyZmVyaW5nIHdpdGggdGhpcyBwYWdlLg=="),bb=p.atob("RGlzYWJsZSBhbnkgYWQgb3Igc2NyaXB0IGJsb2NraW5nIHNvZnR3YXJlLCB0aGVuIHJlbG9hZCB0aGlzIHBhZ2Uu");function db(a,b,c){this.i=a;this.l=new Wa(this.i);this.g=null;this.j=[];this.m=!1;this.u=b;this.o=c}
function eb(a){if(a.i.body&&!a.m){var b=function(){fb(a);p.setTimeout(function(){return gb(a,3)},50)};Za(a.l,a.u,2,!0,function(){p[a.o]||b()},b);a.m=!0}}
function fb(a){for(var b=W(1,5),c=0;c<b;c++){var d=X(a);a.i.body.appendChild(d);a.j.push(d)}b=X(a);b.style.bottom="0";b.style.left="0";b.style.position="fixed";b.style.width=W(100,110).toString()+"%";b.style.zIndex=W(2147483544,2147483644).toString();b.style["background-color"]=hb(249,259,242,252,219,229);b.style["box-shadow"]="0 0 12px #888";b.style.color=hb(0,10,0,10,0,10);b.style.display="flex";b.style["justify-content"]="center";b.style["font-family"]="Roboto, Arial";c=X(a);c.style.width=W(80,
85).toString()+"%";c.style.maxWidth=W(750,775).toString()+"px";c.style.margin="24px";c.style.display="flex";c.style["align-items"]="flex-start";c.style["justify-content"]="center";d=Va(a.l.g,"IMG");d.className=Ua();d.src=$a;d.alt="Warning icon";d.style.height="24px";d.style.width="24px";d.style["padding-right"]="16px";var e=X(a),f=X(a);f.style["font-weight"]="bold";f.textContent=ab;var g=X(a);g.textContent=bb;Y(a,e,f);Y(a,e,g);Y(a,c,d);Y(a,c,e);Y(a,b,c);a.g=b;a.i.body.appendChild(a.g);b=W(1,5);for(c=
0;c<b;c++)d=X(a),a.i.body.appendChild(d),a.j.push(d)}function Y(a,b,c){for(var d=W(1,5),e=0;e<d;e++){var f=X(a);b.appendChild(f)}b.appendChild(c);c=W(1,5);for(d=0;d<c;d++)e=X(a),b.appendChild(e)}function W(a,b){return Math.floor(a+Math.random()*(b-a))}function hb(a,b,c,d,e,f){return"rgb("+W(Math.max(a,0),Math.min(b,255)).toString()+","+W(Math.max(c,0),Math.min(d,255)).toString()+","+W(Math.max(e,0),Math.min(f,255)).toString()+")"}function X(a){a=Va(a.l.g,"DIV");a.className=Ua();return a}
function gb(a,b){0>=b||null!=a.g&&0!=a.g.offsetHeight&&0!=a.g.offsetWidth||(ib(a),fb(a),p.setTimeout(function(){return gb(a,b-1)},50))}
function ib(a){var b=a.j;var c="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];if(c)b=c.call(b);else if("number"==typeof b.length)b={next:aa(b)};else throw Error(String(b)+" is not an iterable or ArrayLike");for(c=b.next();!c.done;c=b.next())(c=c.value)&&c.parentNode&&c.parentNode.removeChild(c);a.j=[];(b=a.g)&&b.parentNode&&b.parentNode.removeChild(b);a.g=null};function jb(a,b,c,d,e){function f(k){document.body?g(document.body):0<k?p.setTimeout(function(){f(k-1)},e):b()}function g(k){k.appendChild(h);p.setTimeout(function(){h?(0!==h.offsetHeight&&0!==h.offsetWidth?b():a(),h.parentNode&&h.parentNode.removeChild(h)):a()},d)}var h=kb(c);f(3)}function kb(a){var b=document.createElement("div");b.className=a;b.style.width="1px";b.style.height="1px";b.style.position="absolute";b.style.left="-10000px";b.style.top="-10000px";b.style.zIndex="-10000";return b};function Ma(a){this.h=R(a)}n(Ma,T);function lb(a){this.h=R(a)}n(lb,T);var mb=Qa(lb);function nb(a){a=Na(a,4)||"";if(void 0===U){var b=null;var c=p.trustedTypes;if(c&&c.createPolicy){try{b=c.createPolicy("goog#html",{createHTML:q,createScript:q,createScriptURL:q})}catch(d){p.console&&p.console.error(d.message)}U=b}else U=b}a=(b=U)?b.createScriptURL(a):a;return new V(a,Ta)};function ob(a,b){this.m=a;this.o=new Wa(a.document);this.g=b;this.j=S(this.g,1);this.u=nb(La(this.g,2));this.i=!1;b=nb(La(this.g,13));this.l=new db(a.document,b,S(this.g,12))}ob.prototype.start=function(){pb(this)};
function pb(a){qb(a);Za(a.o,a.u,3,!1,function(){a:{var b=a.j;var c=p.btoa(b);if(c=p[c]){try{var d=Sa(p.atob(c))}catch(e){b=!1;break a}b=b===Na(d,1)}else b=!1}b?Z(a,S(a.g,14)):(Z(a,S(a.g,8)),eb(a.l))},function(){jb(function(){Z(a,S(a.g,7));eb(a.l)},function(){return Z(a,S(a.g,6))},S(a.g,9),Oa(a.g,10),Oa(a.g,11))})}function Z(a,b){a.i||(a.i=!0,a=new a.m.XMLHttpRequest,a.open("GET",b,!0),a.send())}function qb(a){var b=p.btoa(a.j);a.m[b]&&Z(a,S(a.g,5))};(function(a,b){p[a]=function(){var c=ma.apply(0,arguments);p[a]=function(){};b.apply(null,c)}})("__h82AlnkH6D91__",function(a){"function"===typeof window.atob&&(new ob(window,mb(window.atob(a)))).start()});}).call(this);

window.__h82AlnkH6D91__("WyJwdWItMzExNjQ3NjQyNDk2NDYzOCIsW251bGwsbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9iL3B1Yi0zMTE2NDc2NDI0OTY0NjM4Il0sbnVsbCxudWxsLCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS9lbC9BR1NLV3hXTHY4NUc4WkpVeVNrVW5ZYzZWVGxkdzRBclNmY2hZODJKOFRESzJjQUU2SVhwQWdNSTF5U2l5bEFSZ1Y5WkpEVFE4TU1yWjVqakxSbU16clA5NWQyWWNRXHUwMDNkXHUwMDNkP3RlXHUwMDNkVE9LRU5fRVhQT1NFRCIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFZtb0hSdmd2UzVrREQwT1M2aEhXZEtLS3JUVEdKbnFTREkxN0M0OWw3Wm5QWnAyTEdLXy0xcDYwQW1lNzRBVFkxU0hTTVpxTUZWNjhOYkdjeUtBc3p4bmdcdTAwM2RcdTAwM2Q/YWJcdTAwM2QxXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFZrU1laRkkxN0N0VklnMHNJd1gwT1UzRlI3eXZJb0pxWlhKbEtWVnFERlgzN3gzVm9zUzlMd1RyVDBIUEdDUWJ4T3F3OHljblNHSTBjaWN4NWU4NHZMLUFcdTAwM2RcdTAwM2Q/YWJcdTAwM2QyXHUwMDI2c2JmXHUwMDNkMSIsImh0dHBzOi8vZnVuZGluZ2Nob2ljZXNtZXNzYWdlcy5nb29nbGUuY29tL2VsL0FHU0tXeFVZTGliUDhlc1lKZXpwNzVrT0U3TVhZZTZ0RWZGOFhtVXFsankwdnpqajFva2hGa0NlLUZ1RnhSekJYUkNtTzdTd3JBRGNJaHBwMHAwakVLOEhaWmZDOUFcdTAwM2RcdTAwM2Q/c2JmXHUwMDNkMiIsImRpdi1ncHQtYWQiLDIwLDEwMCwiY0hWaUxUTXhNVFkwTnpZME1qUTVOalEyTXpnXHUwMDNkIixbbnVsbCxudWxsLG51bGwsImh0dHBzOi8vd3d3LmdzdGF0aWMuY29tLzBlbW4vZi9wL3B1Yi0zMTE2NDc2NDI0OTY0NjM4LmpzP3VzcXBcdTAwM2RDQXMiXSwiaHR0cHM6Ly9mdW5kaW5nY2hvaWNlc21lc3NhZ2VzLmdvb2dsZS5jb20vZWwvQUdTS1d4V1UwTDdlWkFleTJ3TEpTMjM3bmV2TGdhSTF4OWM3QW1TUGRSdFRfVklaQ1F6blk2X09ESy1DdTFuZl9rcEtSQVBxbnFIY3p3cTFBdWpTejVQNWpxdThEd1x1MDAzZFx1MDAzZCJd");</script><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3116476424964638"
     crossorigin="anonymous"></script><script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3116476424964638"
     crossorigin="anonymous"></script><script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3116476424964638" crossorigin="anonymous"></script><script><br />
     (adsbygoogle = window.adsbygoogle || []).push({});<br />
</script><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3116476424964638" crossorigin="anonymous"></script><script><br />
     (adsbygoogle = window.adsbygoogle || []).push({});<br />
</script><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3116476424964638"
     crossorigin="anonymous"></script><script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script><script type='text/javascript'>
				const lazyloadRunObserver = () => {
					const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
					const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
						entries.forEach( ( entry ) => {
							if ( entry.isIntersecting ) {
								let lazyloadBackground = entry.target;
								if( lazyloadBackground ) {
									lazyloadBackground.classList.add( 'e-lazyloaded' );
								}
								lazyloadBackgroundObserver.unobserve( entry.target );
							}
						});
					}, { rootMargin: '200px 0px 200px 0px' } );
					lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
						lazyloadBackgroundObserver.observe( lazyloadBackground );
					} );
				};
				const events = [
					'DOMContentLoaded',
					'elementor/lazyload/observe',
				];
				events.forEach( ( event ) => {
					document.addEventListener( event, lazyloadRunObserver );
				} );
			</script><script type="text/javascript">/* <![CDATA[ */ jQuery(document).ready( function() { jQuery.post( "https://www.jameseduard.com/wp-admin/admin-ajax.php", { action : "entry_views", _ajax_nonce : "f7ab979b2f", post_id : 2505 } ); } ); /* ]]> */</script><script type='text/javascript'>
		(function () {
			var c = document.body.className;
			c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
			document.body.className = c;
		})();
	</script><script type="text/javascript">
		window.WPCOM_sharing_counts = {"https:\/\/www.jameseduard.com\/bettercap-a-complete-modular-portable-and-easily-extensible-mitm-framework\/":2505};
	</script><script type="text/javascript" src="https://www.jameseduard.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=5.9.6" id="swv-js"></script><script type="text/javascript" id="contact-form-7-js-extra">
/* <![CDATA[ */
var wpcf7 = {"api":{"root":"https:\/\/www.jameseduard.com\/wp-json\/","namespace":"contact-form-7\/v1"}};
/* ]]> */
</script><script type="text/javascript" src="https://www.jameseduard.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=5.9.6" id="contact-form-7-js"></script><script type="text/javascript" src="https://c0.wp.com/c/6.5.5/wp-includes/js/jquery/ui/core.min.js" id="jquery-ui-core-js"></script><script type="text/javascript" src="https://c0.wp.com/c/6.5.5/wp-includes/js/jquery/ui/accordion.min.js" id="jquery-ui-accordion-js"></script><script type="text/javascript" src="https://c0.wp.com/c/6.5.5/wp-includes/js/jquery/ui/tabs.min.js" id="jquery-ui-tabs-js"></script><script type="text/javascript" src="https://www.jameseduard.com/wp-content/plugins/theme-junkie-shortcodes/assets/js/junkie-shortcodes.js" id="junkie-shortcodes-js-js"></script><script type="text/javascript" src="https://c0.wp.com/p/woocommerce/9.1.2/assets/js/sourcebuster/sourcebuster.min.js" id="sourcebuster-js-js"></script><script type="text/javascript" id="wc-order-attribution-js-extra">
/* <![CDATA[ */
var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https:\/\/www.jameseduard.com\/wp-admin\/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}};
/* ]]> */
</script><script type="text/javascript" src="https://c0.wp.com/p/woocommerce/9.1.2/assets/js/frontend/order-attribution.min.js" id="wc-order-attribution-js"></script><script type="text/javascript" id="wp-statistics-tracker-js-extra">
/* <![CDATA[ */
var WP_Statistics_Tracker_Object = {"hitRequestUrl":"https:\/\/www.jameseduard.com\/wp-json\/wp-statistics\/v2\/hit?wp_statistics_hit_rest=yes¤t_page_type=post¤t_page_id=2505&search_query&page_uri=L2JldHRlcmNhcC1hLWNvbXBsZXRlLW1vZHVsYXItcG9ydGFibGUtYW5kLWVhc2lseS1leHRlbnNpYmxlLW1pdG0tZnJhbWV3b3JrLw=&nonce=f0ba7e7527","keepOnlineRequestUrl":"https:\/\/www.jameseduard.com\/wp-json\/wp-statistics\/v2\/online?wp_statistics_hit_rest=yes¤t_page_type=post¤t_page_id=2505&search_query&page_uri=L2JldHRlcmNhcC1hLWNvbXBsZXRlLW1vZHVsYXItcG9ydGFibGUtYW5kLWVhc2lseS1leHRlbnNpYmxlLW1pdG0tZnJhbWV3b3JrLw=&nonce=f0ba7e7527","isWpConsentApiActive":"","option":{"consentLevel":"disabled","dntEnabled":false,"cacheCompatibility":""}};
/* ]]> */
</script><script type="text/javascript" src="https://www.jameseduard.com/wp-content/plugins/wp-statistics/assets/js/tracker.js?ver=14.8.1" id="wp-statistics-tracker-js"></script><script type="text/javascript" src="https://c0.wp.com/c/6.5.5/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script><script type="text/javascript" src="https://c0.wp.com/c/6.5.5/wp-includes/js/masonry.min.js" id="masonry-js"></script><script type="text/javascript" src="https://www.jameseduard.com/wp-content/themes/truereview2/assets/js/truereview.min.js" id="truereview-scripts-js"></script><script type="text/javascript" src="https://c0.wp.com/c/6.5.5/wp-includes/js/comment-reply.min.js" id="comment-reply-js" async="async" data-wp-strategy="async"></script><script type="text/javascript" src="https://stats.wp.com/e-202429.js" id="jetpack-stats-js" data-wp-strategy="defer"></script><script type="text/javascript" id="jetpack-stats-js-after">
/* <![CDATA[ */
_stq = window._stq || [];
_stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"176721193\",\"post\":\"2505\",\"tz\":\"8\",\"srv\":\"www.jameseduard.com\",\"j\":\"1:13.6\"}") ]);
_stq.push([ "clickTrackerInit", "176721193", "2505" ]);
/* ]]> */
</script><script defer type="text/javascript" src="https://www.jameseduard.com/wp-content/plugins/akismet/_inc/akismet-frontend.js?ver=1720648045" id="akismet-frontend-js"></script><script type="text/javascript" id="sharing-js-js-extra">
/* <![CDATA[ */
var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"};
/* ]]> */
</script><script type="text/javascript" src="https://c0.wp.com/p/jetpack/13.6/_inc/build/sharedaddy/sharing.min.js" id="sharing-js-js"></script><script type="text/javascript" id="sharing-js-js-after">
/* <![CDATA[ */
var windowOpen;
			( function () {
				function matches( el, sel ) {
					return !! (
						el.matches && el.matches( sel ) ||
						el.msMatchesSelector && el.msMatchesSelector( sel )
					);
				}

				document.body.addEventListener( 'click', function ( event ) {
					if ( ! event.target ) {
						return;
					}

					var el;
					if ( matches( event.target, 'a.share-facebook' ) ) {
						el = event.target;
					} else if ( event.target.parentNode && matches( event.target.parentNode, 'a.share-facebook' ) ) {
						el = event.target.parentNode;
					}

					if ( el ) {
						event.preventDefault();

						// If there's another sharing window open, close it.
						if ( typeof windowOpen !== 'undefined' ) {
							windowOpen.close();
						}
						windowOpen = window.open( el.getAttribute( 'href' ), 'wpcomfacebook', 'menubar=1,resizable=1,width=600,height=400' );
						return false;
					}
				} );
			} )();
var windowOpen;
			( function () {
				function matches( el, sel ) {
					return !! (
						el.matches && el.matches( sel ) ||
						el.msMatchesSelector && el.msMatchesSelector( sel )
					);
				}

				document.body.addEventListener( 'click', function ( event ) {
					if ( ! event.target ) {
						return;
					}

					var el;
					if ( matches( event.target, 'a.share-x' ) ) {
						el = event.target;
					} else if ( event.target.parentNode && matches( event.target.parentNode, 'a.share-x' ) ) {
						el = event.target.parentNode;
					}

					if ( el ) {
						event.preventDefault();

						// If there's another sharing window open, close it.
						if ( typeof windowOpen !== 'undefined' ) {
							windowOpen.close();
						}
						windowOpen = window.open( el.getAttribute( 'href' ), 'wpcomx', 'menubar=1,resizable=1,width=600,height=350' );
						return false;
					}
				} );
			} )();
/* ]]> */
</script></body>
</html>
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>